]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master'
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>
Thu, 15 May 2014 14:36:02 +0000 (16:36 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Thu, 15 May 2014 14:36:02 +0000 (16:36 +0200)
470 files changed:
CREDITS
MAKEALL
Makefile
README
arch/arm/cpu/Makefile
arch/arm/cpu/arm1136/start.S
arch/arm/cpu/arm1176/start.S
arch/arm/cpu/arm720t/start.S
arch/arm/cpu/arm920t/ep93xx/u-boot.lds
arch/arm/cpu/arm920t/start.S
arch/arm/cpu/arm926ejs/mxs/start.S
arch/arm/cpu/arm926ejs/spear/start.S
arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
arch/arm/cpu/arm926ejs/start.S
arch/arm/cpu/arm946es/cpu.c
arch/arm/cpu/arm946es/start.S
arch/arm/cpu/arm_intcm/start.S
arch/arm/cpu/armv7/socfpga/lowlevel_init.S
arch/arm/cpu/armv7/start.S
arch/arm/cpu/armv7/zynq/u-boot.lds
arch/arm/cpu/pxa/cpuinfo.c
arch/arm/cpu/pxa/start.S
arch/arm/cpu/sa1100/cpu.c
arch/arm/cpu/sa1100/start.S
arch/arm/cpu/tegra20-common/crypto.c
arch/arm/cpu/u-boot-spl.lds
arch/arm/cpu/u-boot.lds
arch/arm/include/asm/arch-rmobile/ehci-rmobile.h [new file with mode: 0644]
arch/arm/lib/Makefile
arch/arm/lib/cache.c
arch/arm/lib/vectors.S [new file with mode: 0644]
arch/blackfin/cpu/gpio.c
arch/blackfin/include/asm/gpio.h
arch/mips/config.mk
arch/mips/cpu/mips32/incaip/Makefile [deleted file]
arch/mips/cpu/mips32/incaip/asc_serial.c [deleted file]
arch/mips/cpu/mips32/incaip/asc_serial.h [deleted file]
arch/mips/cpu/mips32/incaip/config.mk [deleted file]
arch/mips/cpu/mips32/incaip/incaip_clock.c [deleted file]
arch/mips/cpu/mips32/incaip/incaip_wdt.S [deleted file]
arch/mips/cpu/mips32/interrupts.c
arch/mips/cpu/mips64/interrupts.c
arch/mips/cpu/u-boot.lds
arch/mips/cpu/xburst/Makefile [deleted file]
arch/mips/cpu/xburst/config.mk [deleted file]
arch/mips/cpu/xburst/cpu.c [deleted file]
arch/mips/cpu/xburst/jz4740.c [deleted file]
arch/mips/cpu/xburst/jz_serial.c [deleted file]
arch/mips/cpu/xburst/start.S [deleted file]
arch/mips/cpu/xburst/timer.c [deleted file]
arch/mips/include/asm/inca-ip.h [deleted file]
arch/mips/include/asm/u-boot-mips.h
arch/mips/include/asm/u-boot.h
arch/mips/lib/Makefile
arch/mips/lib/board.c
arch/mips/lib/io.c [new file with mode: 0644]
arch/powerpc/cpu/mpc824x/cpu_init.c
arch/powerpc/cpu/mpc83xx/cpu.c
arch/powerpc/cpu/mpc83xx/fdt.c
arch/powerpc/cpu/mpc85xx/Makefile
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/cpu/mpc85xx/cpu.c
arch/powerpc/cpu/mpc85xx/cpu_init.c
arch/powerpc/cpu/mpc85xx/cpu_init_early.c
arch/powerpc/cpu/mpc85xx/fdt.c
arch/powerpc/cpu/mpc85xx/fixed_ivor.S [deleted file]
arch/powerpc/cpu/mpc85xx/qe_io.c
arch/powerpc/cpu/mpc85xx/release.S
arch/powerpc/cpu/mpc85xx/speed.c
arch/powerpc/cpu/mpc85xx/start.S
arch/powerpc/cpu/mpc85xx/t1040_ids.c
arch/powerpc/cpu/mpc85xx/tlb.c
arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
arch/powerpc/cpu/mpc85xx/u-boot.lds
arch/powerpc/cpu/mpc8xx/cpu_init.c
arch/powerpc/cpu/mpc8xx/scc.c
arch/powerpc/cpu/mpc8xx/serial.c
arch/powerpc/cpu/mpc8xx/wlkbd.c [deleted file]
arch/powerpc/cpu/mpc8xxx/law.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_secure_boot.h
arch/powerpc/include/asm/immap_512x.h
arch/powerpc/include/asm/immap_85xx.h
arch/powerpc/include/asm/mmu.h
arch/powerpc/include/asm/u-boot.h
arch/powerpc/lib/board.c
arch/sh/cpu/sh2/cache.c [deleted file]
arch/sparc/cpu/leon2/config.mk
arch/sparc/cpu/leon3/config.mk
board/Marvell/common/ecctest.c [deleted file]
board/RPXClassic/Makefile [deleted file]
board/RPXClassic/README [deleted file]
board/RPXClassic/RPXClassic.c [deleted file]
board/RPXClassic/eccx.c [deleted file]
board/RPXClassic/flash.c [deleted file]
board/RPXClassic/u-boot.lds [deleted file]
board/RPXClassic/u-boot.lds.debug [deleted file]
board/RPXlite/Makefile [deleted file]
board/RPXlite/README [deleted file]
board/RPXlite/README.PlanetCore [deleted file]
board/RPXlite/RPXlite.c [deleted file]
board/RPXlite/flash.c [deleted file]
board/RPXlite/u-boot.lds [deleted file]
board/RPXlite/u-boot.lds.debug [deleted file]
board/altera/common/AMDLV065D.c [deleted file]
board/altera/common/flash.c [deleted file]
board/broadcom/bcm28155_ap/Makefile
board/compulab/cm_t335/Makefile
board/compulab/cm_t335/u-boot.lds
board/dave/PPChameleonEVB/fpgadata.c [deleted file]
board/dave/common/fpga.c [deleted file]
board/dave/common/pci.c [deleted file]
board/esd/adciop/Makefile [deleted file]
board/esd/adciop/adciop.c [deleted file]
board/esd/adciop/adciop.h [deleted file]
board/esd/adciop/flash.c [deleted file]
board/esd/dasa_sim/Makefile [deleted file]
board/esd/dasa_sim/cmd_dasa_sim.c [deleted file]
board/esd/dasa_sim/dasa_sim.c [deleted file]
board/esd/dasa_sim/dasa_sim.h [deleted file]
board/esd/dasa_sim/eeprom.c [deleted file]
board/esd/dasa_sim/flash.c [deleted file]
board/esd/dasa_sim/fpgadata.c [deleted file]
board/esd/dasa_sim/u-boot.lds [deleted file]
board/esd/pmc440/pmc440.c
board/evb64260/ecctest.c [deleted file]
board/fads/fads.c
board/fads/fads.h
board/fads/lamp.c
board/fads/pcmcia.c
board/freescale/b4860qds/Makefile
board/freescale/b4860qds/b4_pbi.cfg
board/freescale/b4860qds/ddr.c
board/freescale/b4860qds/spl.c [new file with mode: 0644]
board/freescale/b4860qds/tlb.c
board/freescale/mx31ads/u-boot.lds
board/freescale/qemu-ppce500/Makefile [moved from board/mousse/Makefile with 63% similarity]
board/freescale/qemu-ppce500/qemu-ppce500.c [new file with mode: 0644]
board/freescale/t1040qds/ddr.c
board/freescale/t1040qds/ddr.h
board/freescale/t1040qds/t1040qds.c
board/freescale/t104xrdb/Makefile
board/freescale/t104xrdb/README
board/freescale/t104xrdb/cpld.c [new file with mode: 0644]
board/freescale/t104xrdb/cpld.h [new file with mode: 0644]
board/freescale/t104xrdb/ddr.c
board/freescale/t104xrdb/eth.c
board/freescale/t104xrdb/spl.c [new file with mode: 0644]
board/freescale/t104xrdb/t1040_rcw.cfg [new file with mode: 0644]
board/freescale/t104xrdb/t1042_rcw.cfg [new file with mode: 0644]
board/freescale/t104xrdb/t104x_pbi.cfg [new file with mode: 0644]
board/freescale/t104xrdb/t104xrdb.c
board/freescale/t104xrdb/tlb.c
board/freescale/t208xqds/Makefile
board/freescale/t208xqds/ddr.c
board/freescale/t208xqds/spl.c [new file with mode: 0644]
board/freescale/t208xqds/tlb.c
board/freescale/t208xrdb/Makefile
board/freescale/t208xrdb/README
board/freescale/t208xrdb/cpld.h
board/freescale/t208xrdb/ddr.c
board/freescale/t208xrdb/spl.c [new file with mode: 0644]
board/freescale/t208xrdb/t208xrdb.c
board/freescale/t208xrdb/tlb.c
board/freescale/t4qds/Makefile
board/freescale/t4qds/ddr.c
board/freescale/t4qds/spl.c [new file with mode: 0644]
board/freescale/t4qds/t4_pbi.cfg
board/freescale/t4qds/t4_rcw.cfg
board/freescale/t4qds/tlb.c
board/genietv/Makefile [deleted file]
board/genietv/flash.c [deleted file]
board/genietv/genietv.c [deleted file]
board/genietv/u-boot.lds [deleted file]
board/genietv/u-boot.lds.debug [deleted file]
board/hidden_dragon/early_init.S [deleted file]
board/ids/ids8247/Makefile [moved from board/ids8247/Makefile with 100% similarity]
board/ids/ids8247/ids8247.c [moved from board/ids8247/ids8247.c with 100% similarity]
board/ids/ids8313/Makefile [new file with mode: 0644]
board/ids/ids8313/ids8313.c [new file with mode: 0644]
board/incaip/Makefile [deleted file]
board/incaip/README [deleted file]
board/incaip/config.mk [deleted file]
board/incaip/flash.c [deleted file]
board/incaip/incaip.c [deleted file]
board/incaip/lowlevel_init.S [deleted file]
board/lubbock/Makefile [deleted file]
board/lubbock/flash.c [deleted file]
board/lubbock/lubbock.c [deleted file]
board/mbx8xx/Makefile [deleted file]
board/mbx8xx/README [deleted file]
board/mbx8xx/csr.h [deleted file]
board/mbx8xx/dimm.h [deleted file]
board/mbx8xx/flash.c [deleted file]
board/mbx8xx/mbx8xx.c [deleted file]
board/mbx8xx/pcmcia.c [deleted file]
board/mbx8xx/u-boot.lds [deleted file]
board/mbx8xx/u-boot.lds.debug [deleted file]
board/mbx8xx/vpd.c [deleted file]
board/mbx8xx/vpd.h [deleted file]
board/mousse/README [deleted file]
board/mousse/flash.c [deleted file]
board/mousse/flash.h [deleted file]
board/mousse/m48t59y.c [deleted file]
board/mousse/m48t59y.h [deleted file]
board/mousse/mousse.c [deleted file]
board/mousse/mousse.h [deleted file]
board/mousse/pci.c [deleted file]
board/mousse/u-boot.lds [deleted file]
board/mousse/u-boot.lds.ram [deleted file]
board/mousse/u-boot.lds.rom [deleted file]
board/nx823/Makefile [deleted file]
board/nx823/flash.c [deleted file]
board/nx823/nx823.c [deleted file]
board/nx823/u-boot.lds [deleted file]
board/nx823/u-boot.lds.debug [deleted file]
board/ppmc8260/strataflash.c [deleted file]
board/prodrive/common/flash.c [deleted file]
board/prodrive/common/fpga.c [deleted file]
board/rpxsuper/Makefile [deleted file]
board/rpxsuper/flash.c [deleted file]
board/rpxsuper/mii_phy.c [deleted file]
board/rpxsuper/readme [deleted file]
board/rpxsuper/rpxsuper.c [deleted file]
board/rpxsuper/rpxsuper.h [deleted file]
board/rsdproto/Makefile [deleted file]
board/rsdproto/flash.c [deleted file]
board/rsdproto/flash_asm.S [deleted file]
board/rsdproto/rsdproto.c [deleted file]
board/rsdproto/u-boot.lds [deleted file]
board/samsung/common/ums.c
board/samsung/goni/mem_setup.S [deleted file]
board/samsung/origen/origen.c
board/samsung/smdkc100/mem_setup.S [deleted file]
board/samsung/trats/trats.c
board/samsung/trats2/trats2.c
board/samsung/universal_c210/universal.c
board/sandpoint/early_init.S [deleted file]
board/ti/am335x/u-boot.lds
boards.cfg
common/Makefile
common/board_f.c
common/board_r.c
common/cmd_aes.c [new file with mode: 0644]
common/cmd_bootm.c
common/cmd_dfu.c
common/cmd_fdos.c [deleted file]
common/cmd_fdt.c
common/cmd_gpio.c
common/cmd_thordown.c
common/cmd_usb_mass_storage.c
common/ddr_spd.c
common/env_common.c
common/env_dataflash.c
common/env_eeprom.c
common/env_fat.c
common/env_flash.c
common/env_mmc.c
common/env_nand.c
common/env_nvram.c
common/env_onenand.c
common/env_sf.c
common/env_ubi.c
common/fdt_support.c
common/hash.c
common/image-fit.c
common/image-sig.c
common/main.c
common/usb_kbd.c
doc/DocBook/.gitignore
doc/DocBook/Makefile
doc/README.b4860qds
doc/README.console
doc/README.generic-board [new file with mode: 0644]
doc/README.power-framework [new file with mode: 0644]
doc/README.scrapyard
doc/README.t4240qds
doc/README.video
doc/uImage.FIT/signature.txt
drivers/ddr/fsl/Makefile
drivers/ddr/fsl/ctrl_regs.c
drivers/ddr/fsl/ddr4_dimm_params.c [new file with mode: 0644]
drivers/ddr/fsl/fsl_ddr_gen4.c [new file with mode: 0644]
drivers/ddr/fsl/interactive.c
drivers/ddr/fsl/lc_common_dimm_params.c
drivers/ddr/fsl/main.c
drivers/ddr/fsl/mpc85xx_ddr_gen3.c
drivers/ddr/fsl/options.c
drivers/ddr/fsl/util.c
drivers/dfu/dfu.c
drivers/dfu/dfu_mmc.c
drivers/i2c/fsl_i2c.c
drivers/i2c/mxc_i2c.c
drivers/misc/fsl_ifc.c
drivers/mmc/fsl_esdhc_spl.c
drivers/mtd/nand/diskonchip.c [deleted file]
drivers/mtd/nand/fsl_ifc_spl.c
drivers/mtd/spi/fsl_espi_spl.c
drivers/net/e1000.c
drivers/net/fm/fm.c
drivers/net/fm/memac_phy.c
drivers/net/inca-ip_sw.c [deleted file]
drivers/net/lan91c96.h
drivers/net/pcnet.c
drivers/net/phy/atheros.c
drivers/net/phy/vitesse.c
drivers/net/zynq_gem.c
drivers/pcmcia/mpc8xx_pcmcia.c
drivers/pcmcia/rpx_pcmcia.c
drivers/qe/qe.c
drivers/qe/qe.h
drivers/serial/serial.c
drivers/serial/serial_zynq.c
drivers/usb/gadget/Makefile
drivers/usb/gadget/ci_udc.c
drivers/usb/gadget/ci_udc.h
drivers/usb/gadget/f_dfu.c
drivers/usb/gadget/f_mass_storage.c
drivers/usb/gadget/f_thor.c
drivers/usb/gadget/g_dnl.c
drivers/usb/gadget/storage_common.c
drivers/usb/gadget/usbstring.c
drivers/usb/host/Makefile
drivers/usb/host/ehci-exynos.c
drivers/usb/host/ehci-fsl.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-rmobile.c [new file with mode: 0644]
drivers/usb/host/xhci-exynos5.c
drivers/usb/musb-new/musb_uboot.c
examples/standalone/x86-testapp.c [deleted file]
include/aes.h
include/asm-generic/global_data.h
include/asm-generic/u-boot.h
include/common.h
include/common_timing_params.h
include/commproc.h
include/configs/ADS860.h [deleted file]
include/configs/B4860QDS.h
include/configs/BSC9131RDB.h
include/configs/BSC9132QDS.h
include/configs/C29XPCIE.h
include/configs/EVB64260.h [deleted file]
include/configs/FADS823.h [deleted file]
include/configs/FADS850SAR.h [deleted file]
include/configs/FADS860T.h [deleted file]
include/configs/GENIETV.h [deleted file]
include/configs/MBX.h [deleted file]
include/configs/MBX860T.h [deleted file]
include/configs/MOUSSE.h [deleted file]
include/configs/MPC8536DS.h
include/configs/MPC8569MDS.h
include/configs/NX823.h [deleted file]
include/configs/P1010RDB.h
include/configs/P1022DS.h
include/configs/P1023RDB.h
include/configs/P1023RDS.h
include/configs/P1_P2_RDB.h
include/configs/P2020DS.h
include/configs/P2041RDB.h
include/configs/RPXClassic.h [deleted file]
include/configs/RPXlite.h [deleted file]
include/configs/RPXsuper.h [deleted file]
include/configs/T1040QDS.h
include/configs/T1040RDB.h [deleted file]
include/configs/T104xRDB.h [moved from include/configs/T1042RDB_PI.h with 78% similarity]
include/configs/T208xQDS.h
include/configs/T208xRDB.h
include/configs/T4240EMU.h
include/configs/T4240QDS.h
include/configs/am335x_evm.h
include/configs/axs101.h
include/configs/corenet_ds.h
include/configs/exynos4-dt.h
include/configs/gr_cpci_ax2000.h
include/configs/gr_ep2s60.h
include/configs/gr_xc3s_1500.h
include/configs/grsim.h
include/configs/grsim_leon2.h
include/configs/ids8313.h [new file with mode: 0644]
include/configs/incaip.h [deleted file]
include/configs/km/km8309-common.h
include/configs/km/kmp204x-common.h
include/configs/lubbock.h [deleted file]
include/configs/malta.h
include/configs/microblaze-generic.h
include/configs/p1_p2_rdb_pc.h
include/configs/p1_twr.h
include/configs/qemu-ppce500.h [new file with mode: 0644]
include/configs/rsdproto.h [deleted file]
include/configs/t4qds.h
include/configs/trats.h
include/configs/trats2.h
include/ddr_spd.h
include/dfu.h
include/e500.h
include/environment.h
include/fdc.h [deleted file]
include/fdt_support.h
include/fsl_ddr.h
include/fsl_ddr_dimm_params.h
include/fsl_ddr_sdram.h
include/fsl_ddrc_version.h [new file with mode: 0644]
include/fsl_esdhc.h
include/fsl_ifc.h
include/fsl_immap.h
include/fsl_usb.h
include/g_dnl.h
include/hash.h
include/image.h
include/linker_lists.h
include/linux/mtd/blktrans.h [deleted file]
include/linux/mtd/nftl-user.h [deleted file]
include/linux/mtd/nftl.h [deleted file]
include/mmc.h
include/netdev.h
include/part.h
include/pcmcia.h
include/rsa-checksum.h [new file with mode: 0644]
include/rsa.h
include/spi_flash.h
include/thor.h
include/usb.h
include/usb/ehci-fsl.h
include/usb_mass_storage.h
lib/aes.c
lib/fdtdec.c
lib/rsa/Makefile
lib/rsa/rsa-checksum.c [new file with mode: 0644]
lib/rsa/rsa-sign.c
lib/rsa/rsa-verify.c
lib/sha256.c
nand_spl/board/freescale/mpc8536ds/Makefile
nand_spl/board/freescale/mpc8569mds/Makefile
nand_spl/board/freescale/mpc8572ds/Makefile
nand_spl/board/freescale/p1023rds/Makefile
nand_spl/board/freescale/p1_p2_rdb/Makefile
post/cpu/mpc8xx/ether.c
post/cpu/mpc8xx/uart.c
scripts/Kbuild.include
scripts/Makefile
scripts/Makefile.build
scripts/Makefile.lib
scripts/ld-version.sh [new file with mode: 0755]
scripts/objdiff [new file with mode: 0755]
test/vboot/sign-configs-sha1.its [moved from test/vboot/sign-configs.its with 100% similarity]
test/vboot/sign-configs-sha256.its [new file with mode: 0644]
test/vboot/sign-images-sha1.its [moved from test/vboot/sign-images.its with 100% similarity]
test/vboot/sign-images-sha256.its [new file with mode: 0644]
test/vboot/vboot_test.sh
tools/.gitignore
tools/Makefile
tools/buildman/buildman.py
tools/buildman/control.py
tools/env/Makefile
tools/env/fw_env.c
tools/env/fw_env_main.c
tools/fdt_host.h
tools/fdtdec.c [new file with mode: 0644]
tools/fit_check_sign.c [new file with mode: 0644]
tools/fit_common.c [new file with mode: 0644]
tools/fit_common.h [new file with mode: 0644]
tools/fit_image.c
tools/fit_info.c [new file with mode: 0644]
tools/image-host.c
tools/rsa-checksum.c [new file with mode: 0644]
tools/rsa-verify.c [new file with mode: 0644]
tools/sha256.c [new file with mode: 0644]

diff --git a/CREDITS b/CREDITS
index 52f289e06abce8099e63e5f12742ff3e917f74bd..3e5fb7baabb25ac5aaa6f0cd3ec1f96f876757ab 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -120,10 +120,6 @@ N: Dan A. Dickey
 E: ddickey@charter.net
 D: FADS Support
 
-N: James F. Dougherty
-E: jfd@GigabitNetworks.COM
-D: Port to the MOUSSE board
-
 N: Mike Dunn
 E: mikedunn@newsguy.com
 D: Palmtreo680 board, docg4 nand flash driver
diff --git a/MAKEALL b/MAKEALL
index 705a0bb5e1a2f2c20c325e7b67452f5e3ab282a5..020e65fdc8fc5432624b3ee6449d56a6ac36cb07 100755 (executable)
--- a/MAKEALL
+++ b/MAKEALL
@@ -418,50 +418,8 @@ LIST_arm="$(targets_by_arch arm |          \
 ## MIPS Systems                (default = big endian)
 #########################################################################
 
-LIST_mips4kc="         \
-       incaip          \
-       incaip_100MHz   \
-       incaip_133MHz   \
-       incaip_150MHz   \
-       qemu_mips       \
-       vct_platinum    \
-       vct_platinum_small      \
-       vct_platinum_onenand    \
-       vct_platinum_onenand_small      \
-       vct_platinumavc \
-       vct_platinumavc_small   \
-       vct_platinumavc_onenand \
-       vct_platinumavc_onenand_small   \
-       vct_premium     \
-       vct_premium_small       \
-       vct_premium_onenand     \
-       vct_premium_onenand_small       \
-"
-
-LIST_au1xx0="          \
-       dbau1000        \
-       dbau1100        \
-       dbau1500        \
-       dbau1550        \
-"
-
-LIST_mips="            \
-       ${LIST_mips4kc} \
-       ${LIST_mips5kc} \
-       ${LIST_au1xx0}  \
-"
+LIST_mips="$(targets_by_arch mips)"
 
-#########################################################################
-## MIPS Systems                (little endian)
-#########################################################################
-
-LIST_au1xx0_el="       \
-       dbau1550_el     \
-       pb1000          \
-"
-LIST_mips_el="                 \
-       ${LIST_au1xx0_el}       \
-"
 #########################################################################
 ## OpenRISC Systems
 #########################################################################
index 5b35496e2783bb8e78e492a59e547f216c914236..840c39b43b882ad6e7432c9a1940efea87adb159 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -127,7 +127,7 @@ saved-output := $(KBUILD_OUTPUT)
 KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
                                                                && /bin/pwd)
 $(if $(KBUILD_OUTPUT),, \
-     $(error output directory "$(saved-output)" does not exist))
+     $(error failed to create output directory "$(saved-output)"))
 
 PHONY += $(MAKECMDGOALS) sub-make
 
@@ -205,7 +205,14 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
          else echo sh; fi ; fi)
 
 HOSTCC       = gcc
+HOSTCXX      = g++
 HOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+HOSTCXXFLAGS = -O2
+
+ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
+HOSTCFLAGS  += -Wno-unused-value -Wno-unused-parameter \
+               -Wno-missing-field-initializers -fno-delete-null-pointer-checks
+endif
 
 ifeq ($(HOSTOS),cygwin)
 HOSTCFLAGS     += -ansi
@@ -301,12 +308,26 @@ 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
 
+ifneq ($(CC),)
+ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang version"), 1)
+COMPILER := clang
+else
+COMPILER := gcc
+endif
+export COMPILER
+endif
 
 # Look for make include files relative to root of kernel src
 MAKEFLAGS += --include-dir=$(srctree)
@@ -368,8 +389,9 @@ export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve
 
 # Files to ignore in find ... statements
 
-RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \
-                  -o -name .pc -o -name .hg -o -name .git \) -prune -o
+export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o    \
+                         -name CVS -o -name .pc -o -name .hg -o -name .git \) \
+                         -prune -o
 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
                         --exclude CVS --exclude .pc --exclude .hg --exclude .git
 
@@ -523,6 +545,20 @@ endif
 
 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
 
+ifeq ($(COMPILER),clang)
+KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
+KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,)
+KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
+KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
+KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
+# Quiet clang warning: comparison of unsigned expression < 0 is always false
+KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
+# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
+# source of a reference will be _MergedGlobals and not on of the whitelisted names.
+# See modpost pattern 2
+KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
+endif
+
 KBUILD_CFLAGS  += -g
 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
 # option to the assembler.
@@ -548,6 +584,11 @@ endif
 
 export CONFIG_SYS_TEXT_BASE
 
+# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
+KBUILD_CPPFLAGS += $(KCPPFLAGS)
+KBUILD_AFLAGS += $(KAFLAGS)
+KBUILD_CFLAGS += $(KCFLAGS)
+
 # Use UBOOTINCLUDE when you must reference the include/ directory.
 # Needed to be compatible with the O= option
 UBOOTINCLUDE    := \
@@ -699,7 +740,11 @@ ALL-y += u-boot.srec u-boot.bin System.map
 
 ALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin
 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
+ifeq ($(CONFIG_SPL_FSL_PBL),y)
+ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
+else
 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
+endif
 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
@@ -894,6 +939,21 @@ endif
 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
        $(call if_changed,cat)
 
+#Add a target to create boot binary having SPL binary in PBI format
+#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
+
+spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
+       $(call if_changed,mkimage)
+
+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
+       $(call if_changed,pad_cat)
+
 # PPC4xx needs the SPL at the end of the image, since the reset vector
 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
 # and need to introduce a new build target with the full blown U-Boot
@@ -1178,7 +1238,8 @@ CLOBBER_DIRS  += $(patsubst %,spl/%, $(filter-out Makefile, \
 CLOBBER_FILES += u-boot* MLO* SPL System.map nand_spl/u-boot*
 
 # Directories & files removed with 'make mrproper'
-MRPROPER_DIRS  += include/config include/generated
+MRPROPER_DIRS  += include/config include/generated          \
+                  .tmp_objdiff
 MRPROPER_FILES += .config .config.old \
                  tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
                  include/config.h include/config.mk
@@ -1244,8 +1305,8 @@ distclean: mrproper
        @find $(srctree) $(RCS_FIND_IGNORE) \
                \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
                -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-               -o -name '.*.rej' -o -name '*.pyc' \
-               -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
+               -o -name '.*.rej' -o -name '*%' -o -name 'core' \
+               -o -name '*.pyc' \) \
                -type f -print | xargs rm -f
 
 backup:
diff --git a/README b/README
index c9990e6796d307239c3d50f6f97e8063a2a74e91..61851b3d888c98223832554785a774674c318037 100644 (file)
--- a/README
+++ b/README
@@ -132,6 +132,10 @@ Directory Hierarchy:
 ====================
 
 /arch                  Architecture specific files
+  /arc                 Files generic to ARC architecture
+    /cpu               CPU specific files
+      /arc700          Files specific to ARC 700 CPUs
+    /lib               Architecture specific library files
   /arm                 Files generic to ARM architecture
     /cpu               CPU specific files
       /arm720t         Files specific to ARM 720 CPUs
@@ -164,7 +168,7 @@ Directory Hierarchy:
   /mips                        Files generic to MIPS architecture
     /cpu               CPU specific files
       /mips32          Files specific to MIPS32 CPUs
-      /xburst          Files specific to Ingenic XBurst CPUs
+      /mips64          Files specific to MIPS64 CPUs
     /lib               Architecture specific library files
   /nds32               Files generic to NDS32 architecture
     /cpu               CPU specific files
@@ -427,6 +431,14 @@ The following options need to be configured:
                In this mode, a single differential clock is used to supply
                clocks to the sysclock, ddrclock and usbclock.
 
+               CONFIG_SYS_CPC_REINIT_F
+               This CONFIG is defined when the CPC is configured as SRAM at the
+               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
+               supported, core will start to execute uboot when wakes up.
+
 - Generic CPU options:
                CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
 
@@ -454,6 +466,9 @@ The following options need to be configured:
                CONFIG_SYS_FSL_DDRC_GEN3
                Freescale DDR3 controller.
 
+               CONFIG_SYS_FSL_DDRC_GEN4
+               Freescale DDR4 controller.
+
                CONFIG_SYS_FSL_DDRC_ARM_GEN3
                Freescale DDR3 controller for ARM-based SoCs.
 
@@ -469,7 +484,15 @@ The following options need to be configured:
 
                CONFIG_SYS_FSL_DDR3
                Board config to use DDR3. It can be enabled for SoCs with
-               Freescale DDR3 controllers.
+               Freescale DDR3 or DDR3L controllers.
+
+               CONFIG_SYS_FSL_DDR3L
+               Board config to use DDR3L. It can be enabled for SoCs with
+               DDR3L controllers.
+
+               CONFIG_SYS_FSL_DDR4
+               Board config to use DDR4. It can be enabled for SoCs with
+               DDR4 controllers.
 
                CONFIG_SYS_FSL_IFC_BE
                Defines the IFC controller register space as Big Endian
@@ -486,6 +509,10 @@ The following options need to be configured:
                PBI commands can be used to configure SoC before it starts the execution.
                Please refer doc/README.pblimage for more details
 
+               CONFIG_SPL_FSL_PBL
+               It adds a target to create boot binary having SPL binary in PBI format
+               concatenated with u-boot binary.
+
                CONFIG_SYS_FSL_DDR_BE
                Defines the DDR controller register space as Big Endian
 
@@ -912,6 +939,7 @@ The following options need to be configured:
                The default command configuration includes all commands
                except those marked below with a "*".
 
+               CONFIG_CMD_AES            AES 128 CBC encrypt/decrypt
                CONFIG_CMD_ASKENV       * ask for env variable
                CONFIG_CMD_BDI            bdinfo
                CONFIG_CMD_BEDBUG       * Include BedBug Debugger
@@ -1456,13 +1484,6 @@ The following options need to be configured:
                        for your device
                        - CONFIG_USBD_PRODUCTID 0xFFFF
 
-               Some USB device drivers may need to check USB cable attachment.
-               In this case you can enable following config in BoardName.h:
-                       CONFIG_USB_CABLE_CHECK
-                       This enables function definition:
-                       - usb_cable_connected() in include/usb.h
-                       Implementation of this function is board-specific.
-
 - ULPI Layer Support:
                The ULPI (UTMI Low Pin (count) Interface) PHYs are supported via
                the generic ULPI layer. The generic layer accesses the ULPI PHY
@@ -3316,6 +3337,9 @@ FIT uImage format:
                continuing (the hardware starts execution after just
                loading the first page rather than the full 4K).
 
+               CONFIG_SPL_SKIP_RELOCATE
+               Avoid SPL relocation
+
                CONFIG_SPL_NAND_BASE
                Include nand_base.c in the SPL.  Requires
                CONFIG_SPL_NAND_DRIVERS.
@@ -4510,8 +4534,13 @@ This firmware often needs to be loaded during U-Boot booting, so macros
 are used to identify the storage device (NOR flash, SPI, etc) and the address
 within that device.
 
-- CONFIG_SYS_QE_FMAN_FW_ADDR
-       The address in the storage device where the firmware is located.  The
+- CONFIG_SYS_FMAN_FW_ADDR
+       The address in the storage device where the FMAN microcode is located.  The
+       meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro
+       is also specified.
+
+- CONFIG_SYS_QE_FW_ADDR
+       The address in the storage device where the QE microcode is located.  The
        meaning of this address depends on which CONFIG_SYS_QE_FW_IN_xxx macro
        is also specified.
 
index b2d30b1a727846d3e90e8bb904ddf953408ad87f..35d8d387bd00343438b9a7eb62a895740ebfb5c5 100644 (file)
@@ -1,3 +1,6 @@
 obj-$(CONFIG_AT91FAMILY) += at91-common/
-obj-$(CONFIG_TEGRA) += $(SOC)-common/
+obj-$(CONFIG_TEGRA20) += tegra20-common/
+obj-$(CONFIG_TEGRA30) += tegra30-common/
+obj-$(CONFIG_TEGRA114) += tegra114-common/
+obj-$(CONFIG_TEGRA124) += tegra124-common/
 obj-$(CONFIG_TEGRA) += tegra-common/
index 3e2358e132b0d37af789da5d7b2004df4c1070b7..1cfcca9fa6d3cb32355d628982d959f351f409c2 100644 (file)
 #include <asm-offsets.h>
 #include <config.h>
 #include <version.h>
-.globl _start
-_start: b      reset
-#ifdef CONFIG_SPL_BUILD
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
 
-_hang:
-       .word   do_hang
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678      /* now 16*4=64 */
-#else
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction: .word undefined_instruction
-_software_interrupt:   .word software_interrupt
-_prefetch_abort:       .word prefetch_abort
-_data_abort:           .word data_abort
-_not_used:             .word not_used
-_irq:                  .word irq
-_fiq:                  .word fiq
-_pad:                  .word 0x12345678 /* now 16*4=64 */
-#endif /* CONFIG_SPL_BUILD */
-.global _end_vect
-_end_vect:
-
-       .balignl 16,0xdeadbeef
 /*
  *************************************************************************
  *
@@ -70,26 +29,7 @@ _end_vect:
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -152,195 +92,3 @@ cpu_init_crit:
        mov     lr, ip          /* restore link */
        mov     pc, lr          /* back to my caller */
 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
-#ifndef CONFIG_SPL_BUILD
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE           @ carve out a frame on current user stack
-       stmia   sp, {r0 - r12}                  @ Save user registers (now in svc mode) r0-r12
-
-       ldr     r2, IRQ_STACK_START_IN          @ set base 2 words into abort stack
-       ldmia   r2, {r2 - r3}                   @ get values for "aborted" pc and cpsr (into parm regs)
-       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}                   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp                          @ save current stack into r0 (param register)
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC                   @ !!!! R8 NEEDS to be saved !!!! a reserved stack spot would be good.
-       stmdb   r8, {sp, lr}^                   @ Calling SP, LR
-       str     lr, [r8, #0]                    @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]                    @ Save CPSR
-       str     r0, [r8, #8]                    @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4                      @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack (enter in banked mode)
-
-       str     lr, [r13]                       @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr                        @ get the spsr
-       str     lr, [r13, #4]                   @ save spsr in position 1 of saved stack
-
-       mov     r13, #MODE_SVC                  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13                       @ switch modes, make sure moves will execute
-       mov     lr, pc                          @ capture return pc
-       movs    pc, lr                          @ jump to next instruction & switch modes.
-       .endm
-
-       .macro get_bad_stack_swi
-       sub     r13, r13, #4                    @ space on current stack for scratch reg.
-       str     r0, [r13]                       @ save R0's value.
-       ldr     r0, IRQ_STACK_START_IN          @ get data regions start
-       str     lr, [r0]                        @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr                        @ get the spsr
-       str     lr, [r0, #4]                    @ save spsr in position 1 of saved stack
-       ldr     lr, [r0]                        @ restore lr
-       ldr     r0, [r13]                       @ restore r0
-       add     r13, r13, #4                    @ pop stack entry
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-#endif /* CONFIG_SPL_BUILD */
-
-/*
- * exception handlers
- */
-#ifdef CONFIG_SPL_BUILD
-       .align  5
-do_hang:
-       bl      hang                            /* hang and never return */
-#else  /* !CONFIG_SPL_BUILD */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack_swi
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
-       .align 5
-.global arm1136_cache_flush
-arm1136_cache_flush:
-#if !defined(CONFIG_SYS_ICACHE_OFF)
-               mcr     p15, 0, r1, c7, c5, 0   @ invalidate I cache
-#endif
-#if !defined(CONFIG_SYS_DCACHE_OFF)
-               mcr     p15, 0, r1, c7, c14, 0  @ invalidate D cache
-#endif
-               mov     pc, lr                  @ back to caller
-#endif /* CONFIG_SPL_BUILD */
index ce620115d4d2963a2a5886d5e38244a901efffae..0704bdde27e07b944510f7ac9b3739c63f5fbb83 100644 (file)
 #define CONFIG_SYS_PHY_UBOOT_BASE      CONFIG_SYS_UBOOT_BASE
 #endif
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-.globl _start
-_start: b      reset
-#ifndef CONFIG_SPL_BUILD
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:
-       .word undefined_instruction
-_software_interrupt:
-       .word software_interrupt
-_prefetch_abort:
-       .word prefetch_abort
-_data_abort:
-       .word data_abort
-_not_used:
-       .word not_used
-_irq:
-       .word irq
-_fiq:
-       .word fiq
-_pad:
-       .word 0x12345678 /* now 16*4=64 */
-#else
-       . = _start + 64
-#endif
-
-.global _end_vect
-_end_vect:
-       .balignl 16,0xdeadbeef
 /*
  *************************************************************************
  *
@@ -77,14 +35,7 @@ _end_vect:
  *************************************************************************
  */
 
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl reset
 
 reset:
        /*
@@ -182,150 +133,3 @@ skip_tcmdisable:
 c_runtime_cpu_setup:
 
        mov     pc, lr
-
-#ifndef CONFIG_SPL_BUILD
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- */
-
-       .macro  bad_save_user_regs
-       /* carve out a frame on current user stack */
-       sub     sp, sp, #S_FRAME_SIZE
-       /* Save user registers (now in svc mode) r0-r12 */
-       stmia   sp, {r0 - r12}
-
-       ldr     r2, IRQ_STACK_START_IN
-       /* get values for "aborted" pc and cpsr (into parm regs) */
-       ldmia   r2, {r2 - r3}
-       /* grab pointer to old stack */
-       add     r0, sp, #S_FRAME_SIZE
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       /* save sp_SVC, lr_SVC, pc, cpsr */
-       stmia   r5, {r0 - r3}
-       /* save current stack into r0 (param register) */
-       mov     r0, sp
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       /* save caller lr in position 0 of saved stack */
-       str     lr, [r13]
-       /* get the spsr */
-       mrs     lr, spsr
-       /* save spsr in position 1 of saved stack */
-       str     lr, [r13, #4]
-
-       /* prepare SVC-Mode */
-       mov     r13, #MODE_SVC
-       @ msr   spsr_c, r13
-       /* switch modes, make sure moves will execute */
-       msr     spsr, r13
-       /* capture return pc */
-       mov     lr, pc
-       /* jump to next instruction & switch modes. */
-       movs    pc, lr
-       .endm
-
-       .macro get_bad_stack_swi
-       /* space on current stack for scratch reg. */
-       sub     r13, r13, #4
-       /* save R0's value. */
-       str     r0, [r13]
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-       /* save caller lr in position 0 of saved stack */
-       str     lr, [r0]
-       /* get the spsr */
-       mrs     lr, spsr
-       /* save spsr in position 1 of saved stack */
-       str     lr, [r0, #4]
-       /* restore lr */
-       ldr     lr, [r0]
-       /* restore r0 */
-       ldr     r0, [r13]
-       /* pop stack entry */
-       add     r13, r13, #4
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack_swi
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-#endif /* CONFIG_SPL_BUILD */
index 1a34842690358c3c485f0d08dbc30d8a134a188b..01c85be64b1a5861628459fee3deab99fb868a81 100644 (file)
 #include <version.h>
 #include <asm/hardware.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-
-.globl _start
-_start: b      reset
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-#ifdef CONFIG_SPL_BUILD
-_undefined_instruction: .word _undefined_instruction
-_software_interrupt:   .word _software_interrupt
-_prefetch_abort:       .word _prefetch_abort
-_data_abort:           .word _data_abort
-_not_used:             .word _not_used
-_irq:                  .word _irq
-_fiq:                  .word _fiq
-_pad:                  .word 0x12345678 /* now 16*4=64 */
-#else
-_undefined_instruction: .word undefined_instruction
-_software_interrupt:   .word software_interrupt
-_prefetch_abort:       .word prefetch_abort
-_data_abort:           .word data_abort
-_not_used:             .word not_used
-_irq:                  .word irq
-_fiq:                  .word fiq
-_pad:                  .word 0x12345678 /* now 16*4=64 */
-#endif /* CONFIG_SPL_BUILD */
-
-       .balignl 16,0xdeadbeef
-
-
 /*
  *************************************************************************
  *
@@ -67,26 +25,7 @@ _pad:                        .word 0x12345678 /* now 16*4=64 */
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -139,169 +78,3 @@ cpu_init_crit:
 
        mov     pc, lr
 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
-
-#ifndef CONFIG_SPL_BUILD
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC
-
-       ldr     r2, IRQ_STACK_START_IN
-       ldmia   r2, {r2 - r4}                   @ get pc, cpsr, old_r0
-       add     r0, sp, #S_FRAME_SIZE           @ restore sp_SVC
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r4}                   @ save sp_SVC, lr_SVC, pc, cpsr, old_r
-       mov     r0, sp
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC
-       stmdb   r8, {sp, lr}^                   @ Calling SP, LR
-       str     lr, [r8, #0]                    @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]                    @ Save CPSR
-       str     r0, [r8, #8]                    @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4                      @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       str     lr, [r13]                       @ save caller lr / spsr
-       mrs     lr, spsr
-       str     lr, [r13, #4]
-
-       mov     r13, #MODE_SVC                  @ prepare SVC-Mode
-       msr     spsr_c, r13
-       mov     lr, pc
-       movs    pc, lr
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
-#endif /* CONFIG_SPL_BUILD */
index 96994043e438cf570e03cd09cde9ff807311dd35..623a635208c6b90761a269227cf7fae46c62e1c0 100644 (file)
@@ -16,7 +16,8 @@ SECTIONS
        .text      :
        {
                *(.__image_copy_start)
-         arch/arm/cpu/arm920t/start.o  (.text*)
+               *(.vectors)
+               arch/arm/cpu/arm920t/start.o    (.text*)
                /* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */
          . = 0x1000;
          LONG(0x53555243)
index 7bf094aec133cae3738543e8b20a990cb376d5e6..07404502c829eb1ad4eb05cb602a41603fa37447 100644 (file)
 #include <common.h>
 #include <config.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-
-.globl _start
-_start:        b       start_code
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:        .word undefined_instruction
-_software_interrupt:   .word software_interrupt
-_prefetch_abort:       .word prefetch_abort
-_data_abort:           .word data_abort
-_not_used:             .word not_used
-_irq:                  .word irq
-_fiq:                  .word fiq
-
-       .balignl 16,0xdeadbeef
-
-
 /*
  *************************************************************************
  *
@@ -55,28 +25,9 @@ _fiq:                        .word fiq
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
+       .globl  reset
 
-/*
- * the actual start code
- */
-
-start_code:
+reset:
        /*
         * set the cpu to SVC32 mode
         */
@@ -196,166 +147,3 @@ cpu_init_crit:
        mov     lr, ip
        mov     pc, lr
 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC       0x13
-#define I_BIT          0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       ldr     r2, IRQ_STACK_START_IN
-       ldmia   r2, {r2 - r3}                   @ get pc, cpsr
-       add     r0, sp, #S_FRAME_SIZE           @ restore sp_SVC
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}                   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r7, sp, #S_PC
-       stmdb   r7, {sp, lr}^                   @ Calling SP, LR
-       str     lr, [r7, #0]                    @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r7, #4]                    @ Save CPSR
-       str     r0, [r7, #8]                    @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       /* return & move spsr_svc into cpsr */
-       subs    pc, lr, #4
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       str     lr, [r13]                       @ save caller lr / spsr
-       mrs     lr, spsr
-       str     lr, [r13, #4]
-
-       mov     r13, #MODE_SVC                  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13
-       mov     lr, pc
-       movs    pc, lr
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
index 34a0fcb462f44539af65a13a8ce0b40e1ff79c99..9b60436539573848730f93f0374f43a0dd519170 100644 (file)
 #include <common.h>
 #include <version.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-
-.globl _start
-_start:
-       b       reset
-       b       undefined_instruction
-       b       software_interrupt
-       b       prefetch_abort
-       b       data_abort
-       b       not_used
-       b       irq
-       b       fiq
-
-/*
- * Vector table, located at address 0x20.
- * This table allows the code running AFTER SPL, the U-Boot, to install it's
- * interrupt handlers here. The problem is that the U-Boot is loaded into RAM,
- * including it's interrupt vectoring table and the table at 0x0 is still the
- * SPLs. So if interrupt happens in U-Boot, the SPLs interrupt vectoring table
- * is still used.
- */
-_vt_reset:
-       .word   _reset
-_vt_undefined_instruction:
-       .word   _hang
-_vt_software_interrupt:
-       .word   _hang
-_vt_prefetch_abort:
-       .word   _hang
-_vt_data_abort:
-       .word   _hang
-_vt_not_used:
-       .word   _reset
-_vt_irq:
-       .word   _hang
-_vt_fiq:
-       .word   _hang
-
-reset:
-       ldr     pc, _vt_reset
-undefined_instruction:
-       ldr     pc, _vt_undefined_instruction
-software_interrupt:
-       ldr     pc, _vt_software_interrupt
-prefetch_abort:
-       ldr     pc, _vt_prefetch_abort
-data_abort:
-       ldr     pc, _vt_data_abort
-not_used:
-       ldr     pc, _vt_not_used
-irq:
-       ldr     pc, _vt_irq
-fiq:
-       ldr     pc, _vt_fiq
-
-       .balignl 16,0xdeadbeef
-
 /*
  *************************************************************************
  *
@@ -101,28 +37,8 @@ fiq:
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
-
-_reset:
+       .globl  reset
+reset:
        /*
         * If the CPU is configured in "Wait JTAG connection mode", the stack
         * pointer is not configured and is zero. This will cause crash when
@@ -179,7 +95,3 @@ _reset:
        mov r0, #0
 
        bx      lr
-
-_hang:
-1:
-       bl      1b                              /* hang and never return */
index 7dbd5dbf99e8c6e216cc50e789ec7f103e0ecaea..290ac2e5617dc19cb93bf2d197d633bb02de02d6 100644 (file)
 
 #include <config.h>
 
-.globl _start
-_start:
-       b       reset
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:
-_software_interrupt:
-_prefetch_abort:
-_data_abort:
-_not_used:
-_irq:
-_fiq:
-       .word infinite_loop
-
-infinite_loop:
-       b       infinite_loop
-
 /*
  *************************************************************************
  *
@@ -53,9 +30,7 @@ infinite_loop:
  *************************************************************************
  */
 
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
 /*
index b6d0f65b66b4f69ec540b023e2f4b36a27c9402d..c7ee19912f86f0e374473a32270befc2701b973b 100644 (file)
@@ -21,6 +21,7 @@ SECTIONS
        . = ALIGN(4);
        .text   :
        {
+               *(.vectors)
                arch/arm/cpu/arm926ejs/spear/start.o    (.text*)
                *(.text*)
        }
index 0717327050d06200a2871da2bcccfb290a45d1d7..8eb249475e473bbbca5888fd61d9cb1aa9dbb7ae 100644 (file)
 #include <common.h>
 #include <version.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-
-#ifdef CONFIG_SYS_DV_NOR_BOOT_CFG
-.globl _start
-_start:
-.globl _NOR_BOOT_CFG
-_NOR_BOOT_CFG:
-       .word   CONFIG_SYS_DV_NOR_BOOT_CFG
-       b       reset
-#else
-.globl _start
-_start:
-       b       reset
-#endif
-#ifdef CONFIG_SPL_BUILD
-/* No exception handlers in preloader */
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-
-_hang:
-       .word   do_hang
-/* pad to 64 byte boundary */
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-#else
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:
-       .word undefined_instruction
-_software_interrupt:
-       .word software_interrupt
-_prefetch_abort:
-       .word prefetch_abort
-_data_abort:
-       .word data_abort
-_not_used:
-       .word not_used
-_irq:
-       .word irq
-_fiq:
-       .word fiq
-
-#endif /* CONFIG_SPL_BUILD */
-       .balignl 16,0xdeadbeef
-
-
 /*
  *************************************************************************
  *
@@ -102,26 +33,7 @@ _fiq:
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -198,175 +110,3 @@ flush_dcache:
        mov     lr, ip          /* restore link */
        mov     pc, lr          /* back to my caller */
 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
-#ifndef CONFIG_SPL_BUILD
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       @ carve out a frame on current user stack
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}  @ Save user registers (now in svc mode) r0-r12
-       ldr     r2, IRQ_STACK_START_IN
-       @ get values for "aborted" pc and cpsr (into parm regs)
-       ldmia   r2, {r2 - r3}
-       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp          @ save current stack into r0 (param register)
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       @ !!!! R8 NEEDS to be saved !!!! a reserved stack spot would be good.
-       add     r8, sp, #S_PC
-       stmdb   r8, {sp, lr}^           @ Calling SP, LR
-       str     lr, [r8, #0]            @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]            @ Save CPSR
-       str     r0, [r8, #8]            @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4              @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       str     lr, [r13]       @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr        @ get the spsr
-       str     lr, [r13, #4]   @ save spsr in position 1 of saved stack
-       mov     r13, #MODE_SVC  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13       @ switch modes, make sure moves will execute
-       mov     lr, pc          @ capture return pc
-       movs    pc, lr          @ jump to next instruction & switch modes.
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-#endif /* CONFIG_SPL_BUILD */
-
-/*
- * exception handlers
- */
-#ifdef CONFIG_SPL_BUILD
-       .align  5
-do_hang:
-1:
-       bl      1b                              /* hang and never return */
-#else  /* !CONFIG_SPL_BUILD */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
-#endif /* CONFIG_SPL_BUILD */
index 0c8d92d737a28f59a597ebf82310d7b5ea9e2f4f..e20e5a89aa407d01282d307fa8a27f720cc983f6 100644 (file)
@@ -16,6 +16,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/system.h>
+#include <asm/io.h>
 
 static void cache_flush(void);
 
@@ -51,3 +52,15 @@ static void cache_flush (void)
        asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (i));
        asm ("mcr p15, 0, %0, c7, c6, 0": :"r" (i));
 }
+
+#ifndef CONFIG_INTEGRATOR
+
+__attribute__((noreturn)) void reset_cpu(ulong addr __attribute__((unused)))
+{
+       writew(0x0, 0xfffece10);
+       writew(0x8, 0xfffece10);
+       for (;;)
+               ;
+}
+
+#endif /* #ifdef CONFIG_INTEGRATOR */
index 7d5014583626db38228f533913687c4e6df55b7f..41123716a7430c702d8d80749f9dc9cc69ec7301 100644 (file)
 #include <config.h>
 #include <version.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-
-.globl _start
-_start:
-       b       reset
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:
-       .word undefined_instruction
-_software_interrupt:
-       .word software_interrupt
-_prefetch_abort:
-       .word prefetch_abort
-_data_abort:
-       .word data_abort
-_not_used:
-       .word not_used
-_irq:
-       .word irq
-_fiq:
-       .word fiq
-
-       .balignl 16,0xdeadbeef
-
-_vectors_end:
-
 /*
  *************************************************************************
  *
@@ -71,26 +32,7 @@ _vectors_end:
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -157,189 +99,3 @@ cpu_init_crit:
        mov     lr, ip          /* restore link */
        mov     pc, lr          /* back to my caller */
 #endif
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       @ carve out a frame on current user stack
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}  @ Save user registers (now in svc mode) r0-r12
-
-       ldr     r2, IRQ_STACK_START_IN
-       @ get values for "aborted" pc and cpsr (into parm regs)
-       ldmia   r2, {r2 - r3}
-       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp          @ save current stack into r0 (param register)
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       @ !!!! R8 NEEDS to be saved !!!! a reserved stack spot would be good.
-       add     r8, sp, #S_PC
-       stmdb   r8, {sp, lr}^           @ Calling SP, LR
-       str     lr, [r8, #0]            @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]            @ Save CPSR
-       str     r0, [r8, #8]            @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4              @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       str     lr, [r13]       @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr        @ get the spsr
-       str     lr, [r13, #4]   @ save spsr in position 1 of saved stack
-       mov     r13, #MODE_SVC  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13       @ switch modes, make sure moves will execute
-       mov     lr, pc          @ capture return pc
-       movs    pc, lr          @ jump to next instruction & switch modes.
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
-
-# ifdef CONFIG_INTEGRATOR
-
-       /* Satisfied by general board level routine */
-
-#else
-
-       .align  5
-.globl reset_cpu
-reset_cpu:
-
-       ldr     r1, rstctl1     /* get clkm1 reset ctl */
-       mov     r3, #0x0
-       strh    r3, [r1]        /* clear it */
-       mov     r3, #0x8
-       strh    r3, [r1]        /* force dsp+arm reset */
-_loop_forever:
-       b       _loop_forever
-
-rstctl1:
-       .word   0xfffece10
-
-#endif /* #ifdef CONFIG_INTEGRATOR */
index 7404ea734816b9d7e7c5dd4acfe6342bc2071dac..c0c07b6a11a1038f331a68a02f05e60ce07a3362 100644 (file)
 #include <config.h>
 #include <version.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table
- *
- *************************************************************************
- */
-
-.globl _start
-_start:
-       b       reset
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:
-       .word undefined_instruction
-_software_interrupt:
-       .word software_interrupt
-_prefetch_abort:
-       .word prefetch_abort
-_data_abort:
-       .word data_abort
-_not_used:
-       .word not_used
-_irq:
-       .word irq
-_fiq:
-       .word fiq
-
-       .balignl 16,0xdeadbeef
-
 /*
  *************************************************************************
  *
@@ -67,26 +31,7 @@ _fiq:
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -132,174 +77,3 @@ cpu_init_crit:
         */
        mov     pc, lr          /* back to my caller */
 #endif
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       @ carve out a frame on current user stack
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}  @ Save user registers (now in svc mode) r0-r12
-
-       ldr     r2, IRQ_STACK_START_IN
-       @ get values for "aborted" pc and cpsr (into parm regs)
-       ldmia   r2, {r2 - r3}
-       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp          @ save current stack into r0 (param register)
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       @ !!!! R8 NEEDS to be saved !!!! a reserved stack spot would be good.
-       add     r8, sp, #S_PC
-       stmdb   r8, {sp, lr}^           @ Calling SP, LR
-       str     lr, [r8, #0]            @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]            @ Save CPSR
-       str     r0, [r8, #8]            @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4              @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       str     lr, [r13]       @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr        @ get the spsr
-       str     lr, [r13, #4]   @ save spsr in position 1 of saved stack
-       mov     r13, #MODE_SVC  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13       @ switch modes, make sure moves will execute
-       mov     lr, pc          @ capture return pc
-       movs    pc, lr          @ jump to next instruction & switch modes.
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-.globl undefined_instruction
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-.globl software_interrupt
-software_interrupt:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-.globl prefetch_abort
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-.globl data_abort
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-.globl not_used
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-       .align  5
-.globl irq
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-.globl fiq
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-.globl irq
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-.globl fiq
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
index 1caaa2759f3f3bfbe347e5f4c689fb78a429bf9a..2f2e9fcc7c89e4809e247bc61bb06bc968dcee35 100644 (file)
 /* Save the parameter pass in by previous boot loader */
 .global save_boot_params
 save_boot_params:
-       /* save the parameter here */
-
-       /*
-        * Setup stack for exception, which is located
-        * at the end of on-chip RAM. We don't expect exception prior to
-        * relocation and if that happens, we won't worry -- it will overide
-        * global data region as the code will goto reset. After relocation,
-        * this region won't be used by other part of program.
-        * Hence it is safe.
-        */
-       ldr     r0, =(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE)
-       ldr     r1, =IRQ_STACK_START_IN
-       str     r0, [r1]
-
+       /* no parameter to save */
        bx      lr
 
 
index 27be451a89d5d39eed7e9809c04853954661b9dc..fedd7c8f7e00d0427405173849e6c0743d6b886f 100644 (file)
 #include <asm/system.h>
 #include <linux/linkage.h>
 
-.globl _start
-_start: b      reset
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-#ifdef CONFIG_SPL_BUILD
-_undefined_instruction: .word _undefined_instruction
-_software_interrupt:   .word _software_interrupt
-_prefetch_abort:       .word _prefetch_abort
-_data_abort:           .word _data_abort
-_not_used:             .word _not_used
-_irq:                  .word _irq
-_fiq:                  .word _fiq
-_pad:                  .word 0x12345678 /* now 16*4=64 */
-#else
-.globl _undefined_instruction
-_undefined_instruction: .word undefined_instruction
-.globl _software_interrupt
-_software_interrupt:   .word software_interrupt
-.globl _prefetch_abort
-_prefetch_abort:       .word prefetch_abort
-.globl _data_abort
-_data_abort:           .word data_abort
-.globl _not_used
-_not_used:             .word not_used
-.globl _irq
-_irq:                  .word irq
-.globl _fiq
-_fiq:                  .word fiq
-_pad:                  .word 0x12345678 /* now 16*4=64 */
-#endif /* CONFIG_SPL_BUILD */
-
-.global _end_vect
-_end_vect:
-
-       .balignl 16,0xdeadbeef
 /*************************************************************************
  *
  * Startup Code (reset vector)
@@ -70,26 +30,7 @@ _end_vect:
  *
  *************************************************************************/
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        bl      save_boot_params
@@ -250,195 +191,3 @@ ENTRY(cpu_init_crit)
        b       lowlevel_init           @ go setup pll,mux,memory
 ENDPROC(cpu_init_crit)
 #endif
-
-#ifndef CONFIG_SPL_BUILD
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE           @ carve out a frame on current
-                                               @ user stack
-       stmia   sp, {r0 - r12}                  @ Save user registers (now in
-                                               @ svc mode) r0-r12
-       ldr     r2, IRQ_STACK_START_IN          @ set base 2 words into abort
-                                               @ stack
-       ldmia   r2, {r2 - r3}                   @ get values for "aborted" pc
-                                               @ and cpsr (into parm regs)
-       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}                   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp                          @ save current stack into r0
-                                               @ (param register)
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC                   @ !! R8 NEEDS to be saved !!
-                                               @ a reserved stack spot would
-                                               @ be good.
-       stmdb   r8, {sp, lr}^                   @ Calling SP, LR
-       str     lr, [r8, #0]                    @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]                    @ Save CPSR
-       str     r0, [r8, #8]                    @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4                      @ return & move spsr_svc into
-                                               @ cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack (enter
-                                               @ in banked mode)
-
-       str     lr, [r13]                       @ save caller lr in position 0
-                                               @ of saved stack
-       mrs     lr, spsr                        @ get the spsr
-       str     lr, [r13, #4]                   @ save spsr in position 1 of
-                                               @ saved stack
-
-       mov     r13, #MODE_SVC                  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13                       @ switch modes, make sure
-                                               @ moves will execute
-       mov     lr, pc                          @ capture return pc
-       movs    pc, lr                          @ jump to next instruction &
-                                               @ switch modes.
-       .endm
-
-       .macro get_bad_stack_swi
-       sub     r13, r13, #4                    @ space on current stack for
-                                               @ scratch reg.
-       str     r0, [r13]                       @ save R0's value.
-       ldr     r0, IRQ_STACK_START_IN          @ get data regions start
-                                               @ spots for abort stack
-       str     lr, [r0]                        @ save caller lr in position 0
-                                               @ of saved stack
-       mrs     lr, spsr                        @ get the spsr
-       str     lr, [r0, #4]                    @ save spsr in position 1 of
-                                               @ saved stack
-       ldr     lr, [r0]                        @ restore lr
-       ldr     r0, [r13]                       @ restore r0
-       add     r13, r13, #4                    @ pop stack entry
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack_swi
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effective fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif /* CONFIG_USE_IRQ */
-#endif /* CONFIG_SPL_BUILD */
index f2a59659881850ddf03ef5904a5dfdd42906e89d..69500a64e2ac17bcc17c86f4701b1213f0ddacdb 100644 (file)
@@ -88,7 +88,7 @@ SECTIONS
        }
 
        /*
-        * Zynq needs to discard more sections because the user
+        * Zynq needs to discard these sections because the user
         * is expected to pass this image on to tools for boot.bin
         * generation that require them to be dropped.
         */
index 9d16079956235d156f0d1c57727487813eb7a924..17d8be5b5b1c1025902012d87015764ed080764d 100644 (file)
 #include <errno.h>
 #include <linux/compiler.h>
 
+#ifdef CONFIG_CPU_PXA25X
+#if ((CONFIG_SYS_INIT_SP_ADDR) != 0xfffff800)
+#error "Init SP address must be set to 0xfffff800 for PXA250"
+#endif
+#endif
+
 #define        CPU_MASK_PXA_PRODID     0x000003f0
 #define        CPU_MASK_PXA_REVID      0x0000000f
 
index ae0d13ce8fe449fb72c59f7b4df1504e7e1f5800..c77d51e6d8dd6006a452610a70ee622f1bad4849 100644 (file)
 #include <config.h>
 #include <version.h>
 
-#ifdef CONFIG_CPU_PXA25X
-#if ((CONFIG_SYS_INIT_SP_ADDR) != 0xfffff800)
-#error "Init SP address must be set to 0xfffff800 for PXA250"
-#endif
-#endif
-
-.globl _start
-_start: b      reset
-#ifdef CONFIG_SPL_BUILD
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-       ldr     pc, _hang
-
-_hang:
-       .word   do_hang
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678
-       .word   0x12345678      /* now 16*4=64 */
-#else
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction: .word undefined_instruction
-_software_interrupt:   .word software_interrupt
-_prefetch_abort:       .word prefetch_abort
-_data_abort:           .word data_abort
-_not_used:             .word not_used
-_irq:                  .word irq
-_fiq:                  .word fiq
-_pad:                  .word 0x12345678 /* now 16*4=64 */
-#endif /* CONFIG_SPL_BUILD */
-.global _end_vect
-_end_vect:
-
-       .balignl 16,0xdeadbeef
 /*
  *************************************************************************
  *
@@ -84,26 +36,7 @@ _end_vect:
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -174,190 +107,6 @@ cpu_init_crit:
        mov     pc, lr          /* back to my caller */
 #endif /* !CONFIG_SKIP_LOWLEVEL_INIT || CONFIG_CPU_PXA25X */
 
-#ifndef CONFIG_SPL_BUILD
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE           @ carve out a frame on current user stack
-       stmia   sp, {r0 - r12}                  @ Save user registers (now in svc mode) r0-r12
-
-       ldr     r2, IRQ_STACK_START_IN          @ set base 2 words into abort stack
-       ldmia   r2, {r2 - r3}                   @ get values for "aborted" pc and cpsr (into parm regs)
-       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r3}                   @ save sp_SVC, lr_SVC, pc, cpsr
-       mov     r0, sp                          @ save current stack into r0 (param register)
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC                   @ !!!! R8 NEEDS to be saved !!!! a reserved stack spot would be good.
-       stmdb   r8, {sp, lr}^                   @ Calling SP, LR
-       str     lr, [r8, #0]                    @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]                    @ Save CPSR
-       str     r0, [r8, #8]                    @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4                      @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack (enter in banked mode)
-
-       str     lr, [r13]                       @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr                        @ get the spsr
-       str     lr, [r13, #4]                   @ save spsr in position 1 of saved stack
-
-       mov     r13, #MODE_SVC                  @ prepare SVC-Mode
-       @ msr   spsr_c, r13
-       msr     spsr, r13                       @ switch modes, make sure moves will execute
-       mov     lr, pc                          @ capture return pc
-       movs    pc, lr                          @ jump to next instruction & switch modes.
-       .endm
-
-       .macro get_bad_stack_swi
-       sub     r13, r13, #4                    @ space on current stack for scratch reg.
-       str     r0, [r13]                       @ save R0's value.
-       ldr     r0, IRQ_STACK_START_IN          @ get data regions start
-       str     lr, [r0]                        @ save caller lr in position 0 of saved stack
-       mrs     lr, spsr                        @ get the spsr
-       str     lr, [r0, #4]                    @ save spsr in position 1 of saved stack
-       ldr     lr, [r0]                        @ restore lr
-       ldr     r0, [r13]                       @ restore r0
-       add     r13, r13, #4                    @ pop stack entry
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-#endif /* CONFIG_SPL_BUILD */
-
-/*
- * exception handlers
- */
-#ifdef CONFIG_SPL_BUILD
-       .align  5
-do_hang:
-       bl      hang                            /* hang and never return */
-#else  /* !CONFIG_SPL_BUILD */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack_swi
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
-       .align 5
-#endif /* CONFIG_SPL_BUILD */
-
-
 /*
  * Enable MMU to use DCache as DRAM.
  *
index 6651898de235925b824f09cc409d80505650f7ac..4c9752a1c82b8829e9e2c0fed30457a532037cf9 100644 (file)
@@ -17,6 +17,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/system.h>
+#include <asm/io.h>
 
 #ifdef CONFIG_USE_IRQ
 DECLARE_GLOBAL_DATA_PTR;
@@ -52,3 +53,16 @@ static void cache_flush (void)
 
        asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (i));
 }
+
+#define RST_BASE 0x90030000
+#define RSRR   0x00
+#define RCSR   0x04
+
+__attribute__((noreturn)) void reset_cpu(ulong addr __attribute__((unused)))
+{
+       /* repeat endlessly */
+       while (1) {
+               writel(0, RST_BASE + RCSR);
+               writel(1, RST_BASE + RSRR);
+       }
+}
index bf80937a7c7b42f5d8a82ed388f8fd389b4580ed..78e0cb88681d5be5d5b859388abca201221c0ae5 100644 (file)
 #include <config.h>
 #include <version.h>
 
-/*
- *************************************************************************
- *
- * Jump vector table as in table 3.1 in [1]
- *
- *************************************************************************
- */
-
-
-.globl _start
-_start:        b       reset
-       ldr     pc, _undefined_instruction
-       ldr     pc, _software_interrupt
-       ldr     pc, _prefetch_abort
-       ldr     pc, _data_abort
-       ldr     pc, _not_used
-       ldr     pc, _irq
-       ldr     pc, _fiq
-
-_undefined_instruction:        .word undefined_instruction
-_software_interrupt:   .word software_interrupt
-_prefetch_abort:       .word prefetch_abort
-_data_abort:           .word data_abort
-_not_used:             .word not_used
-_irq:                  .word irq
-_fiq:                  .word fiq
-
-       .balignl 16,0xdeadbeef
-
-
 /*
  *************************************************************************
  *
@@ -56,26 +26,7 @@ _fiq:                        .word fiq
  *************************************************************************
  */
 
-#ifdef CONFIG_USE_IRQ
-/* IRQ stack memory (calculated at run-time) */
-.globl IRQ_STACK_START
-IRQ_STACK_START:
-       .word   0x0badc0de
-
-/* IRQ stack memory (calculated at run-time) */
-.globl FIQ_STACK_START
-FIQ_STACK_START:
-       .word 0x0badc0de
-#endif
-
-/* IRQ stack memory (calculated at run-time) + 8 bytes */
-.globl IRQ_STACK_START_IN
-IRQ_STACK_START_IN:
-       .word   0x0badc0de
-
-/*
- * the actual reset code
- */
+       .globl  reset
 
 reset:
        /*
@@ -173,177 +124,3 @@ cpu_init_crit:
        mcr     p15, 0, r0, c8, c7, 0   /* flush v4 TLB */
 
        mov     pc, lr
-
-
-/*
- *************************************************************************
- *
- * Interrupt handling
- *
- *************************************************************************
- */
-
-@
-@ IRQ stack frame.
-@
-#define S_FRAME_SIZE   72
-
-#define S_OLD_R0       68
-#define S_PSR          64
-#define S_PC           60
-#define S_LR           56
-#define S_SP           52
-
-#define S_IP           48
-#define S_FP           44
-#define S_R10          40
-#define S_R9           36
-#define S_R8           32
-#define S_R7           28
-#define S_R6           24
-#define S_R5           20
-#define S_R4           16
-#define S_R3           12
-#define S_R2           8
-#define S_R1           4
-#define S_R0           0
-
-#define MODE_SVC 0x13
-#define I_BIT   0x80
-
-/*
- * use bad_save_user_regs for abort/prefetch/undef/swi ...
- * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
- */
-
-       .macro  bad_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC
-
-       ldr     r2, IRQ_STACK_START_IN
-       ldmia   r2, {r2 - r4}                   @ get pc, cpsr, old_r0
-       add     r0, sp, #S_FRAME_SIZE           @ restore sp_SVC
-
-       add     r5, sp, #S_SP
-       mov     r1, lr
-       stmia   r5, {r0 - r4}                   @ save sp_SVC, lr_SVC, pc, cpsr, old_r
-       mov     r0, sp
-       .endm
-
-       .macro  irq_save_user_regs
-       sub     sp, sp, #S_FRAME_SIZE
-       stmia   sp, {r0 - r12}                  @ Calling r0-r12
-       add     r8, sp, #S_PC
-       stmdb   r8, {sp, lr}^                   @ Calling SP, LR
-       str     lr, [r8, #0]                    @ Save calling PC
-       mrs     r6, spsr
-       str     r6, [r8, #4]                    @ Save CPSR
-       str     r0, [r8, #8]                    @ Save OLD_R0
-       mov     r0, sp
-       .endm
-
-       .macro  irq_restore_user_regs
-       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
-       mov     r0, r0
-       ldr     lr, [sp, #S_PC]                 @ Get PC
-       add     sp, sp, #S_FRAME_SIZE
-       subs    pc, lr, #4                      @ return & move spsr_svc into cpsr
-       .endm
-
-       .macro get_bad_stack
-       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
-
-       str     lr, [r13]                       @ save caller lr / spsr
-       mrs     lr, spsr
-       str     lr, [r13, #4]
-
-       mov     r13, #MODE_SVC                  @ prepare SVC-Mode
-       msr     spsr_c, r13
-       mov     lr, pc
-       movs    pc, lr
-       .endm
-
-       .macro get_irq_stack                    @ setup IRQ stack
-       ldr     sp, IRQ_STACK_START
-       .endm
-
-       .macro get_fiq_stack                    @ setup FIQ stack
-       ldr     sp, FIQ_STACK_START
-       .endm
-
-/*
- * exception handlers
- */
-       .align  5
-undefined_instruction:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_undefined_instruction
-
-       .align  5
-software_interrupt:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_software_interrupt
-
-       .align  5
-prefetch_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_prefetch_abort
-
-       .align  5
-data_abort:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_data_abort
-
-       .align  5
-not_used:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_not_used
-
-#ifdef CONFIG_USE_IRQ
-
-       .align  5
-irq:
-       get_irq_stack
-       irq_save_user_regs
-       bl      do_irq
-       irq_restore_user_regs
-
-       .align  5
-fiq:
-       get_fiq_stack
-       /* someone ought to write a more effiction fiq_save_user_regs */
-       irq_save_user_regs
-       bl      do_fiq
-       irq_restore_user_regs
-
-#else
-
-       .align  5
-irq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_irq
-
-       .align  5
-fiq:
-       get_bad_stack
-       bad_save_user_regs
-       bl      do_fiq
-
-#endif
-
-       .align  5
-.globl reset_cpu
-reset_cpu:
-       ldr     r0, RST_BASE
-       mov     r1, #0x0                        @ set bit 3-0 ...
-       str     r1, [r0, #RCSR]                 @ ... to clear in RCSR
-       mov     r1, #0x1
-       str     r1, [r0, #RSRR]                 @ and perform reset
-       b       reset_cpu                       @ silly, but repeat endlessly
index 8209f7661ad76c631edb8450aa3c489d642cdbde..ec95d7ceb15daf8a62b720ab7c3f8f2c094697a8 100644 (file)
@@ -19,74 +19,6 @@ enum security_op {
        SECURITY_ENCRYPT        = 1 << 1,       /* Encrypt the data */
 };
 
-static void debug_print_vector(char *name, u32 num_bytes, u8 *data)
-{
-       u32 i;
-
-       debug("%s [%d] @0x%08x", name, num_bytes, (u32)data);
-       for (i = 0; i < num_bytes; i++) {
-               if (i % 16 == 0)
-                       debug(" = ");
-               debug("%02x", data[i]);
-               if ((i+1) % 16 != 0)
-                       debug(" ");
-       }
-       debug("\n");
-}
-
-/**
- * Apply chain data to the destination using EOR
- *
- * Each array is of length AES_AES_KEY_LENGTH.
- *
- * \param cbc_chain_data       Chain data
- * \param src                  Source data
- * \param dst                  Destination data, which is modified here
- */
-static void apply_cbc_chain_data(u8 *cbc_chain_data, u8 *src, u8 *dst)
-{
-       int i;
-
-       for (i = 0; i < 16; i++)
-               *dst++ = *src++ ^ *cbc_chain_data++;
-}
-
-/**
- * Encrypt some data with AES.
- *
- * \param key_schedule         Expanded key to use
- * \param src                  Source data to encrypt
- * \param dst                  Destination buffer
- * \param num_aes_blocks       Number of AES blocks to encrypt
- */
-static void encrypt_object(u8 *key_schedule, u8 *src, u8 *dst,
-                          u32 num_aes_blocks)
-{
-       u8 tmp_data[AES_KEY_LENGTH];
-       u8 *cbc_chain_data;
-       u32 i;
-
-       cbc_chain_data = zero_key;      /* Convenient array of 0's for IV */
-
-       for (i = 0; i < num_aes_blocks; i++) {
-               debug("encrypt_object: block %d of %d\n", i, num_aes_blocks);
-               debug_print_vector("AES Src", AES_KEY_LENGTH, src);
-
-               /* Apply the chain data */
-               apply_cbc_chain_data(cbc_chain_data, src, tmp_data);
-               debug_print_vector("AES Xor", AES_KEY_LENGTH, tmp_data);
-
-               /* encrypt the AES block */
-               aes_encrypt(tmp_data, key_schedule, dst);
-               debug_print_vector("AES Dst", AES_KEY_LENGTH, dst);
-
-               /* Update pointers for next loop. */
-               cbc_chain_data = dst;
-               src += AES_KEY_LENGTH;
-               dst += AES_KEY_LENGTH;
-       }
-}
-
 /**
  * Shift a vector left by one bit
  *
@@ -129,39 +61,31 @@ static void sign_object(u8 *key, u8 *key_schedule, u8 *src, u8 *dst,
        for (i = 0; i < AES_KEY_LENGTH; i++)
                tmp_data[i] = 0;
 
-       encrypt_object(key_schedule, tmp_data, left, 1);
-       debug_print_vector("AES(key, nonce)", AES_KEY_LENGTH, left);
+       aes_cbc_encrypt_blocks(key_schedule, tmp_data, left, 1);
 
        left_shift_vector(left, k1, sizeof(left));
-       debug_print_vector("L", AES_KEY_LENGTH, left);
 
        if ((left[0] >> 7) != 0) /* get MSB of L */
                k1[AES_KEY_LENGTH-1] ^= AES_CMAC_CONST_RB;
-       debug_print_vector("K1", AES_KEY_LENGTH, k1);
 
        /* compute the AES-CMAC value */
        for (i = 0; i < num_aes_blocks; i++) {
                /* Apply the chain data */
-               apply_cbc_chain_data(cbc_chain_data, src, tmp_data);
+               aes_apply_cbc_chain_data(cbc_chain_data, src, tmp_data);
 
                /* for the final block, XOR K1 into the IV */
                if (i == num_aes_blocks - 1)
-                       apply_cbc_chain_data(tmp_data, k1, tmp_data);
+                       aes_apply_cbc_chain_data(tmp_data, k1, tmp_data);
 
                /* encrypt the AES block */
                aes_encrypt(tmp_data, key_schedule, dst);
 
                debug("sign_obj: block %d of %d\n", i, num_aes_blocks);
-               debug_print_vector("AES-CMAC Src", AES_KEY_LENGTH, src);
-               debug_print_vector("AES-CMAC Xor", AES_KEY_LENGTH, tmp_data);
-               debug_print_vector("AES-CMAC Dst", AES_KEY_LENGTH, dst);
 
                /* Update pointers for next loop. */
                cbc_chain_data = dst;
                src += AES_KEY_LENGTH;
        }
-
-       debug_print_vector("AES-CMAC Hash", AES_KEY_LENGTH, dst);
 }
 
 /**
@@ -180,7 +104,6 @@ static int encrypt_and_sign(u8 *key, enum security_op oper, u8 *src,
        u8 key_schedule[AES_EXPAND_KEY_LENGTH];
 
        debug("encrypt_and_sign: length = %d\n", length);
-       debug_print_vector("AES key", AES_KEY_LENGTH, key);
 
        /*
         * The only need for a key is for signing/checksum purposes, so
@@ -193,7 +116,7 @@ static int encrypt_and_sign(u8 *key, enum security_op oper, u8 *src,
        if (oper & SECURITY_ENCRYPT) {
                /* Perform this in place, resulting in src being encrypted. */
                debug("encrypt_and_sign: begin encryption\n");
-               encrypt_object(key_schedule, src, src, num_aes_blocks);
+               aes_cbc_encrypt_blocks(key_schedule, src, src, num_aes_blocks);
                debug("encrypt_and_sign: end encryption\n");
        }
 
index 3e886680e87c68c1696c7a2c4af99c0c5cf77f88..4beddf08e76722251b9d77182c7fc9bef508c314 100644 (file)
@@ -18,6 +18,7 @@ SECTIONS
        .text :
        {
                __image_copy_start = .;
+               *(.vectors)
                CPUDIR/start.o (.text*)
                *(.text*)
        }
index 33c1f99fc09c9b03ea57006b8483f3f918776004..a7728e0a2de2b9c6e452f19830b7b52d3a1fc355 100644 (file)
@@ -18,6 +18,7 @@ SECTIONS
        .text :
        {
                *(.__image_copy_start)
+               *(.vectors)
                CPUDIR/start.o (.text*)
                *(.text*)
        }
diff --git a/arch/arm/include/asm/arch-rmobile/ehci-rmobile.h b/arch/arm/include/asm/arch-rmobile/ehci-rmobile.h
new file mode 100644 (file)
index 0000000..463654e
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ *  Copyright (C) 2013,2014 Renesas Electronics Corporation
+ *  Copyright (C) 2014 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+ *
+ *  SPDX-License-Identifier:     GPL-2.0
+ */
+
+#ifndef __EHCI_RMOBILE_H__
+#define __EHCI_RMOBILE_H__
+
+/* Register offset */
+#define OHCI_OFFSET    0x00
+#define OHCI_SIZE      0x1000
+#define EHCI_OFFSET    0x1000
+#define EHCI_SIZE      0x1000
+
+#define EHCI_USBCMD    (EHCI_OFFSET + 0x0020)
+
+/* USBCTR */
+#define DIRPD          (1 << 8)
+#define PLL_RST                (1 << 2)
+#define PCICLK_MASK    (1 << 1)
+#define USBH_RST       (1 << 0)
+
+/* CMND_STS */
+#define SERREN         (1 << 8)
+#define PERREN         (1 << 6)
+#define MASTEREN       (1 << 2)
+#define MEMEN          (1 << 1)
+
+/* PCIAHB_WIN1_CTR and PCIAHB_WIN2_CTR */
+#define PCIAHB_WIN_PREFETCH    ((1 << 1)|(1 << 0))
+
+/* AHBPCI_WIN1_CTR */
+#define PCIWIN1_PCICMD         ((1 << 3)|(1 << 1))
+#define AHB_CFG_AHBPCI         0x40000000
+#define AHB_CFG_HOST           0x80000000
+
+/* AHBPCI_WIN2_CTR */
+#define PCIWIN2_PCICMD         ((1 << 2)|(1 << 1))
+
+/* PCI_INT_ENABLE */
+#define USBH_PMEEN             (1 << 19)
+#define USBH_INTBEN            (1 << 17)
+#define USBH_INTAEN            (1 << 16)
+
+/* AHB_BUS_CTR */
+#define SMODE_READY_CTR                (1 << 17)
+#define SMODE_READ_BURST       (1 << 16)
+#define MMODE_HBUSREQ          (1 << 7)
+#define MMODE_BOUNDARY         ((1 << 6)|(1 << 5))
+#define MMODE_BURST_WIDTH      ((1 << 4)|(1 << 3))
+#define MMODE_SINGLE_MODE      ((1 << 4)|(1 << 3))
+#define MMODE_WR_INCR          (1 << 2)
+#define MMODE_BYTE_BURST       (1 << 1)
+#define MMODE_HTRANS           (1 << 0)
+
+/* PCI_ARBITER_CTR */
+#define PCIBUS_PARK_TIMER       0x00FF0000
+#define PCIBUS_PARK_TIMER_SET   0x00070000
+#define PCIBP_MODE             (1 << 12)
+#define PCIREQ7                 (1 << 7)
+#define PCIREQ6                 (1 << 6)
+#define PCIREQ5                 (1 << 5)
+#define PCIREQ4                 (1 << 4)
+#define PCIREQ3                 (1 << 3)
+#define PCIREQ2                 (1 << 2)
+#define PCIREQ1                 (1 << 1)
+#define PCIREQ0                 (1 << 0)
+
+#define SMSTPCR7        0xE615014C
+#define SMSTPCR703      (1 << 3)
+
+/* Init AHB master and slave functions of the host logic */
+#define AHB_BUS_CTR_INIT \
+       (SMODE_READY_CTR | MMODE_HBUSREQ | MMODE_WR_INCR | \
+        MMODE_BYTE_BURST | MMODE_HTRANS)
+
+#define USBCTR_WIN_SIZE_1GB    0x800
+
+/* PCI Configuration Registers */
+#define PCI_CONF_OHCI_OFFSET   0x10000
+#define PCI_CONF_EHCI_OFFSET   0x10100
+struct ahb_pciconf {
+       u32 vid_did;
+       u32 cmnd_sts;
+       u32 rev;
+       u32 cache_line;
+       u32 basead;
+};
+
+/* PCI Configuration Registers for AHB-PCI Bridge Registers */
+#define PCI_CONF_AHBPCI_OFFSET 0x10000
+struct ahbconf_pci_bridge {
+       u32 vid_did;            /* 0x00 */
+       u32 cmnd_sts;
+       u32 revid_cc;
+       u32 cls_lt_ht_bist;
+       u32 basead;             /* 0x10 */
+       u32 win1_basead;
+       u32 win2_basead;
+       u32 dummy0[5];
+       u32 ssvdi_ssid;         /* 0x2C */
+       u32 dummy1[4];
+       u32 intr_line_pin;
+};
+
+/* AHB-PCI Bridge PCI Communication Registers */
+#define AHBPCI_OFFSET  0x10800
+struct ahbcom_pci_bridge {
+       u32 pciahb_win1_ctr;    /* 0x00 */
+       u32 pciahb_win2_ctr;
+       u32 pciahb_dct_ctr;
+       u32 dummy0;
+       u32 ahbpci_win1_ctr;    /* 0x10 */
+       u32 ahbpci_win2_ctr;
+       u32 dummy1;
+       u32 ahbpci_dct_ctr;
+       u32 pci_int_enable;     /* 0x20 */
+       u32 pci_int_status;
+       u32 dummy2[2];
+       u32 ahb_bus_ctr;        /* 0x30 */
+       u32 usbctr;
+       u32 dummy3[2];
+       u32 pci_arbiter_ctr;    /* 0x40 */
+       u32 dummy4;
+       u32 pci_unit_rev;       /* 0x48 */
+};
+
+struct rmobile_ehci_reg {
+       u32 hciversion;         /* hciversion/caplength */
+       u32 hcsparams;          /* hcsparams */
+       u32 hccparams;          /* hccparams */
+       u32 hcsp_portroute;     /* hcsp_portroute */
+       u32 usbcmd;             /* usbcmd */
+       u32 usbsts;             /* usbsts */
+       u32 usbintr;            /* usbintr */
+       u32 frindex;            /* frindex */
+       u32 ctrldssegment;      /* ctrldssegment */
+       u32 periodiclistbase;   /* periodiclistbase */
+       u32 asynclistaddr;      /* asynclistaddr */
+       u32 dummy[9];
+       u32 configflag;         /* configflag */
+       u32 portsc;             /* portsc */
+};
+
+#endif /* __EHCI_RMOBILE_H__ */
index e035d6acc00b4b0c7397980a2d520b232fc45a80..585f1f781b5dbb4c96f974fd7e7854ff8aa2b3cf 100644 (file)
@@ -11,7 +11,7 @@ lib-$(CONFIG_USE_PRIVATE_LIBGCC) += _ashldi3.o _ashrdi3.o _divsi3.o \
 ifdef CONFIG_ARM64
 obj-y  += crt0_64.o
 else
-obj-y  += crt0.o
+obj-y  += vectors.o crt0.o
 endif
 
 ifndef CONFIG_SPL_BUILD
index 6cc136aa3c1e6baeddded6fd8c670e62aac23243..4f6b9f01cb55587bc00483693be903a7750a1a9c 100644 (file)
 void  __flush_cache(unsigned long start, unsigned long size)
 {
 #if defined(CONFIG_ARM1136)
-       void arm1136_cache_flush(void);
 
-       arm1136_cache_flush();
+#if !defined(CONFIG_SYS_ICACHE_OFF)
+       asm("mcr p15, 0, r1, c7, c5, 0"); /* invalidate I cache */
 #endif
+
+#if !defined(CONFIG_SYS_DCACHE_OFF)
+       asm("mcr p15, 0, r1, c7, c14, 0"); /* Clean+invalidate D cache */
+#endif
+
+#endif /* CONFIG_ARM1136 */
+
 #ifdef CONFIG_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
+#endif /* CONFIG_ARM926EJS */
        return;
 }
 void  flush_cache(unsigned long start, unsigned long size)
diff --git a/arch/arm/lib/vectors.S b/arch/arm/lib/vectors.S
new file mode 100644 (file)
index 0000000..d68cc47
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ *  vectors - Generic ARM exception table code
+ *
+ *  Copyright (c) 1998 Dan Malek <dmalek@jlc.net>
+ *  Copyright (c) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
+ *  Copyright (c) 2000 Wolfgang Denk <wd@denx.de>
+ *  Copyright (c) 2001 Alex Züpke <azu@sysgo.de>
+ *  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) 2002 Kyle Harris <kharris@nexus-tech.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ *************************************************************************
+ *
+ * Symbol _start is referenced elsewhere, so make it global
+ *
+ *************************************************************************
+ */
+
+.globl _start
+
+/*
+ *************************************************************************
+ *
+ * Vectors have their own section so linker script can map them easily
+ *
+ *************************************************************************
+ */
+
+       .section ".vectors", "x"
+
+/*
+ *************************************************************************
+ *
+ * Exception vectors as described in ARM reference manuals
+ *
+ * Uses indirect branch to allow reaching handlers anywhere in memory.
+ *
+ *************************************************************************
+ */
+
+_start:
+
+#ifdef CONFIG_SYS_DV_NOR_BOOT_CFG
+       .word   CONFIG_SYS_DV_NOR_BOOT_CFG
+#endif
+
+_start:
+       ldr     pc, _reset
+       ldr     pc, _undefined_instruction
+       ldr     pc, _software_interrupt
+       ldr     pc, _prefetch_abort
+       ldr     pc, _data_abort
+       ldr     pc, _not_used
+       ldr     pc, _irq
+       ldr     pc, _fiq
+
+/*
+ *************************************************************************
+ *
+ * Indirect vectors table
+ *
+ * Symbols referenced here must be defined somewhere else
+ *
+ *************************************************************************
+ */
+
+       .globl  _undefined_instruction
+       .globl  _software_interrupt
+       .globl  _prefetch_abort
+       .globl  _data_abort
+       .globl  _not_used
+       .globl  _irq
+       .globl  _fiq
+
+_reset:                        .word reset
+_undefined_instruction:        .word undefined_instruction
+_software_interrupt:   .word software_interrupt
+_prefetch_abort:       .word prefetch_abort
+_data_abort:           .word data_abort
+_not_used:             .word not_used
+_irq:                  .word irq
+_fiq:                  .word fiq
+
+       .balignl 16,0xdeadbeef
+
+/*
+ *************************************************************************
+ *
+ * Interrupt handling
+ *
+ *************************************************************************
+ */
+
+/* SPL interrupt handling: just hang */
+
+#ifdef CONFIG_SPL_BUILD
+
+       .align  5
+undefined_instruction:
+software_interrupt:
+prefetch_abort:
+data_abort:
+not_used:
+irq:
+fiq:
+
+1:
+       bl      1b                      /* hang and never return */
+
+#else  /* !CONFIG_SPL_BUILD */
+
+/* IRQ stack memory (calculated at run-time) + 8 bytes */
+.globl IRQ_STACK_START_IN
+IRQ_STACK_START_IN:
+       .word   0x0badc0de
+
+#ifdef CONFIG_USE_IRQ
+/* IRQ stack memory (calculated at run-time) */
+.globl IRQ_STACK_START
+IRQ_STACK_START:
+       .word   0x0badc0de
+
+/* IRQ stack memory (calculated at run-time) */
+.globl FIQ_STACK_START
+FIQ_STACK_START:
+       .word 0x0badc0de
+
+#endif /* CONFIG_USE_IRQ */
+
+@
+@ IRQ stack frame.
+@
+#define S_FRAME_SIZE   72
+
+#define S_OLD_R0       68
+#define S_PSR          64
+#define S_PC           60
+#define S_LR           56
+#define S_SP           52
+
+#define S_IP           48
+#define S_FP           44
+#define S_R10          40
+#define S_R9           36
+#define S_R8           32
+#define S_R7           28
+#define S_R6           24
+#define S_R5           20
+#define S_R4           16
+#define S_R3           12
+#define S_R2           8
+#define S_R1           4
+#define S_R0           0
+
+#define MODE_SVC 0x13
+#define I_BIT   0x80
+
+/*
+ * use bad_save_user_regs for abort/prefetch/undef/swi ...
+ * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
+ */
+
+       .macro  bad_save_user_regs
+       @ carve out a frame on current user stack
+       sub     sp, sp, #S_FRAME_SIZE
+       stmia   sp, {r0 - r12}  @ Save user registers (now in svc mode) r0-r12
+       ldr     r2, IRQ_STACK_START_IN
+       @ get values for "aborted" pc and cpsr (into parm regs)
+       ldmia   r2, {r2 - r3}
+       add     r0, sp, #S_FRAME_SIZE           @ grab pointer to old stack
+       add     r5, sp, #S_SP
+       mov     r1, lr
+       stmia   r5, {r0 - r3}   @ save sp_SVC, lr_SVC, pc, cpsr
+       mov     r0, sp          @ save current stack into r0 (param register)
+       .endm
+
+       .macro  irq_save_user_regs
+       sub     sp, sp, #S_FRAME_SIZE
+       stmia   sp, {r0 - r12}                  @ Calling r0-r12
+       @ !!!! R8 NEEDS to be saved !!!! a reserved stack spot would be good.
+       add     r8, sp, #S_PC
+       stmdb   r8, {sp, lr}^           @ Calling SP, LR
+       str     lr, [r8, #0]            @ Save calling PC
+       mrs     r6, spsr
+       str     r6, [r8, #4]            @ Save CPSR
+       str     r0, [r8, #8]            @ Save OLD_R0
+       mov     r0, sp
+       .endm
+
+       .macro  irq_restore_user_regs
+       ldmia   sp, {r0 - lr}^                  @ Calling r0 - lr
+       mov     r0, r0
+       ldr     lr, [sp, #S_PC]                 @ Get PC
+       add     sp, sp, #S_FRAME_SIZE
+       subs    pc, lr, #4              @ return & move spsr_svc into cpsr
+       .endm
+
+       .macro get_bad_stack
+       ldr     r13, IRQ_STACK_START_IN         @ setup our mode stack
+
+       str     lr, [r13]       @ save caller lr in position 0 of saved stack
+       mrs     lr, spsr        @ get the spsr
+       str     lr, [r13, #4]   @ save spsr in position 1 of saved stack
+       mov     r13, #MODE_SVC  @ prepare SVC-Mode
+       @ msr   spsr_c, r13
+       msr     spsr, r13       @ switch modes, make sure moves will execute
+       mov     lr, pc          @ capture return pc
+       movs    pc, lr          @ jump to next instruction & switch modes.
+       .endm
+
+       .macro get_irq_stack                    @ setup IRQ stack
+       ldr     sp, IRQ_STACK_START
+       .endm
+
+       .macro get_fiq_stack                    @ setup FIQ stack
+       ldr     sp, FIQ_STACK_START
+       .endm
+
+/*
+ * exception handlers
+ */
+
+       .align  5
+undefined_instruction:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_undefined_instruction
+
+       .align  5
+software_interrupt:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_software_interrupt
+
+       .align  5
+prefetch_abort:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_prefetch_abort
+
+       .align  5
+data_abort:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_data_abort
+
+       .align  5
+not_used:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_not_used
+
+#ifdef CONFIG_USE_IRQ
+
+       .align  5
+irq:
+       get_irq_stack
+       irq_save_user_regs
+       bl      do_irq
+       irq_restore_user_regs
+
+       .align  5
+fiq:
+       get_fiq_stack
+       /* someone ought to write a more effiction fiq_save_user_regs */
+       irq_save_user_regs
+       bl      do_fiq
+       irq_restore_user_regs
+
+#else
+
+       .align  5
+irq:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_irq
+
+       .align  5
+fiq:
+       get_bad_stack
+       bad_save_user_regs
+       bl      do_fiq
+
+#endif /* CONFIG_USE_IRQ */
+
+#endif /* CONFIG_SPL_BUILD */
index 86da706f08d2164349b485c47c988b566916d2c5..4b4cf93c2dc06d2c3aab7ad4dfb8f59cfc011dfe 100644 (file)
@@ -759,6 +759,54 @@ void bfin_reset_boot_spi_cs(unsigned short pin)
        udelay(1);
 }
 
+int name_to_gpio(const char *name)
+{
+       int port_base;
+
+       if (tolower(*name) == 'p') {
+               ++name;
+
+               switch (tolower(*name)) {
+#ifdef GPIO_PA0
+               case 'a': port_base = GPIO_PA0; break;
+#endif
+#ifdef GPIO_PB0
+               case 'b': port_base = GPIO_PB0; break;
+#endif
+#ifdef GPIO_PC0
+               case 'c': port_base = GPIO_PC0; break;
+#endif
+#ifdef GPIO_PD0
+               case 'd': port_base = GPIO_PD0; break;
+#endif
+#ifdef GPIO_PE0
+               case 'e': port_base = GPIO_PE0; break;
+#endif
+#ifdef GPIO_PF0
+               case 'f': port_base = GPIO_PF0; break;
+#endif
+#ifdef GPIO_PG0
+               case 'g': port_base = GPIO_PG0; break;
+#endif
+#ifdef GPIO_PH0
+               case 'h': port_base = GPIO_PH0; break;
+#endif
+#ifdef GPIO_PI0
+               case 'i': port_base = GPIO_PI0; break;
+#endif
+#ifdef GPIO_PJ
+               case 'j': port_base = GPIO_PJ0; break;
+#endif
+               default:  return -1;
+               }
+
+               ++name;
+       } else
+               port_base = 0;
+
+       return port_base + simple_strtoul(name, NULL, 10);
+}
+
 void gpio_labels(void)
 {
        int c, gpio;
index 6ebcf01aff87303a25557316ae05bf5e20768514..1fa1a8e6ecf79dc045660ba6d242e4b8bff43404 100644 (file)
@@ -160,55 +160,6 @@ static inline int gpio_is_valid(int number)
 
 #include <linux/ctype.h>
 
-static inline int name_to_gpio(const char *name)
-{
-       int port_base;
-
-       if (tolower(*name) == 'p') {
-               ++name;
-
-               switch (tolower(*name)) {
-#ifdef GPIO_PA0
-               case 'a': port_base = GPIO_PA0; break;
-#endif
-#ifdef GPIO_PB0
-               case 'b': port_base = GPIO_PB0; break;
-#endif
-#ifdef GPIO_PC0
-               case 'c': port_base = GPIO_PC0; break;
-#endif
-#ifdef GPIO_PD0
-               case 'd': port_base = GPIO_PD0; break;
-#endif
-#ifdef GPIO_PE0
-               case 'e': port_base = GPIO_PE0; break;
-#endif
-#ifdef GPIO_PF0
-               case 'f': port_base = GPIO_PF0; break;
-#endif
-#ifdef GPIO_PG0
-               case 'g': port_base = GPIO_PG0; break;
-#endif
-#ifdef GPIO_PH0
-               case 'h': port_base = GPIO_PH0; break;
-#endif
-#ifdef GPIO_PI0
-               case 'i': port_base = GPIO_PI0; break;
-#endif
-#ifdef GPIO_PJ
-               case 'j': port_base = GPIO_PJ0; break;
-#endif
-               default:  return -1;
-               }
-
-               ++name;
-       } else
-               port_base = 0;
-
-       return port_base + simple_strtoul(name, NULL, 10);
-}
-#define name_to_gpio(n) name_to_gpio(n)
-
 #define gpio_status() gpio_labels()
 
 #endif /* __ASSEMBLY__ */
index 1899f51872572fd57bc7bf65fd2307f2403c15e0..f4a234adbc1b8b610ed423bab2178640bdb74c30 100644 (file)
@@ -27,6 +27,8 @@ ENDIANNESS ?= -EB
 
 PLATFORM_CPPFLAGS += -DCONFIG_MIPS -D__MIPS__
 
+__HAVE_ARCH_GENERIC_BOARD := y
+
 #
 # From Linux arch/mips/Makefile
 #
@@ -52,4 +54,5 @@ PLATFORM_CPPFLAGS             += -msoft-float
 PLATFORM_LDFLAGS               += -G 0 -static -n -nostdlib $(ENDIANNESS)
 PLATFORM_RELFLAGS              += -ffunction-sections -fdata-sections
 LDFLAGS_FINAL                  += --gc-sections -pie
-OBJCOPYFLAGS                   += --remove-section=.dynsym
+OBJCOPYFLAGS                   += -j .text -j .rodata -j .data -j .got
+OBJCOPYFLAGS                   += -j .u_boot_list -j .rel.dyn
diff --git a/arch/mips/cpu/mips32/incaip/Makefile b/arch/mips/cpu/mips32/incaip/Makefile
deleted file mode 100644 (file)
index 7341a4a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2011
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = incaip_wdt.o
-obj-y  += incaip_clock.o asc_serial.o
diff --git a/arch/mips/cpu/mips32/incaip/asc_serial.c b/arch/mips/cpu/mips32/incaip/asc_serial.c
deleted file mode 100644 (file)
index 6f0e4f2..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * (INCA) ASC UART support
- */
-
-#include <config.h>
-#include <common.h>
-#include <asm/inca-ip.h>
-#include <serial.h>
-#include <linux/compiler.h>
-#include "asc_serial.h"
-
-
-#define SET_BIT(reg, mask)                  reg |= (mask)
-#define CLEAR_BIT(reg, mask)                reg &= (~mask)
-#define CLEAR_BITS(reg, mask)               CLEAR_BIT(reg, mask)
-#define SET_BITS(reg, mask)                 SET_BIT(reg, mask)
-#define SET_BITFIELD(reg, mask, off, val)   {reg &= (~mask); reg |= (val << off);}
-
-extern uint incaip_get_fpiclk(void);
-
-static int serial_setopt (void);
-
-/* pointer to ASC register base address */
-static volatile incaAsc_t *pAsc = (incaAsc_t *)INCA_IP_ASC;
-
-/******************************************************************************
-*
-* serial_init - initialize a INCAASC channel
-*
-* This routine initializes the number of data bits, parity
-* and set the selected baud rate. Interrupts are disabled.
-* Set the modem control signals if the option is selected.
-*
-* RETURNS: N/A
-*/
-
-static int asc_serial_init(void)
-{
-    /* we have to set PMU.EN13 bit to enable an ASC device*/
-    INCAASC_PMU_ENABLE(13);
-
-    /* and we have to set CLC register*/
-    CLEAR_BIT(pAsc->asc_clc, ASCCLC_DISS);
-    SET_BITFIELD(pAsc->asc_clc, ASCCLC_RMCMASK, ASCCLC_RMCOFFSET, 0x0001);
-
-    /* initialy we are in async mode */
-    pAsc->asc_con = ASCCON_M_8ASYNC;
-
-    /* select input port */
-    pAsc->asc_pisel = (CONSOLE_TTY & 0x1);
-
-    /* TXFIFO's filling level */
-    SET_BITFIELD(pAsc->asc_txfcon, ASCTXFCON_TXFITLMASK,
-                   ASCTXFCON_TXFITLOFF, INCAASC_TXFIFO_FL);
-    /* enable TXFIFO */
-    SET_BIT(pAsc->asc_txfcon, ASCTXFCON_TXFEN);
-
-    /* RXFIFO's filling level */
-    SET_BITFIELD(pAsc->asc_txfcon, ASCRXFCON_RXFITLMASK,
-                   ASCRXFCON_RXFITLOFF, INCAASC_RXFIFO_FL);
-    /* enable RXFIFO */
-    SET_BIT(pAsc->asc_rxfcon, ASCRXFCON_RXFEN);
-
-    /* enable error signals */
-    SET_BIT(pAsc->asc_con, ASCCON_FEN);
-    SET_BIT(pAsc->asc_con, ASCCON_OEN);
-
-    /* acknowledge ASC interrupts */
-    ASC_INTERRUPTS_CLEAR(INCAASC_IRQ_LINE_ALL);
-
-    /* disable ASC interrupts */
-    ASC_INTERRUPTS_DISABLE(INCAASC_IRQ_LINE_ALL);
-
-    /* set FIFOs into the transparent mode */
-    SET_BIT(pAsc->asc_txfcon, ASCTXFCON_TXTMEN);
-    SET_BIT(pAsc->asc_rxfcon, ASCRXFCON_RXTMEN);
-
-    /* set baud rate */
-    serial_setbrg();
-
-    /* set the options */
-    serial_setopt();
-
-    return 0;
-}
-
-static void asc_serial_setbrg(void)
-{
-    ulong      uiReloadValue, fdv;
-    ulong      f_ASC;
-
-    f_ASC = incaip_get_fpiclk();
-
-#ifndef INCAASC_USE_FDV
-    fdv = 2;
-    uiReloadValue = (f_ASC / (fdv * 16 * CONFIG_BAUDRATE)) - 1;
-#else
-    fdv = INCAASC_FDV_HIGH_BAUDRATE;
-    uiReloadValue = (f_ASC / (8192 * CONFIG_BAUDRATE / fdv)) - 1;
-#endif /* INCAASC_USE_FDV */
-
-    if ( (uiReloadValue < 0) || (uiReloadValue > 8191) )
-    {
-#ifndef INCAASC_USE_FDV
-       fdv = 3;
-       uiReloadValue = (f_ASC / (fdv * 16 * CONFIG_BAUDRATE)) - 1;
-#else
-       fdv = INCAASC_FDV_LOW_BAUDRATE;
-       uiReloadValue = (f_ASC / (8192 * CONFIG_BAUDRATE / fdv)) - 1;
-#endif /* INCAASC_USE_FDV */
-
-       if ( (uiReloadValue < 0) || (uiReloadValue > 8191) )
-       {
-           return;    /* can't impossibly generate that baud rate */
-       }
-    }
-
-    /* Disable Baud Rate Generator; BG should only be written when R=0 */
-    CLEAR_BIT(pAsc->asc_con, ASCCON_R);
-
-#ifndef INCAASC_USE_FDV
-    /*
-     * Disable Fractional Divider (FDE)
-     * Divide clock by reload-value + constant (BRS)
-     */
-    /* FDE = 0 */
-    CLEAR_BIT(pAsc->asc_con, ASCCON_FDE);
-
-    if ( fdv == 2 )
-       CLEAR_BIT(pAsc->asc_con, ASCCON_BRS);   /* BRS = 0 */
-    else
-       SET_BIT(pAsc->asc_con, ASCCON_BRS); /* BRS = 1 */
-
-#else /* INCAASC_USE_FDV */
-
-    /* Enable Fractional Divider */
-    SET_BIT(pAsc->asc_con, ASCCON_FDE); /* FDE = 1 */
-
-    /* Set fractional divider value */
-    pAsc->asc_fdv = fdv & ASCFDV_VALUE_MASK;
-
-#endif /* INCAASC_USE_FDV */
-
-    /* Set reload value in BG */
-    pAsc->asc_bg = uiReloadValue;
-
-    /* Enable Baud Rate Generator */
-    SET_BIT(pAsc->asc_con, ASCCON_R);           /* R = 1 */
-}
-
-/*******************************************************************************
-*
-* serial_setopt - set the serial options
-*
-* Set the channel operating mode to that specified. Following options
-* are supported: CREAD, CSIZE, PARENB, and PARODD.
-*
-* Note, this routine disables the transmitter.  The calling routine
-* may have to re-enable it.
-*
-* RETURNS:
-* Returns 0 to indicate success, otherwise -1 is returned
-*/
-
-static int serial_setopt (void)
-{
-    ulong  con;
-
-    switch ( ASC_OPTIONS & ASCOPT_CSIZE )
-    {
-    /* 7-bit-data */
-    case ASCOPT_CS7:
-       con = ASCCON_M_7ASYNCPAR;   /* 7-bit-data and parity bit */
-       break;
-
-    /* 8-bit-data */
-    case ASCOPT_CS8:
-       if ( ASC_OPTIONS & ASCOPT_PARENB )
-           con = ASCCON_M_8ASYNCPAR;   /* 8-bit-data and parity bit */
-       else
-           con = ASCCON_M_8ASYNC;      /* 8-bit-data no parity */
-       break;
-
-    /*
-     *  only 7 and 8-bit frames are supported
-     *  if we don't use IOCTL extensions
-     */
-    default:
-       return -1;
-    }
-
-    if ( ASC_OPTIONS & ASCOPT_STOPB )
-       SET_BIT(con, ASCCON_STP);       /* 2 stop bits */
-    else
-       CLEAR_BIT(con, ASCCON_STP);     /* 1 stop bit */
-
-    if ( ASC_OPTIONS & ASCOPT_PARENB )
-       SET_BIT(con, ASCCON_PEN);           /* enable parity checking */
-    else
-       CLEAR_BIT(con, ASCCON_PEN);         /* disable parity checking */
-
-    if ( ASC_OPTIONS & ASCOPT_PARODD )
-       SET_BIT(con, ASCCON_ODD);       /* odd parity */
-    else
-       CLEAR_BIT(con, ASCCON_ODD);     /* even parity */
-
-    if ( ASC_OPTIONS & ASCOPT_CREAD )
-       SET_BIT(pAsc->asc_whbcon, ASCWHBCON_SETREN); /* Receiver enable */
-
-    pAsc->asc_con |= con;
-
-    return 0;
-}
-
-static void asc_serial_putc(const char c)
-{
-    uint txFl = 0;
-
-    if (c == '\n') serial_putc ('\r');
-
-    /* check do we have a free space in the TX FIFO */
-    /* get current filling level */
-    do
-    {
-       txFl = ( pAsc->asc_fstat & ASCFSTAT_TXFFLMASK ) >> ASCFSTAT_TXFFLOFF;
-    }
-    while ( txFl == INCAASC_TXFIFO_FULL );
-
-    pAsc->asc_tbuf = c; /* write char to Transmit Buffer Register */
-
-    /* check for errors */
-    if ( pAsc->asc_con & ASCCON_OE )
-    {
-       SET_BIT(pAsc->asc_whbcon, ASCWHBCON_CLROE);
-       return;
-    }
-}
-
-static int asc_serial_getc(void)
-{
-    ulong symbol_mask;
-    char c;
-
-    while (!serial_tstc());
-
-    symbol_mask =
-       ((ASC_OPTIONS & ASCOPT_CSIZE) == ASCOPT_CS7) ? (0x7f) : (0xff);
-
-    c = (char)(pAsc->asc_rbuf & symbol_mask);
-
-    return c;
-}
-
-static int asc_serial_tstc(void)
-{
-    int res = 1;
-
-    if ( (pAsc->asc_fstat & ASCFSTAT_RXFFLMASK) == 0 )
-    {
-       res = 0;
-    }
-    else if ( pAsc->asc_con & ASCCON_FE )
-    {
-       SET_BIT(pAsc->asc_whbcon, ASCWHBCON_CLRFE);
-       res = 0;
-    }
-    else if ( pAsc->asc_con & ASCCON_PE )
-    {
-       SET_BIT(pAsc->asc_whbcon, ASCWHBCON_CLRPE);
-       res = 0;
-    }
-    else if ( pAsc->asc_con & ASCCON_OE )
-    {
-       SET_BIT(pAsc->asc_whbcon, ASCWHBCON_CLROE);
-       res = 0;
-    }
-
-    return res;
-}
-
-static struct serial_device asc_serial_drv = {
-       .name   = "asc_serial",
-       .start  = asc_serial_init,
-       .stop   = NULL,
-       .setbrg = asc_serial_setbrg,
-       .putc   = asc_serial_putc,
-       .puts   = default_serial_puts,
-       .getc   = asc_serial_getc,
-       .tstc   = asc_serial_tstc,
-};
-
-void asc_serial_initialize(void)
-{
-       serial_register(&asc_serial_drv);
-}
-
-__weak struct serial_device *default_serial_console(void)
-{
-       return &asc_serial_drv;
-}
diff --git a/arch/mips/cpu/mips32/incaip/asc_serial.h b/arch/mips/cpu/mips32/incaip/asc_serial.h
deleted file mode 100644 (file)
index 7ffdcfa..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/* incaAscSio.h - (INCA) ASC UART tty driver header */
-
-#ifndef __INCincaAscSioh
-#define __INCincaAscSioh
-
-#include <asm/inca-ip.h>
-
-/* channel operating modes */
-#define        ASCOPT_CSIZE    0x00000003
-#define        ASCOPT_CS7      0x00000001
-#define        ASCOPT_CS8      0x00000002
-#define        ASCOPT_PARENB   0x00000004
-#define        ASCOPT_STOPB    0x00000008
-#define        ASCOPT_PARODD   0x00000010
-#define        ASCOPT_CREAD    0x00000020
-
-#define ASC_OPTIONS            (ASCOPT_CREAD | ASCOPT_CS8)
-
-/* ASC input select (0 or 1) */
-#define CONSOLE_TTY    0
-
-/* use fractional divider for baudrate settings */
-#define INCAASC_USE_FDV
-
-#ifdef INCAASC_USE_FDV
-   #define INCAASC_FDV_LOW_BAUDRATE        71
-   #define INCAASC_FDV_HIGH_BAUDRATE       453
-#endif /*INCAASC_USE_FDV*/
-
-
-#define INCAASC_TXFIFO_FL       1
-#define INCAASC_RXFIFO_FL       1
-#define INCAASC_TXFIFO_FULL     16
-
-/* interrupt lines masks for the ASC device interrupts*/
-/* change these macroses if it's necessary */
-#define INCAASC_IRQ_LINE_ALL        0x000F0000  /* all IRQs */
-
-#define INCAASC_IRQ_LINE_TIR            0x00010000      /* TIR - Tx */
-#define INCAASC_IRQ_LINE_RIR            0x00020000      /* RIR - Rx */
-#define INCAASC_IRQ_LINE_EIR            0x00040000      /* EIR - Err */
-#define INCAASC_IRQ_LINE_TBIR           0x00080000      /* TBIR - Tx Buf*/
-
-/* interrupt controller access macros */
-#define ASC_INTERRUPTS_ENABLE(X)  \
-   *((volatile unsigned int*) INCA_IP_ICU_IM2_IER) |= X;
-#define ASC_INTERRUPTS_DISABLE(X) \
-   *((volatile unsigned int*) INCA_IP_ICU_IM2_IER) &= ~X;
-#define ASC_INTERRUPTS_CLEAR(X)   \
-   *((volatile unsigned int*) INCA_IP_ICU_IM2_ISR) = X;
-
-/* CLC register's bits and bitfields */
-#define ASCCLC_DISR        0x00000001
-#define ASCCLC_DISS        0x00000002
-#define ASCCLC_RMCMASK     0x0000FF00
-#define ASCCLC_RMCOFFSET   8
-
-/* CON register's bits and bitfields */
-#define ASCCON_MODEMASK 0x0007
-    #define ASCCON_M_8SYNC          0x0
-    #define ASCCON_M_8ASYNC         0x1
-    #define ASCCON_M_8IRDAASYNC     0x2
-    #define ASCCON_M_7ASYNCPAR      0x3
-    #define ASCCON_M_9ASYNC         0x4
-    #define ASCCON_M_8WAKEUPASYNC   0x5
-    #define ASCCON_M_8ASYNCPAR      0x7
-#define ASCCON_STP      0x0008
-#define ASCCON_REN      0x0010
-#define ASCCON_PEN      0x0020
-#define ASCCON_FEN      0x0040
-#define ASCCON_OEN      0x0080
-#define ASCCON_PE       0x0100
-#define ASCCON_FE       0x0200
-#define ASCCON_OE       0x0400
-#define ASCCON_FDE      0x0800
-#define ASCCON_ODD      0x1000
-#define ASCCON_BRS      0x2000
-#define ASCCON_LB       0x4000
-#define ASCCON_R        0x8000
-
-/* WHBCON register's bits and bitfields */
-#define ASCWHBCON_CLRREN    0x0010
-#define ASCWHBCON_SETREN    0x0020
-#define ASCWHBCON_CLRPE     0x0100
-#define ASCWHBCON_CLRFE     0x0200
-#define ASCWHBCON_CLROE     0x0400
-#define ASCWHBCON_SETPE     0x0800
-#define ASCWHBCON_SETFE     0x1000
-#define ASCWHBCON_SETOE     0x2000
-
-/* ABCON register's bits and bitfields */
-#define ASCABCON_ABEN       0x0001
-#define ASCABCON_AUREN      0x0002
-#define ASCABCON_ABSTEN     0x0004
-#define ASCABCON_ABDETEN    0x0008
-#define ASCABCON_FCDETEN    0x0010
-#define ASCABCON_EMMASK     0x0300
-    #define ASCABCON_EMOFF          8
-       #define ASCABCON_EM_DISAB       0x0
-       #define ASCABCON_EM_DURAB       0x1
-       #define ASCABCON_EM_ALWAYS      0x2
-#define ASCABCON_TXINV      0x0400
-#define ASCABCON_RXINV      0x0800
-
-/* FDV register mask, offset and bitfields*/
-#define ASCFDV_VALUE_MASK     0x000001FF
-
-/* WHBABCON register's bits and bitfields */
-#define ASCWHBABCON_SETABEN     0x0001
-#define ASCWHBABCON_CLRABEN     0x0002
-
-/* ABSTAT register's bits and bitfields */
-#define ASCABSTAT_FCSDET    0x0001
-#define ASCABSTAT_FCCDET    0x0002
-#define ASCABSTAT_SCSDET    0x0004
-#define ASCABSTAT_SCCDET    0x0008
-#define ASCABSTAT_DETWAIT   0x0010
-
-/* WHBABSTAT register's bits and bitfields */
-#define ASCWHBABSTAT_CLRFCSDET  0x0001
-#define ASCWHBABSTAT_SETFCSDET  0x0002
-#define ASCWHBABSTAT_CLRFCCDET  0x0004
-#define ASCWHBABSTAT_SETFCCDET  0x0008
-#define ASCWHBABSTAT_CLRSCSDET  0x0010
-#define ASCWHBABSTAT_SETSCSDET  0x0020
-#define ASCWHBABSTAT_SETSCCDET  0x0040
-#define ASCWHBABSTAT_CLRSCCDET  0x0080
-#define ASCWHBABSTAT_CLRDETWAIT 0x0100
-#define ASCWHBABSTAT_SETDETWAIT 0x0200
-
-/* TXFCON register's bits and bitfields */
-#define ASCTXFCON_TXFEN         0x0001
-#define ASCTXFCON_TXFFLU        0x0002
-#define ASCTXFCON_TXTMEN        0x0004
-#define ASCTXFCON_TXFITLMASK    0x3F00
-#define ASCTXFCON_TXFITLOFF     8
-
-/* RXFCON register's bits and bitfields */
-#define ASCRXFCON_RXFEN         0x0001
-#define ASCRXFCON_RXFFLU        0x0002
-#define ASCRXFCON_RXTMEN        0x0004
-#define ASCRXFCON_RXFITLMASK    0x3F00
-#define ASCRXFCON_RXFITLOFF     8
-
-/* FSTAT register's bits and bitfields */
-#define ASCFSTAT_RXFFLMASK      0x003F
-#define ASCFSTAT_TXFFLMASK      0x3F00
-#define ASCFSTAT_TXFFLOFF       8
-
-#define INCAASC_PMU_ENABLE(BIT) *((volatile ulong*)0xBF102000) |= (0x1 << BIT);
-
-typedef  struct         /* incaAsc_t */
-{
-    volatile unsigned long  asc_clc;                            /*0x0000*/
-    volatile unsigned long  asc_pisel;                          /*0x0004*/
-    volatile unsigned long  asc_rsvd1[2];   /* for mapping */   /*0x0008*/
-    volatile unsigned long  asc_con;                            /*0x0010*/
-    volatile unsigned long  asc_bg;                             /*0x0014*/
-    volatile unsigned long  asc_fdv;                            /*0x0018*/
-    volatile unsigned long  asc_pmw;        /* not used */      /*0x001C*/
-    volatile unsigned long  asc_tbuf;                           /*0x0020*/
-    volatile unsigned long  asc_rbuf;                           /*0x0024*/
-    volatile unsigned long  asc_rsvd2[2];   /* for mapping */   /*0x0028*/
-    volatile unsigned long  asc_abcon;                          /*0x0030*/
-    volatile unsigned long  asc_abstat;     /* not used */      /*0x0034*/
-    volatile unsigned long  asc_rsvd3[2];   /* for mapping */   /*0x0038*/
-    volatile unsigned long  asc_rxfcon;                         /*0x0040*/
-    volatile unsigned long  asc_txfcon;                         /*0x0044*/
-    volatile unsigned long  asc_fstat;                          /*0x0048*/
-    volatile unsigned long  asc_rsvd4;      /* for mapping */   /*0x004C*/
-    volatile unsigned long  asc_whbcon;                         /*0x0050*/
-    volatile unsigned long  asc_whbabcon;                       /*0x0054*/
-    volatile unsigned long  asc_whbabstat;  /* not used */      /*0x0058*/
-
-} incaAsc_t;
-
-#endif /* __INCincaAscSioh */
diff --git a/arch/mips/cpu/mips32/incaip/config.mk b/arch/mips/cpu/mips32/incaip/config.mk
deleted file mode 100644 (file)
index 5c89129..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2011
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -mtune=4kc
diff --git a/arch/mips/cpu/mips32/incaip/incaip_clock.c b/arch/mips/cpu/mips32/incaip/incaip_clock.c
deleted file mode 100644 (file)
index efada9f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/inca-ip.h>
-
-
-/*******************************************************************************
-*
-* get_cpuclk - returns the frequency of the CPU.
-*
-* Gets the value directly from the INCA-IP hardware.
-*
-* RETURNS:
-*          150.000.000 for 150 MHz
-*          133.333.333 for 133 MHz (= 400MHz/3)
-*          100.000.000 for 100 MHz (= 400MHz/4)
-* NOTE:
-*   This functions should be used by the hardware driver to get the correct
-*   frequency of the CPU. Don't use the macros, which are set to init the CPU
-*   frequency in the ROM code.
-*/
-uint incaip_get_cpuclk (void)
-{
-       /*-------------------------------------------------------------------------*/
-       /* CPU Clock Input Multiplexer (MUX I)                                     */
-       /* Multiplexer MUX I selects the maximum input clock to the CPU.           */
-       /*-------------------------------------------------------------------------*/
-       if (*((volatile ulong *) INCA_IP_CGU_CGU_MUXCR) &
-           INCA_IP_CGU_CGU_MUXCR_MUXI) {
-               /* MUX I set to 150 MHz clock */
-               return 150000000;
-       } else {
-               /* MUX I set to 100/133 MHz clock */
-               if (*((volatile ulong *) INCA_IP_CGU_CGU_DIVCR) & 0x40) {
-                       /* Division value is 1/3, maximum CPU operating */
-                       /* frequency is 133.3 MHz                       */
-                       return 133333333;
-               } else {
-                       /* Division value is 1/4, maximum CPU operating */
-                       /* frequency is 100 MHz                         */
-                       return 100000000;
-               }
-       }
-}
-
-/*******************************************************************************
-*
-* get_fpiclk - returns the frequency of the FPI bus.
-*
-* Gets the value directly from the INCA-IP hardware.
-*
-* RETURNS: Frquency in Hz
-*
-* NOTE:
-*   This functions should be used by the hardware driver to get the correct
-*   frequency of the CPU. Don't use the macros, which are set to init the CPU
-*   frequency in the ROM code.
-*   The calculation for the
-*/
-uint incaip_get_fpiclk (void)
-{
-       uint clkCPU;
-
-       clkCPU = incaip_get_cpuclk ();
-
-       switch (*((volatile ulong *) INCA_IP_CGU_CGU_DIVCR) & 0xC) {
-       case 0x4:
-               return clkCPU >> 1;     /* devided by 2 */
-               break;
-       case 0x8:
-               return clkCPU >> 2;     /* devided by 4 */
-               break;
-       default:
-               return clkCPU;
-               break;
-       }
-}
-
-int incaip_set_cpuclk (void)
-{
-       extern void ebu_init(long);
-       extern void cgu_init(long);
-       extern void sdram_init(long);
-       char tmp[64];
-       ulong cpuclk;
-
-       if (getenv_f("cpuclk", tmp, sizeof (tmp)) > 0) {
-               cpuclk = simple_strtoul (tmp, NULL, 10) * 1000000;
-               cgu_init (cpuclk);
-               ebu_init (cpuclk);
-               sdram_init (cpuclk);
-       }
-
-       return 0;
-}
diff --git a/arch/mips/cpu/mips32/incaip/incaip_wdt.S b/arch/mips/cpu/mips32/incaip/incaip_wdt.S
deleted file mode 100644 (file)
index b15320a..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  INCA-IP Watchdog timer management code.
- *
- *  Copyright (c) 2003 Wolfgang Denk <wd@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <config.h>
-#include <asm/regdef.h>
-
-
-#define WD_BASE            0xb8000000
-#define WD_CON0(value)     0x0020(value)
-#define WD_CON1(value)     0x0024(value)
-#define WD_DISABLE         0x00000008
-#define WD_ENABLE          0x00000000
-#define WD_WRITE_PW        0xFFFC00F8
-#define WD_WRITE_ENDINIT   0xFFFC00F3
-#define WD_WRITE_INIT      0xFFFC00F2
-
-
-       .globl  disable_incaip_wdt
-disable_incaip_wdt:
-       li      t0, WD_BASE
-
-       /* Calculate password.
-        */
-       lw      t2, WD_CON1(t0)
-       and     t2, 0xC
-
-       lw      t3, WD_CON0(t0)
-       and     t3, 0xFFFFFF01
-
-       or      t3, t2
-       or      t3, 0xF0
-
-       sw      t3, WD_CON0(t0)         /* write password */
-
-       /* Clear ENDINIT.
-        */
-       li      t1, WD_WRITE_INIT
-       sw      t1, WD_CON0(t0)
-
-
-       li      t1, WD_DISABLE
-       sw      t1, WD_CON1(t0)         /* disable watchdog */
-       li      t1, WD_WRITE_PW
-       sw      t1, WD_CON0(t0)         /* write password */
-       li      t1, WD_WRITE_ENDINIT
-       sw      t1, WD_CON0(t0)         /* end command */
-
-       jr      ra
-       nop
index a7e2ed046adaf61659a844ea235b332c35e6b720..275fcf569966e062dd146c26319c0cb3907a86ab 100644 (file)
@@ -7,6 +7,11 @@
 
 #include <common.h>
 
+int interrupt_init(void)
+{
+       return 0;
+}
+
 void enable_interrupts(void)
 {
 }
index a7e2ed046adaf61659a844ea235b332c35e6b720..275fcf569966e062dd146c26319c0cb3907a86ab 100644 (file)
@@ -7,6 +7,11 @@
 
 #include <common.h>
 
+int interrupt_init(void)
+{
+       return 0;
+}
+
 void enable_interrupts(void)
 {
 }
index 16a9d6ac5797339913fa46a5782b242ae8315a9b..e504ea754403a23df0bd81b0079a2f9e40739a56 100644 (file)
@@ -53,6 +53,7 @@ SECTIONS
 
        . = ALIGN(4);
        __image_copy_end = .;
+       __init_end = .;
 
        .rel.dyn : {
                __rel_dyn_start = .;
@@ -60,27 +61,7 @@ SECTIONS
                __rel_dyn_end = .;
        }
 
-       .deadcode : {
-               /*
-                * 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);
-       }
-
-       .dynsym : {
-               *(.dynsym)
-       }
+       _end = .;
 
        .bss __rel_dyn_start (OVERLAY) : {
                __bss_start = .;
@@ -91,15 +72,39 @@ SECTIONS
                __bss_end = .;
        }
 
-       /DISCARD/ : {
+       .dynsym _end : {
+               *(.dynsym)
+       }
+
+       .dynbss : {
                *(.dynbss)
+       }
+
+       .dynstr : {
                *(.dynstr)
+       }
+
+       .dynamic : {
                *(.dynamic)
+       }
+
+       .plt : {
+               *(.plt)
+       }
+
+       .interp : {
                *(.interp)
+       }
+
+       .gnu : {
+               *(.gnu*)
+       }
+
+       .MIPS.stubs : {
+               *(.MIPS.stubs)
+       }
+
+       .hash : {
                *(.hash)
-               *(.gnu.*)
-               *(.plt)
-               *(.got.plt)
-               *(.rel.plt)
        }
 }
diff --git a/arch/mips/cpu/xburst/Makefile b/arch/mips/cpu/xburst/Makefile
deleted file mode 100644 (file)
index 57714d0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) 2011 Xiangfu Liu <xiangfu@openmobilefree.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-extra-y        = start.o
-obj-y  = cpu.o timer.o jz_serial.o
-obj-$(CONFIG_JZ4740) += jz4740.o
diff --git a/arch/mips/cpu/xburst/config.mk b/arch/mips/cpu/xburst/config.mk
deleted file mode 100644 (file)
index b8e53e5..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Copyright (C) 2011 Xiangfu Liu <xiangfu@openmobilefree.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=mips32
-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
diff --git a/arch/mips/cpu/xburst/cpu.c b/arch/mips/cpu/xburst/cpu.c
deleted file mode 100644 (file)
index 1fdaa32..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
- * (C) Copyright 2011
- * Xiangfu Liu <xiangfu@openmobilefree.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <netdev.h>
-#include <asm/mipsregs.h>
-#include <asm/cacheops.h>
-#include <asm/reboot.h>
-#include <asm/io.h>
-#include <asm/jz4740.h>
-
-#define cache_op(op, addr)             \
-       __asm__ __volatile__(           \
-               ".set   push\n"         \
-               ".set   noreorder\n"    \
-               ".set   mips3\n"        \
-               "cache  %0, %1\n"       \
-               ".set   pop\n"          \
-               :                       \
-               : "i" (op), "R" (*(unsigned char *)(addr)))
-
-void __attribute__((weak)) _machine_restart(void)
-{
-       struct jz4740_wdt *wdt = (struct jz4740_wdt *)JZ4740_WDT_BASE;
-       struct jz4740_tcu *tcu = (struct jz4740_tcu *)JZ4740_TCU_BASE;
-       u16 tmp;
-
-       /* wdt_select_extalclk() */
-       tmp = readw(&wdt->tcsr);
-       tmp &= ~(WDT_TCSR_EXT_EN | WDT_TCSR_RTC_EN | WDT_TCSR_PCK_EN);
-       tmp |= WDT_TCSR_EXT_EN;
-       writew(tmp, &wdt->tcsr);
-
-       /* wdt_select_clk_div64() */
-       tmp = readw(&wdt->tcsr);
-       tmp &= ~WDT_TCSR_PRESCALE_MASK;
-       tmp |= WDT_TCSR_PRESCALE64,
-       writew(tmp, &wdt->tcsr);
-
-       writew(100, &wdt->tdr); /* wdt_set_data(100) */
-       writew(0, &wdt->tcnt); /* wdt_set_count(0); */
-       writel(TCU_TSSR_WDTSC, &tcu->tscr); /* tcu_start_wdt_clock */
-       writeb(readb(&wdt->tcer) | WDT_TCER_TCEN, &wdt->tcer); /* wdt start */
-
-       while (1)
-               ;
-}
-
-int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       _machine_restart();
-
-       fprintf(stderr, "*** reset failed ***\n");
-       return 0;
-}
-
-void flush_cache(ulong start_addr, ulong size)
-{
-       unsigned long lsize = CONFIG_SYS_CACHELINE_SIZE;
-       unsigned long addr = start_addr & ~(lsize - 1);
-       unsigned long aend = (start_addr + size - 1) & ~(lsize - 1);
-
-       for (; addr <= aend; addr += lsize) {
-               cache_op(HIT_WRITEBACK_INV_D, addr);
-               cache_op(HIT_INVALIDATE_I, addr);
-       }
-}
-
-void flush_dcache_range(ulong start_addr, ulong stop)
-{
-       unsigned long lsize = CONFIG_SYS_CACHELINE_SIZE;
-       unsigned long addr = start_addr & ~(lsize - 1);
-       unsigned long aend = (stop - 1) & ~(lsize - 1);
-
-       for (; addr <= aend; addr += lsize)
-               cache_op(HIT_WRITEBACK_INV_D, addr);
-}
-
-void invalidate_dcache_range(ulong start_addr, ulong stop)
-{
-       unsigned long lsize = CONFIG_SYS_CACHELINE_SIZE;
-       unsigned long addr = start_addr & ~(lsize - 1);
-       unsigned long aend = (stop - 1) & ~(lsize - 1);
-
-       for (; addr <= aend; addr += lsize)
-               cache_op(HIT_INVALIDATE_D, addr);
-}
-
-void flush_icache_all(void)
-{
-       u32 addr, t = 0;
-
-       __asm__ __volatile__("mtc0 $0, $28"); /* Clear Taglo */
-       __asm__ __volatile__("mtc0 $0, $29"); /* Clear TagHi */
-
-       for (addr = CKSEG0; addr < CKSEG0 + CONFIG_SYS_ICACHE_SIZE;
-            addr += CONFIG_SYS_CACHELINE_SIZE) {
-               cache_op(INDEX_STORE_TAG_I, addr);
-       }
-
-       /* invalidate btb */
-       __asm__ __volatile__(
-               ".set mips32\n\t"
-               "mfc0 %0, $16, 7\n\t"
-               "nop\n\t"
-               "ori %0,2\n\t"
-               "mtc0 %0, $16, 7\n\t"
-               ".set mips2\n\t"
-               :
-               : "r" (t));
-}
-
-void flush_dcache_all(void)
-{
-       u32 addr;
-
-       for (addr = CKSEG0; addr < CKSEG0 + CONFIG_SYS_DCACHE_SIZE;
-            addr += CONFIG_SYS_CACHELINE_SIZE) {
-               cache_op(INDEX_WRITEBACK_INV_D, addr);
-       }
-
-       __asm__ __volatile__("sync");
-}
-
-void flush_cache_all(void)
-{
-       flush_dcache_all();
-       flush_icache_all();
-}
diff --git a/arch/mips/cpu/xburst/jz4740.c b/arch/mips/cpu/xburst/jz4740.c
deleted file mode 100644 (file)
index 30f35bd..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Jz4740 common routines
- * Copyright (c) 2006 Ingenic Semiconductor, <jlwei@ingenic.cn>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <asm/io.h>
-#include <asm/jz4740.h>
-
-void enable_interrupts(void)
-{
-}
-
-int disable_interrupts(void)
-{
-       return 0;
-}
-
-/*
- * PLL output clock = EXTAL * NF / (NR * NO)
- * NF = FD + 2, NR = RD + 2
- * NO = 1 (if OD = 0), NO = 2 (if OD = 1 or 2), NO = 4 (if OD = 3)
- */
-void pll_init(void)
-{
-       struct jz4740_cpm *cpm = (struct jz4740_cpm *)JZ4740_CPM_BASE;
-
-       register unsigned int cfcr, plcr1;
-       int n2FR[33] = {
-               0, 0, 1, 2, 3, 0, 4, 0, 5, 0, 0, 0, 6, 0, 0, 0,
-               7, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
-               9
-       };
-       int div[5] = {1, 3, 3, 3, 3}; /* divisors of I:S:P:L:M */
-       int nf, pllout2;
-
-       cfcr =  CPM_CPCCR_CLKOEN |
-               CPM_CPCCR_PCS |
-               (n2FR[div[0]] << CPM_CPCCR_CDIV_BIT) |
-               (n2FR[div[1]] << CPM_CPCCR_HDIV_BIT) |
-               (n2FR[div[2]] << CPM_CPCCR_PDIV_BIT) |
-               (n2FR[div[3]] << CPM_CPCCR_MDIV_BIT) |
-               (n2FR[div[4]] << CPM_CPCCR_LDIV_BIT);
-
-       pllout2 = (cfcr & CPM_CPCCR_PCS) ?
-               CONFIG_SYS_CPU_SPEED : (CONFIG_SYS_CPU_SPEED / 2);
-
-       /* Init USB Host clock, pllout2 must be n*48MHz */
-       writel(pllout2 / 48000000 - 1, &cpm->uhccdr);
-
-       nf = CONFIG_SYS_CPU_SPEED * 2 / CONFIG_SYS_EXTAL;
-       plcr1 = ((nf - 2) << CPM_CPPCR_PLLM_BIT) | /* FD */
-               (0 << CPM_CPPCR_PLLN_BIT) |     /* RD=0, NR=2 */
-               (0 << CPM_CPPCR_PLLOD_BIT) |    /* OD=0, NO=1 */
-               (0x20 << CPM_CPPCR_PLLST_BIT) | /* PLL stable time */
-               CPM_CPPCR_PLLEN;                /* enable PLL */
-
-       /* init PLL */
-       writel(cfcr, &cpm->cpccr);
-       writel(plcr1, &cpm->cppcr);
-}
-
-void sdram_init(void)
-{
-       struct jz4740_emc *emc = (struct jz4740_emc *)JZ4740_EMC_BASE;
-
-       register unsigned int dmcr0, dmcr, sdmode, tmp, cpu_clk, mem_clk, ns;
-
-       unsigned int cas_latency_sdmr[2] = {
-               EMC_SDMR_CAS_2,
-               EMC_SDMR_CAS_3,
-       };
-
-       unsigned int cas_latency_dmcr[2] = {
-               1 << EMC_DMCR_TCL_BIT,  /* CAS latency is 2 */
-               2 << EMC_DMCR_TCL_BIT   /* CAS latency is 3 */
-       };
-
-       int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
-
-       cpu_clk = CONFIG_SYS_CPU_SPEED;
-       mem_clk = cpu_clk * div[__cpm_get_cdiv()] / div[__cpm_get_mdiv()];
-
-       writel(0, &emc->bcr);   /* Disable bus release */
-       writew(0, &emc->rtcsr); /* Disable clock for counting */
-
-       /* Fault DMCR value for mode register setting*/
-#define SDRAM_ROW0     11
-#define SDRAM_COL0     8
-#define SDRAM_BANK40   0
-
-       dmcr0 = ((SDRAM_ROW0 - 11) << EMC_DMCR_RA_BIT) |
-               ((SDRAM_COL0 - 8) << EMC_DMCR_CA_BIT) |
-               (SDRAM_BANK40 << EMC_DMCR_BA_BIT) |
-               (SDRAM_BW16 << EMC_DMCR_BW_BIT) |
-               EMC_DMCR_EPIN |
-               cas_latency_dmcr[((SDRAM_CASL == 3) ? 1 : 0)];
-
-       /* Basic DMCR value */
-       dmcr = ((SDRAM_ROW - 11) << EMC_DMCR_RA_BIT) |
-               ((SDRAM_COL - 8) << EMC_DMCR_CA_BIT) |
-               (SDRAM_BANK4 << EMC_DMCR_BA_BIT) |
-               (SDRAM_BW16 << EMC_DMCR_BW_BIT) |
-               EMC_DMCR_EPIN |
-               cas_latency_dmcr[((SDRAM_CASL == 3) ? 1 : 0)];
-
-       /* SDRAM timimg */
-       ns = 1000000000 / mem_clk;
-       tmp = SDRAM_TRAS / ns;
-       if (tmp < 4)
-               tmp = 4;
-       if (tmp > 11)
-               tmp = 11;
-       dmcr |= (tmp - 4) << EMC_DMCR_TRAS_BIT;
-       tmp = SDRAM_RCD / ns;
-
-       if (tmp > 3)
-               tmp = 3;
-       dmcr |= tmp << EMC_DMCR_RCD_BIT;
-       tmp = SDRAM_TPC / ns;
-
-       if (tmp > 7)
-               tmp = 7;
-       dmcr |= tmp << EMC_DMCR_TPC_BIT;
-       tmp = SDRAM_TRWL / ns;
-
-       if (tmp > 3)
-               tmp = 3;
-       dmcr |= tmp << EMC_DMCR_TRWL_BIT;
-       tmp = (SDRAM_TRAS + SDRAM_TPC) / ns;
-
-       if (tmp > 14)
-               tmp = 14;
-       dmcr |= ((tmp + 1) >> 1) << EMC_DMCR_TRC_BIT;
-
-       /* SDRAM mode value */
-       sdmode = EMC_SDMR_BT_SEQ |
-                EMC_SDMR_OM_NORMAL |
-                EMC_SDMR_BL_4 |
-                cas_latency_sdmr[((SDRAM_CASL == 3) ? 1 : 0)];
-
-       /* Stage 1. Precharge all banks by writing SDMR with DMCR.MRSET=0 */
-       writel(dmcr, &emc->dmcr);
-       writeb(0, JZ4740_EMC_SDMR0 | sdmode);
-
-       /* Wait for precharge, > 200us */
-       tmp = (cpu_clk / 1000000) * 1000;
-       while (tmp--)
-               ;
-
-       /* Stage 2. Enable auto-refresh */
-       writel(dmcr | EMC_DMCR_RFSH, &emc->dmcr);
-
-       tmp = SDRAM_TREF / ns;
-       tmp = tmp / 64 + 1;
-       if (tmp > 0xff)
-               tmp = 0xff;
-       writew(tmp, &emc->rtcor);
-       writew(0, &emc->rtcnt);
-       /* Divisor is 64, CKO/64 */
-       writew(EMC_RTCSR_CKS_64, &emc->rtcsr);
-
-       /* Wait for number of auto-refresh cycles */
-       tmp = (cpu_clk / 1000000) * 1000;
-       while (tmp--)
-               ;
-
-       /* Stage 3. Mode Register Set */
-       writel(dmcr0 | EMC_DMCR_RFSH | EMC_DMCR_MRSET, &emc->dmcr);
-       writeb(0, JZ4740_EMC_SDMR0 | sdmode);
-
-       /* Set back to basic DMCR value */
-       writel(dmcr | EMC_DMCR_RFSH | EMC_DMCR_MRSET, &emc->dmcr);
-
-       /* everything is ok now */
-}
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void calc_clocks(void)
-{
-       unsigned int pllout;
-       unsigned int div[10] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
-
-       pllout = __cpm_get_pllout();
-
-       gd->cpu_clk = pllout / div[__cpm_get_cdiv()];
-       gd->arch.sys_clk = pllout / div[__cpm_get_hdiv()];
-       gd->arch.per_clk = pllout / div[__cpm_get_pdiv()];
-       gd->mem_clk = pllout / div[__cpm_get_mdiv()];
-       gd->arch.dev_clk = CONFIG_SYS_EXTAL;
-}
-
-void rtc_init(void)
-{
-       struct jz4740_rtc *rtc = (struct jz4740_rtc *)JZ4740_RTC_BASE;
-
-       while (!(readl(&rtc->rcr) & RTC_RCR_WRDY))
-               ;
-       writel(readl(&rtc->rcr) | RTC_RCR_AE, &rtc->rcr); /* enable alarm */
-
-       while (!(readl(&rtc->rcr) & RTC_RCR_WRDY))
-               ;
-       writel(0x00007fff, &rtc->rgr); /* type value */
-
-       while (!(readl(&rtc->rcr) & RTC_RCR_WRDY))
-               ;
-       writel(0x0000ffe0, &rtc->hwfcr); /* Power on delay 2s */
-
-       while (!(readl(&rtc->rcr) & RTC_RCR_WRDY))
-               ;
-       writel(0x00000fe0, &rtc->hrcr); /* reset delay 125ms */
-}
-
-/* U-Boot common routines */
-phys_size_t initdram(int board_type)
-{
-       struct jz4740_emc *emc = (struct jz4740_emc *)JZ4740_EMC_BASE;
-       u32 dmcr;
-       u32 rows, cols, dw, banks;
-       ulong size;
-
-       dmcr = readl(&emc->dmcr);
-       rows = 11 + ((dmcr & EMC_DMCR_RA_MASK) >> EMC_DMCR_RA_BIT);
-       cols = 8 + ((dmcr & EMC_DMCR_CA_MASK) >> EMC_DMCR_CA_BIT);
-       dw = (dmcr & EMC_DMCR_BW) ? 2 : 4;
-       banks = (dmcr & EMC_DMCR_BA) ? 4 : 2;
-
-       size = (1 << (rows + cols)) * dw * banks;
-
-       return size;
-}
diff --git a/arch/mips/cpu/xburst/jz_serial.c b/arch/mips/cpu/xburst/jz_serial.c
deleted file mode 100644 (file)
index 9184223..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Jz4740 UART support
- * Copyright (c) 2011
- * Qi Hardware, Xiangfu Liu <xiangfu@sharism.cc>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <asm/io.h>
-#include <asm/jz4740.h>
-#include <serial.h>
-#include <linux/compiler.h>
-
-/*
- * serial_init - initialize a channel
- *
- * This routine initializes the number of data bits, parity
- * and set the selected baud rate. Interrupts are disabled.
- * Set the modem control signals if the option is selected.
- *
- * RETURNS: N/A
- */
-struct jz4740_uart *uart = (struct jz4740_uart *)CONFIG_SYS_UART_BASE;
-
-static int jz_serial_init(void)
-{
-       /* Disable port interrupts while changing hardware */
-       writeb(0, &uart->dlhr_ier);
-
-       /* Disable UART unit function */
-       writeb(~UART_FCR_UUE, &uart->iir_fcr);
-
-       /* Set both receiver and transmitter in UART mode (not SIR) */
-       writeb(~(SIRCR_RSIRE | SIRCR_TSIRE), &uart->isr);
-
-       /*
-        * Set databits, stopbits and parity.
-        * (8-bit data, 1 stopbit, no parity)
-        */
-       writeb(UART_LCR_WLEN_8 | UART_LCR_STOP_1, &uart->lcr);
-
-       /* Set baud rate */
-       serial_setbrg();
-
-       /* Enable UART unit, enable and clear FIFO */
-       writeb(UART_FCR_UUE | UART_FCR_FE | UART_FCR_TFLS | UART_FCR_RFLS,
-              &uart->iir_fcr);
-
-       return 0;
-}
-
-static void jz_serial_setbrg(void)
-{
-       u32 baud_div, tmp;
-
-       baud_div = CONFIG_SYS_EXTAL / 16 / CONFIG_BAUDRATE;
-
-       tmp = readb(&uart->lcr);
-       tmp |= UART_LCR_DLAB;
-       writeb(tmp, &uart->lcr);
-
-       writeb((baud_div >> 8) & 0xff, &uart->dlhr_ier);
-       writeb(baud_div & 0xff, &uart->rbr_thr_dllr);
-
-       tmp &= ~UART_LCR_DLAB;
-       writeb(tmp, &uart->lcr);
-}
-
-static int jz_serial_tstc(void)
-{
-       if (readb(&uart->lsr) & UART_LSR_DR)
-               return 1;
-
-       return 0;
-}
-
-static void jz_serial_putc(const char c)
-{
-       if (c == '\n')
-               serial_putc('\r');
-
-       /* Wait for fifo to shift out some bytes */
-       while (!((readb(&uart->lsr) & (UART_LSR_TDRQ | UART_LSR_TEMT)) == 0x60))
-               ;
-
-       writeb((u8)c, &uart->rbr_thr_dllr);
-}
-
-static int jz_serial_getc(void)
-{
-       while (!serial_tstc())
-               ;
-
-       return readb(&uart->rbr_thr_dllr);
-}
-
-static struct serial_device jz_serial_drv = {
-       .name   = "jz_serial",
-       .start  = jz_serial_init,
-       .stop   = NULL,
-       .setbrg = jz_serial_setbrg,
-       .putc   = jz_serial_putc,
-       .puts   = default_serial_puts,
-       .getc   = jz_serial_getc,
-       .tstc   = jz_serial_tstc,
-};
-
-void jz_serial_initialize(void)
-{
-       serial_register(&jz_serial_drv);
-}
-
-__weak struct serial_device *default_serial_console(void)
-{
-       return &jz_serial_drv;
-}
diff --git a/arch/mips/cpu/xburst/start.S b/arch/mips/cpu/xburst/start.S
deleted file mode 100644 (file)
index 10dffb4..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- *  Startup Code for MIPS32 XBURST CPU-core
- *
- *  Copyright (c) 2010 Xiangfu Liu <xiangfu@sharism.cc>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-#include <asm/mipsregs.h>
-#include <asm/addrspace.h>
-#include <asm/cacheops.h>
-
-       .set noreorder
-
-       .globl _start
-       .text
-_start:
-       /* Initialize $gp */
-       bal     1f
-        nop
-       .word   _gp
-1:
-       lw      gp, 0(ra)
-
-       /* Set up temporary stack */
-       li      sp, CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_INIT_SP_OFFSET
-
-       la      t9, board_init_f
-       jr      t9
-        nop
-
-/*
- * void relocate_code (addr_sp, gd, addr_moni)
- *
- * This "function" does not return, instead it continues in RAM
- * after relocating the monitor code.
- *
- * a0 = addr_sp
- * a1 = gd
- * a2 = destination address
- */
-       .globl  relocate_code
-       .ent    relocate_code
-relocate_code:
-       move    sp, a0                  # set new stack pointer
-
-       move    s0, a1                  # save gd in s0
-       move    s2, a2                  # save destination address in s2
-
-       li      t0, CONFIG_SYS_MONITOR_BASE
-       sub     s1, s2, t0              # s1 <-- relocation offset
-
-       la      t3, in_ram
-       lw      t2, -12(t3)             # t2 <-- __image_copy_end
-       move    t1, a2
-
-       add     gp, s1                  # adjust gp
-
-       /*
-        * t0 = source address
-        * t1 = target address
-        * t2 = source end address
-        */
-1:
-       lw      t3, 0(t0)
-       sw      t3, 0(t1)
-       addu    t0, 4
-       blt     t0, t2, 1b
-        addu   t1, 4
-
-       /* If caches were enabled, we would have to flush them here. */
-
-       /* flush d-cache */
-       li      t0, KSEG0
-       addi    t1, t0, CONFIG_SYS_DCACHE_SIZE
-2:
-       cache   INDEX_WRITEBACK_INV_D, 0(t0)
-       bne     t0, t1, 2b
-        addi   t0, CONFIG_SYS_CACHELINE_SIZE
-
-       sync
-
-       /* flush i-cache */
-       li      t0, KSEG0
-       addi    t1, t0, CONFIG_SYS_ICACHE_SIZE
-3:
-       cache   INDEX_INVALIDATE_I, 0(t0)
-       bne     t0, t1, 3b
-        addi   t0, CONFIG_SYS_CACHELINE_SIZE
-
-       /* Invalidate BTB */
-       mfc0    t0, CP0_CONFIG, 7
-       nop
-       ori     t0, 2
-       mtc0    t0, CP0_CONFIG, 7
-       nop
-
-       /* Jump to where we've relocated ourselves */
-       addi    t0, s2, in_ram - _start
-       jr      t0
-        nop
-
-       .word   __rel_dyn_end
-       .word   __rel_dyn_start
-       .word   __image_copy_end
-       .word   _GLOBAL_OFFSET_TABLE_
-       .word   num_got_entries
-
-in_ram:
-       /*
-        * Now we want to update GOT.
-        *
-        * GOT[0] is reserved. GOT[1] is also reserved for the dynamic object
-        * generated by GNU ld. Skip these reserved entries from relocation.
-        */
-       lw      t3, -4(t0)              # t3 <-- num_got_entries
-       lw      t8, -8(t0)              # t8 <-- _GLOBAL_OFFSET_TABLE_
-       add     t8, s1                  # t8 now holds relocated _G_O_T_
-       addi    t8, t8, 8               # skipping first two entries
-       li      t2, 2
-1:
-       lw      t1, 0(t8)
-       beqz    t1, 2f
-        add    t1, s1
-       sw      t1, 0(t8)
-2:
-       addi    t2, 1
-       blt     t2, t3, 1b
-        addi   t8, 4
-
-       /* Update dynamic relocations */
-       lw      t1, -16(t0)             # t1 <-- __rel_dyn_start
-       lw      t2, -20(t0)             # t2 <-- __rel_dyn_end
-
-       b       2f                      # skip first reserved entry
-        addi   t1, 8
-
-1:
-       lw      t8, -4(t1)              # t8 <-- relocation info
-
-       li      t3, 3
-       bne     t8, t3, 2f              # skip non R_MIPS_REL32 entries
-        nop
-
-       lw      t3, -8(t1)              # t3 <-- location to fix up in FLASH
-
-       lw      t8, 0(t3)               # t8 <-- original pointer
-       add     t8, s1                  # t8 <-- adjusted pointer
-
-       add     t3, s1                  # t3 <-- location to fix up in RAM
-       sw      t8, 0(t3)
-
-2:
-       blt     t1, t2, 1b
-        addi   t1, 8                   # each rel.dyn entry is 8 bytes
-
-       /*
-        * Clear BSS
-        *
-        * GOT is now relocated. Thus __bss_start and __bss_end can be
-        * accessed directly via $gp.
-        */
-       la      t1, __bss_start         # t1 <-- __bss_start
-       la      t2, __bss_end           # t2 <-- __bss_end
-
-1:
-       sw      zero, 0(t1)
-       blt     t1, t2, 1b
-        addi   t1, 4
-
-       move    a0, s0                  # a0 <-- gd
-       la      t9, board_init_r
-       jr      t9
-        move   a1, s2
-
-       .end    relocate_code
diff --git a/arch/mips/cpu/xburst/timer.c b/arch/mips/cpu/xburst/timer.c
deleted file mode 100644 (file)
index 79f34f0..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- *  Copyright (c) 2006
- *  Ingenic Semiconductor, <jlwei@ingenic.cn>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <asm/io.h>
-
-#include <asm/jz4740.h>
-
-#define TIMER_CHAN  0
-#define TIMER_FDATA 0xffff  /* Timer full data value */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static struct jz4740_tcu *tcu = (struct jz4740_tcu *)JZ4740_TCU_BASE;
-
-void reset_timer_masked(void)
-{
-       /* reset time */
-       gd->arch.lastinc = readl(&tcu->tcnt0);
-       gd->arch.tbl = 0;
-}
-
-ulong get_timer_masked(void)
-{
-       ulong now = readl(&tcu->tcnt0);
-
-       if (gd->arch.lastinc <= now)
-               gd->arch.tbl += now - gd->arch.lastinc; /* normal mode */
-       else {
-               /* we have an overflow ... */
-               gd->arch.tbl += TIMER_FDATA + now - gd->arch.lastinc;
-       }
-
-       gd->arch.lastinc = now;
-
-       return gd->arch.tbl;
-}
-
-void udelay_masked(unsigned long usec)
-{
-       ulong tmo;
-       ulong endtime;
-       signed long diff;
-
-       /* normalize */
-       if (usec >= 1000) {
-               tmo = usec / 1000;
-               tmo *= CONFIG_SYS_HZ;
-               tmo /= 1000;
-       } else {
-               if (usec > 1) {
-                       tmo = usec * CONFIG_SYS_HZ;
-                       tmo /= 1000*1000;
-               } else
-                       tmo = 1;
-       }
-
-       endtime = get_timer_masked() + tmo;
-
-       do {
-               ulong now = get_timer_masked();
-               diff = endtime - now;
-       } while (diff >= 0);
-}
-
-int timer_init(void)
-{
-       writel(TCU_TCSR_PRESCALE256 | TCU_TCSR_EXT_EN, &tcu->tcsr0);
-
-       writel(0, &tcu->tcnt0);
-       writel(0, &tcu->tdhr0);
-       writel(TIMER_FDATA, &tcu->tdfr0);
-
-       /* mask irqs */
-       writel((1 << TIMER_CHAN) | (1 << (TIMER_CHAN + 16)), &tcu->tmsr);
-       writel(1 << TIMER_CHAN, &tcu->tscr); /* enable timer clock */
-       writeb(1 << TIMER_CHAN, &tcu->tesr); /* start counting up */
-
-       gd->arch.lastinc = 0;
-       gd->arch.tbl = 0;
-
-       return 0;
-}
-
-void reset_timer(void)
-{
-       reset_timer_masked();
-}
-
-ulong get_timer(ulong base)
-{
-       return get_timer_masked() - base;
-}
-
-void set_timer(ulong t)
-{
-       gd->arch.tbl = t;
-}
-
-void __udelay(unsigned long usec)
-{
-       ulong tmo, tmp;
-
-       /* normalize */
-       if (usec >= 1000) {
-               tmo = usec / 1000;
-               tmo *= CONFIG_SYS_HZ;
-               tmo /= 1000;
-       } else {
-               if (usec >= 1) {
-                       tmo = usec * CONFIG_SYS_HZ;
-                       tmo /= 1000 * 1000;
-               } else
-                       tmo = 1;
-       }
-
-       /* check for rollover during this delay */
-       tmp = get_timer(0);
-       if ((tmp + tmo) < tmp)
-               reset_timer_masked();  /* timer would roll over */
-       else
-               tmo += tmp;
-
-       while (get_timer_masked() < tmo)
-               ;
-}
-
-/*
- * This function is derived from PowerPC code (read timebase as long long).
- * On MIPS 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 MIPS it returns the number of timer ticks per second.
- */
-ulong get_tbclk(void)
-{
-       return CONFIG_SYS_HZ;
-}
diff --git a/arch/mips/include/asm/inca-ip.h b/arch/mips/include/asm/inca-ip.h
deleted file mode 100644 (file)
index 5f03e2a..0000000
+++ /dev/null
@@ -1,2430 +0,0 @@
-/******************************************************************************
-       Copyright (c) 2002, Infineon Technologies.  All rights reserved.
-
-                              No Warranty
-   Because the program is licensed free of charge, there is no warranty for
-   the program, to the extent permitted by applicable law.  Except when
-   otherwise stated in writing the copyright holders and/or other parties
-   provide the program "as is" without warranty of any kind, either
-   expressed or implied, including, but not limited to, the implied
-   warranties of merchantability and fitness for a particular purpose. The
-   entire risk as to the quality and performance of the program is with
-   you.  should the program prove defective, you assume the cost of all
-   necessary servicing, repair or correction.
-
-   In no event unless required by applicable law or agreed to in writing
-   will any copyright holder, or any other party who may modify and/or
-   redistribute the program as permitted above, be liable to you for
-   damages, including any general, special, incidental or consequential
-   damages arising out of the use or inability to use the program
-   (including but not limited to loss of data or data being rendered
-   inaccurate or losses sustained by you or third parties or a failure of
-   the program to operate with any other programs), even if such holder or
-   other party has been advised of the possibility of such damages.
-******************************************************************************/
-
-
-/***********************************************************************/
-/*  Module      :  WDT register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_WDT                          (0xB8000000)
-/***********************************************************************/
-
-
-/***Reset Status Register Power On***/
-#define INCA_IP_WDT_RST_SR                       ((volatile u32*)(INCA_IP_WDT+ 0x0014))
-
-/***Reset Request Register***/
-#define INCA_IP_WDT_RST_REQ                      ((volatile u32*)(INCA_IP_WDT+ 0x0010))
-#define INCA_IP_WDT_RST_REQ_SWBOOT                        (1 << 24)
-#define INCA_IP_WDT_RST_REQ_SWCFG                          (1 << 16)
-#define INCA_IP_WDT_RST_REQ_RRPHY                          (1 << 5)
-#define INCA_IP_WDT_RST_REQ_RRHSP                          (1 << 4)
-#define INCA_IP_WDT_RST_REQ_RRFPI                          (1 << 3)
-#define INCA_IP_WDT_RST_REQ_RREXT                          (1 << 2)
-#define INCA_IP_WDT_RST_REQ_RRDSP                          (1 << 1)
-#define INCA_IP_WDT_RST_REQ_RRCPU                          (1 << 0)
-
-/***NMI Status Register***/
-#define INCA_IP_WDT_NMISR                        ((volatile u32*)(INCA_IP_WDT+ 0x002C))
-#define INCA_IP_WDT_NMISR_NMIWDT                        (1 << 2)
-#define INCA_IP_WDT_NMISR_NMIPLL                        (1 << 1)
-#define INCA_IP_WDT_NMISR_NMIEXT                        (1 << 0)
-
-/***Manufacturer Identification Register***/
-#define INCA_IP_WDT_MANID                        ((volatile u32*)(INCA_IP_WDT+ 0x0070))
-#define INCA_IP_WDT_MANID_MANUF (value)              (((( 1 << 11) - 1) & (value)) << 5)
-
-/***Chip Identification Register***/
-#define INCA_IP_WDT_CHIPID                       ((volatile u32*)(INCA_IP_WDT+ 0x0074))
-#define INCA_IP_WDT_CHIPID_VERSION (value)            (((( 1 << 4) - 1) & (value)) << 28)
-#define INCA_IP_WDT_CHIPID_PART_NUMBER (value)        (((( 1 << 16) - 1) & (value)) << 12)
-#define INCA_IP_WDT_CHIPID_MANID (value)              (((( 1 << 11) - 1) & (value)) << 1)
-
-/***Redesign Tracing Identification Register***/
-#define INCA_IP_WDT_RTID                         ((volatile u32*)(INCA_IP_WDT+ 0x0078))
-#define INCA_IP_WDT_RTID_LC                              (1 << 15)
-#define INCA_IP_WDT_RTID_RIX (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***Watchdog Timer Control Register 0***/
-#define INCA_IP_WDT_WDT_CON0                    ((volatile u32*)(INCA_IP_WDT+ 0x0020))
-
-/***Watchdog Timer Control Register 1***/
-#define INCA_IP_WDT_WDT_CON1                    ((volatile u32*)(INCA_IP_WDT+ 0x0024))
-#define INCA_IP_WDT_WDT_CON1_WDTDR                          (1 << 3)
-#define INCA_IP_WDT_WDT_CON1_WDTIR                          (1 << 2)
-
-/***Watchdog Timer Status Register***/
-#define INCA_IP_WDT_WDT_SR                       ((volatile u32*)(INCA_IP_WDT+ 0x0028))
-#define INCA_IP_WDT_WDT_SR_WDTTIM (value)             (((( 1 << 16) - 1) & (value)) << 16)
-#define INCA_IP_WDT_WDT_SR_WDTPR                          (1 << 5)
-#define INCA_IP_WDT_WDT_SR_WDTTO                          (1 << 4)
-#define INCA_IP_WDT_WDT_SR_WDTDS                          (1 << 3)
-#define INCA_IP_WDT_WDT_SR_WDTIS                          (1 << 2)
-#define INCA_IP_WDT_WDT_SR_WDTOE                          (1 << 1)
-#define INCA_IP_WDT_WDT_SR_WDTAE                          (1 << 0)
-
-/***********************************************************************/
-/*  Module      :  CGU register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_CGU                          (0xBF107000)
-/***********************************************************************/
-
-
-/***CGU PLL1 Control Register***/
-#define INCA_IP_CGU_CGU_PLL1CR                   ((volatile u32*)(INCA_IP_CGU+ 0x0008))
-#define INCA_IP_CGU_CGU_PLL1CR_SWRST                          (1 << 31)
-#define INCA_IP_CGU_CGU_PLL1CR_EN                              (1 << 30)
-#define INCA_IP_CGU_CGU_PLL1CR_NDIV (value)               (((( 1 << 6) - 1) & (value)) << 16)
-#define INCA_IP_CGU_CGU_PLL1CR_MDIV (value)               (((( 1 << 4) - 1) & (value)) << 0)
-
-/***CGU PLL0 Control Register***/
-#define INCA_IP_CGU_CGU_PLL0CR                   ((volatile u32*)(INCA_IP_CGU+ 0x0000))
-#define INCA_IP_CGU_CGU_PLL0CR_SWRST                          (1 << 31)
-#define INCA_IP_CGU_CGU_PLL0CR_EN                              (1 << 30)
-#define INCA_IP_CGU_CGU_PLL0CR_NDIV (value)               (((( 1 << 6) - 1) & (value)) << 16)
-#define INCA_IP_CGU_CGU_PLL0CR_MDIV (value)               (((( 1 << 4) - 1) & (value)) << 0)
-
-/***CGU PLL0 Status Register***/
-#define INCA_IP_CGU_CGU_PLL0SR                   ((volatile u32*)(INCA_IP_CGU+ 0x0004))
-#define INCA_IP_CGU_CGU_PLL0SR_LOCK                            (1 << 31)
-#define INCA_IP_CGU_CGU_PLL0SR_RCF                              (1 << 29)
-#define INCA_IP_CGU_CGU_PLL0SR_PLLBYP                        (1 << 15)
-
-/***CGU PLL1 Status Register***/
-#define INCA_IP_CGU_CGU_PLL1SR                   ((volatile u32*)(INCA_IP_CGU+ 0x000C))
-#define INCA_IP_CGU_CGU_PLL1SR_LOCK                            (1 << 31)
-#define INCA_IP_CGU_CGU_PLL1SR_RCF                              (1 << 29)
-#define INCA_IP_CGU_CGU_PLL1SR_PLLBYP                        (1 << 15)
-
-/***CGU Divider Control Register***/
-#define INCA_IP_CGU_CGU_DIVCR                    ((volatile u32*)(INCA_IP_CGU+ 0x0010))
-
-/***CGU Multiplexer Control Register***/
-#define INCA_IP_CGU_CGU_MUXCR                    ((volatile u32*)(INCA_IP_CGU+ 0x0014))
-#define INCA_IP_CGU_CGU_MUXCR_SWRST                          (1 << 31)
-#define INCA_IP_CGU_CGU_MUXCR_MUXII                          (1 << 1)
-#define INCA_IP_CGU_CGU_MUXCR_MUXI                            (1 << 0)
-
-/***CGU Fractional Divider Control Register***/
-#define INCA_IP_CGU_CGU_FDCR                    ((volatile u32*)(INCA_IP_CGU+ 0x0018))
-#define INCA_IP_CGU_CGU_FDCR_FDEN                            (1 << 31)
-#define INCA_IP_CGU_CGU_FDCR_INTEGER (value)            (((( 1 << 12) - 1) & (value)) << 16)
-#define INCA_IP_CGU_CGU_FDCR_FRACTION (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  PMU register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_PMU                          (0xBF102000)
-/***********************************************************************/
-
-
-/***PM Global Enable Register***/
-#define INCA_IP_PMU_PM_GEN                       ((volatile u32*)(INCA_IP_PMU+ 0x0000))
-#define INCA_IP_PMU_PM_GEN_EN16                            (1 << 16)
-#define INCA_IP_PMU_PM_GEN_EN15                            (1 << 15)
-#define INCA_IP_PMU_PM_GEN_EN14                            (1 << 14)
-#define INCA_IP_PMU_PM_GEN_EN13                            (1 << 13)
-#define INCA_IP_PMU_PM_GEN_EN12                            (1 << 12)
-#define INCA_IP_PMU_PM_GEN_EN11                            (1 << 11)
-#define INCA_IP_PMU_PM_GEN_EN10                            (1 << 10)
-#define INCA_IP_PMU_PM_GEN_EN9                              (1 << 9)
-#define INCA_IP_PMU_PM_GEN_EN8                              (1 << 8)
-#define INCA_IP_PMU_PM_GEN_EN7                              (1 << 7)
-#define INCA_IP_PMU_PM_GEN_EN6                              (1 << 6)
-#define INCA_IP_PMU_PM_GEN_EN5                              (1 << 5)
-#define INCA_IP_PMU_PM_GEN_EN4                              (1 << 4)
-#define INCA_IP_PMU_PM_GEN_EN3                              (1 << 3)
-#define INCA_IP_PMU_PM_GEN_EN2                              (1 << 2)
-#define INCA_IP_PMU_PM_GEN_EN0                              (1 << 0)
-
-/***PM Power Down Enable Register***/
-#define INCA_IP_PMU_PM_PDEN                      ((volatile u32*)(INCA_IP_PMU+ 0x0008))
-#define INCA_IP_PMU_PM_PDEN_EN16                            (1 << 16)
-#define INCA_IP_PMU_PM_PDEN_EN15                            (1 << 15)
-#define INCA_IP_PMU_PM_PDEN_EN14                            (1 << 14)
-#define INCA_IP_PMU_PM_PDEN_EN13                            (1 << 13)
-#define INCA_IP_PMU_PM_PDEN_EN12                            (1 << 12)
-#define INCA_IP_PMU_PM_PDEN_EN11                            (1 << 11)
-#define INCA_IP_PMU_PM_PDEN_EN10                            (1 << 10)
-#define INCA_IP_PMU_PM_PDEN_EN9                              (1 << 9)
-#define INCA_IP_PMU_PM_PDEN_EN8                              (1 << 8)
-#define INCA_IP_PMU_PM_PDEN_EN7                              (1 << 7)
-#define INCA_IP_PMU_PM_PDEN_EN5                              (1 << 5)
-#define INCA_IP_PMU_PM_PDEN_EN4                              (1 << 4)
-#define INCA_IP_PMU_PM_PDEN_EN3                              (1 << 3)
-#define INCA_IP_PMU_PM_PDEN_EN2                              (1 << 2)
-#define INCA_IP_PMU_PM_PDEN_EN0                              (1 << 0)
-
-/***PM Wake-Up from Power Down Register***/
-#define INCA_IP_PMU_PM_WUP                       ((volatile u32*)(INCA_IP_PMU+ 0x0010))
-#define INCA_IP_PMU_PM_WUP_WUP16                          (1 << 16)
-#define INCA_IP_PMU_PM_WUP_WUP15                          (1 << 15)
-#define INCA_IP_PMU_PM_WUP_WUP14                          (1 << 14)
-#define INCA_IP_PMU_PM_WUP_WUP13                          (1 << 13)
-#define INCA_IP_PMU_PM_WUP_WUP12                          (1 << 12)
-#define INCA_IP_PMU_PM_WUP_WUP11                          (1 << 11)
-#define INCA_IP_PMU_PM_WUP_WUP10                          (1 << 10)
-#define INCA_IP_PMU_PM_WUP_WUP9                            (1 << 9)
-#define INCA_IP_PMU_PM_WUP_WUP8                            (1 << 8)
-#define INCA_IP_PMU_PM_WUP_WUP7                            (1 << 7)
-#define INCA_IP_PMU_PM_WUP_WUP5                            (1 << 5)
-#define INCA_IP_PMU_PM_WUP_WUP4                            (1 << 4)
-#define INCA_IP_PMU_PM_WUP_WUP3                            (1 << 3)
-#define INCA_IP_PMU_PM_WUP_WUP2                            (1 << 2)
-#define INCA_IP_PMU_PM_WUP_WUP0                            (1 << 0)
-
-/***PM Control Register***/
-#define INCA_IP_PMU_PM_CR                        ((volatile u32*)(INCA_IP_PMU+ 0x0014))
-#define INCA_IP_PMU_PM_CR_AWEN                            (1 << 31)
-#define INCA_IP_PMU_PM_CR_SWRST                          (1 << 30)
-#define INCA_IP_PMU_PM_CR_SWCR                            (1 << 2)
-#define INCA_IP_PMU_PM_CR_CRD (value)                (((( 1 << 2) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  BCU register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_BCU                          (0xB8000100)
-/***********************************************************************/
-
-
-/***BCU Control Register (0010H)***/
-#define INCA_IP_BCU_BCU_CON                      ((volatile u32*)(INCA_IP_BCU+ 0x0010))
-#define INCA_IP_BCU_BCU_CON_SPC (value)                (((( 1 << 8) - 1) & (value)) << 24)
-#define INCA_IP_BCU_BCU_CON_SPE                              (1 << 19)
-#define INCA_IP_BCU_BCU_CON_PSE                              (1 << 18)
-#define INCA_IP_BCU_BCU_CON_DBG                              (1 << 16)
-#define INCA_IP_BCU_BCU_CON_TOUT (value)               (((( 1 << 16) - 1) & (value)) << 0)
-
-/***BCU Error Control Capture Register (0020H)***/
-#define INCA_IP_BCU_BCU_ECON                    ((volatile u32*)(INCA_IP_BCU+ 0x0020))
-#define INCA_IP_BCU_BCU_ECON_TAG (value)                (((( 1 << 4) - 1) & (value)) << 24)
-#define INCA_IP_BCU_BCU_ECON_RDN                              (1 << 23)
-#define INCA_IP_BCU_BCU_ECON_WRN                              (1 << 22)
-#define INCA_IP_BCU_BCU_ECON_SVM                              (1 << 21)
-#define INCA_IP_BCU_BCU_ECON_ACK (value)                (((( 1 << 2) - 1) & (value)) << 19)
-#define INCA_IP_BCU_BCU_ECON_ABT                              (1 << 18)
-#define INCA_IP_BCU_BCU_ECON_RDY                              (1 << 17)
-#define INCA_IP_BCU_BCU_ECON_TOUT                            (1 << 16)
-#define INCA_IP_BCU_BCU_ECON_ERRCNT (value)             (((( 1 << 16) - 1) & (value)) << 0)
-#define INCA_IP_BCU_BCU_ECON_OPC (value)                (((( 1 << 4) - 1) & (value)) << 28)
-
-/***BCU Error Address Capture Register (0024 H)***/
-#define INCA_IP_BCU_BCU_EADD                    ((volatile u32*)(INCA_IP_BCU+ 0x0024))
-#define INCA_IP_BCU_BCU_EADD_FPIADR
-
-/***BCU Error Data Capture Register (0028H)***/
-#define INCA_IP_BCU_BCU_EDAT                    ((volatile u32*)(INCA_IP_BCU+ 0x0028))
-#define INCA_IP_BCU_BCU_EDAT_FPIDAT
-
-/***********************************************************************/
-/*  Module      :  MBC register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_MBC                          (0xBF103000)
-/***********************************************************************/
-
-
-/***Mailbox CPU Configuration Register***/
-#define INCA_IP_MBC_MBC_CFG                      ((volatile u32*)(INCA_IP_MBC+ 0x0080))
-#define INCA_IP_MBC_MBC_CFG_SWAP (value)               (((( 1 << 2) - 1) & (value)) << 6)
-#define INCA_IP_MBC_MBC_CFG_RES                              (1 << 5)
-#define INCA_IP_MBC_MBC_CFG_FWID (value)               (((( 1 << 4) - 1) & (value)) << 1)
-#define INCA_IP_MBC_MBC_CFG_SIZE                            (1 << 0)
-
-/***Mailbox CPU Interrupt Status Register***/
-#define INCA_IP_MBC_MBC_ISR                      ((volatile u32*)(INCA_IP_MBC+ 0x0084))
-#define INCA_IP_MBC_MBC_ISR_B3DA                            (1 << 31)
-#define INCA_IP_MBC_MBC_ISR_B2DA                            (1 << 30)
-#define INCA_IP_MBC_MBC_ISR_B1E                              (1 << 29)
-#define INCA_IP_MBC_MBC_ISR_B0E                              (1 << 28)
-#define INCA_IP_MBC_MBC_ISR_WDT                              (1 << 27)
-#define INCA_IP_MBC_MBC_ISR_DS260 (value)             (((( 1 << 27) - 1) & (value)) << 0)
-
-/***Mailbox CPU Mask Register***/
-#define INCA_IP_MBC_MBC_MSK                      ((volatile u32*)(INCA_IP_MBC+ 0x0088))
-#define INCA_IP_MBC_MBC_MSK_B3DA                            (1 << 31)
-#define INCA_IP_MBC_MBC_MSK_B2DA                            (1 << 30)
-#define INCA_IP_MBC_MBC_MSK_B1E                              (1 << 29)
-#define INCA_IP_MBC_MBC_MSK_B0E                              (1 << 28)
-#define INCA_IP_MBC_MBC_MSK_WDT                              (1 << 27)
-#define INCA_IP_MBC_MBC_MSK_DS260 (value)             (((( 1 << 27) - 1) & (value)) << 0)
-
-/***Mailbox CPU Mask 01 Register***/
-#define INCA_IP_MBC_MBC_MSK01                    ((volatile u32*)(INCA_IP_MBC+ 0x008C))
-#define INCA_IP_MBC_MBC_MSK01_B3DA                            (1 << 31)
-#define INCA_IP_MBC_MBC_MSK01_B2DA                            (1 << 30)
-#define INCA_IP_MBC_MBC_MSK01_B1E                              (1 << 29)
-#define INCA_IP_MBC_MBC_MSK01_B0E                              (1 << 28)
-#define INCA_IP_MBC_MBC_MSK01_WDT                              (1 << 27)
-#define INCA_IP_MBC_MBC_MSK01_DS260 (value)             (((( 1 << 27) - 1) & (value)) << 0)
-
-/***Mailbox CPU Mask 10 Register***/
-#define INCA_IP_MBC_MBC_MSK10                    ((volatile u32*)(INCA_IP_MBC+ 0x0090))
-#define INCA_IP_MBC_MBC_MSK10_B3DA                            (1 << 31)
-#define INCA_IP_MBC_MBC_MSK10_B2DA                            (1 << 30)
-#define INCA_IP_MBC_MBC_MSK10_B1E                              (1 << 29)
-#define INCA_IP_MBC_MBC_MSK10_B0E                              (1 << 28)
-#define INCA_IP_MBC_MBC_MSK10_WDT                              (1 << 27)
-#define INCA_IP_MBC_MBC_MSK10_DS260 (value)             (((( 1 << 27) - 1) & (value)) << 0)
-
-/***Mailbox CPU Short Command Register***/
-#define INCA_IP_MBC_MBC_CMD                      ((volatile u32*)(INCA_IP_MBC+ 0x0094))
-#define INCA_IP_MBC_MBC_CMD_CS270 (value)             (((( 1 << 28) - 1) & (value)) << 0)
-
-/***Mailbox CPU Input Data of Buffer 0***/
-#define INCA_IP_MBC_MBC_ID0                      ((volatile u32*)(INCA_IP_MBC+ 0x0000))
-#define INCA_IP_MBC_MBC_ID0_INDATA
-
-/***Mailbox CPU Input Data of Buffer 1***/
-#define INCA_IP_MBC_MBC_ID1                      ((volatile u32*)(INCA_IP_MBC+ 0x0020))
-#define INCA_IP_MBC_MBC_ID1_INDATA
-
-/***Mailbox CPU Output Data of Buffer 2***/
-#define INCA_IP_MBC_MBC_OD2                      ((volatile u32*)(INCA_IP_MBC+ 0x0040))
-#define INCA_IP_MBC_MBC_OD2_OUTDATA
-
-/***Mailbox CPU Output Data of Buffer 3***/
-#define INCA_IP_MBC_MBC_OD3                      ((volatile u32*)(INCA_IP_MBC+ 0x0060))
-#define INCA_IP_MBC_MBC_OD3_OUTDATA
-
-/***Mailbox CPU Control Register of Buffer 0***/
-#define INCA_IP_MBC_MBC_CR0                      ((volatile u32*)(INCA_IP_MBC+ 0x0004))
-#define INCA_IP_MBC_MBC_CR0_RDYABTFLS (value)          (((( 1 << 3) - 1) & (value)) << 0)
-
-/***Mailbox CPU Control Register of Buffer 1***/
-#define INCA_IP_MBC_MBC_CR1                      ((volatile u32*)(INCA_IP_MBC+ 0x0024))
-#define INCA_IP_MBC_MBC_CR1_RDYABTFLS (value)          (((( 1 << 3) - 1) & (value)) << 0)
-
-/***Mailbox CPU Control Register of Buffer 2***/
-#define INCA_IP_MBC_MBC_CR2                      ((volatile u32*)(INCA_IP_MBC+ 0x0044))
-#define INCA_IP_MBC_MBC_CR2_RDYABTFLS (value)          (((( 1 << 3) - 1) & (value)) << 0)
-
-/***Mailbox CPU Control Register of Buffer 3***/
-#define INCA_IP_MBC_MBC_CR3                      ((volatile u32*)(INCA_IP_MBC+ 0x0064))
-#define INCA_IP_MBC_MBC_CR3_RDYABTFLS (value)          (((( 1 << 3) - 1) & (value)) << 0)
-
-/***Mailbox CPU Free Space of Buffer 0***/
-#define INCA_IP_MBC_MBC_FS0                      ((volatile u32*)(INCA_IP_MBC+ 0x0008))
-#define INCA_IP_MBC_MBC_FS0_FS
-
-/***Mailbox CPU Free Space of Buffer 1***/
-#define INCA_IP_MBC_MBC_FS1                      ((volatile u32*)(INCA_IP_MBC+ 0x0028))
-#define INCA_IP_MBC_MBC_FS1_FS
-
-/***Mailbox CPU Free Space of Buffer 2***/
-#define INCA_IP_MBC_MBC_FS2                      ((volatile u32*)(INCA_IP_MBC+ 0x0048))
-#define INCA_IP_MBC_MBC_FS2_FS
-
-/***Mailbox CPU Free Space of Buffer 3***/
-#define INCA_IP_MBC_MBC_FS3                      ((volatile u32*)(INCA_IP_MBC+ 0x0068))
-#define INCA_IP_MBC_MBC_FS3_FS
-
-/***Mailbox CPU Data Available in Buffer 0***/
-#define INCA_IP_MBC_MBC_DA0                      ((volatile u32*)(INCA_IP_MBC+ 0x000C))
-#define INCA_IP_MBC_MBC_DA0_DA
-
-/***Mailbox CPU Data Available in Buffer 1***/
-#define INCA_IP_MBC_MBC_DA1                      ((volatile u32*)(INCA_IP_MBC+ 0x002C))
-#define INCA_IP_MBC_MBC_DA1_DA
-
-/***Mailbox CPU Data Available in Buffer 2***/
-#define INCA_IP_MBC_MBC_DA2                      ((volatile u32*)(INCA_IP_MBC+ 0x004C))
-#define INCA_IP_MBC_MBC_DA2_DA
-
-/***Mailbox CPU Data Available in Buffer 3***/
-#define INCA_IP_MBC_MBC_DA3                      ((volatile u32*)(INCA_IP_MBC+ 0x006C))
-#define INCA_IP_MBC_MBC_DA3_DA
-
-/***Mailbox CPU Input Absolute Pointer of Buffer 0***/
-#define INCA_IP_MBC_MBC_IABS0                    ((volatile u32*)(INCA_IP_MBC+ 0x0010))
-#define INCA_IP_MBC_MBC_IABS0_IABS
-
-/***Mailbox CPU Input Absolute Pointer of Buffer 1***/
-#define INCA_IP_MBC_MBC_IABS1                    ((volatile u32*)(INCA_IP_MBC+ 0x0030))
-#define INCA_IP_MBC_MBC_IABS1_IABS
-
-/***Mailbox CPU Input Absolute Pointer of Buffer 2***/
-#define INCA_IP_MBC_MBC_IABS2                    ((volatile u32*)(INCA_IP_MBC+ 0x0050))
-#define INCA_IP_MBC_MBC_IABS2_IABS
-
-/***Mailbox CPU Input Absolute Pointer of Buffer 3***/
-#define INCA_IP_MBC_MBC_IABS3                    ((volatile u32*)(INCA_IP_MBC+ 0x0070))
-#define INCA_IP_MBC_MBC_IABS3_IABS
-
-/***Mailbox CPU Input Temporary Pointer of Buffer 0***/
-#define INCA_IP_MBC_MBC_ITMP0                    ((volatile u32*)(INCA_IP_MBC+ 0x0014))
-#define INCA_IP_MBC_MBC_ITMP0_ITMP
-
-/***Mailbox CPU Input Temporary Pointer of Buffer 1***/
-#define INCA_IP_MBC_MBC_ITMP1                    ((volatile u32*)(INCA_IP_MBC+ 0x0034))
-#define INCA_IP_MBC_MBC_ITMP1_ITMP
-
-/***Mailbox CPU Input Temporary Pointer of Buffer 2***/
-#define INCA_IP_MBC_MBC_ITMP2                    ((volatile u32*)(INCA_IP_MBC+ 0x0054))
-#define INCA_IP_MBC_MBC_ITMP2_ITMP
-
-/***Mailbox CPU Input Temporary Pointer of Buffer 3***/
-#define INCA_IP_MBC_MBC_ITMP3                    ((volatile u32*)(INCA_IP_MBC+ 0x0074))
-#define INCA_IP_MBC_MBC_ITMP3_ITMP
-
-/***Mailbox CPU Output Absolute Pointer of Buffer 0***/
-#define INCA_IP_MBC_MBC_OABS0                    ((volatile u32*)(INCA_IP_MBC+ 0x0018))
-#define INCA_IP_MBC_MBC_OABS0_OABS
-
-/***Mailbox CPU Output Absolute Pointer of Buffer 1***/
-#define INCA_IP_MBC_MBC_OABS1                    ((volatile u32*)(INCA_IP_MBC+ 0x0038))
-#define INCA_IP_MBC_MBC_OABS1_OABS
-
-/***Mailbox CPU Output Absolute Pointer of Buffer 2***/
-#define INCA_IP_MBC_MBC_OABS2                    ((volatile u32*)(INCA_IP_MBC+ 0x0058))
-#define INCA_IP_MBC_MBC_OABS2_OABS
-
-/***Mailbox CPU Output Absolute Pointer of Buffer 3***/
-#define INCA_IP_MBC_MBC_OABS3                    ((volatile u32*)(INCA_IP_MBC+ 0x0078))
-#define INCA_IP_MBC_MBC_OABS3_OABS
-
-/***Mailbox CPU Output Temporary Pointer of Buffer 0***/
-#define INCA_IP_MBC_MBC_OTMP0                    ((volatile u32*)(INCA_IP_MBC+ 0x001C))
-#define INCA_IP_MBC_MBC_OTMP0_OTMP
-
-/***Mailbox CPU Output Temporary Pointer of Buffer 1***/
-#define INCA_IP_MBC_MBC_OTMP1                    ((volatile u32*)(INCA_IP_MBC+ 0x003C))
-#define INCA_IP_MBC_MBC_OTMP1_OTMP
-
-/***Mailbox CPU Output Temporary Pointer of Buffer 2***/
-#define INCA_IP_MBC_MBC_OTMP2                    ((volatile u32*)(INCA_IP_MBC+ 0x005C))
-#define INCA_IP_MBC_MBC_OTMP2_OTMP
-
-/***Mailbox CPU Output Temporary Pointer of Buffer 3***/
-#define INCA_IP_MBC_MBC_OTMP3                    ((volatile u32*)(INCA_IP_MBC+ 0x007C))
-#define INCA_IP_MBC_MBC_OTMP3_OTMP
-
-/***DSP Control Register***/
-#define INCA_IP_MBC_DCTRL                        ((volatile u32*)(INCA_IP_MBC+ 0x00A0))
-#define INCA_IP_MBC_DCTRL_BA                              (1 << 0)
-#define INCA_IP_MBC_DCTRL_BMOD (value)               (((( 1 << 3) - 1) & (value)) << 1)
-#define INCA_IP_MBC_DCTRL_IDL                              (1 << 4)
-#define INCA_IP_MBC_DCTRL_RES                              (1 << 15)
-
-/***DSP Status Register***/
-#define INCA_IP_MBC_DSTA                         ((volatile u32*)(INCA_IP_MBC+ 0x00A4))
-#define INCA_IP_MBC_DSTA_IDLE                            (1 << 0)
-#define INCA_IP_MBC_DSTA_PD                              (1 << 1)
-
-/***DSP Test 1 Register***/
-#define INCA_IP_MBC_DTST1                        ((volatile u32*)(INCA_IP_MBC+ 0x00A8))
-#define INCA_IP_MBC_DTST1_ABORT                          (1 << 0)
-#define INCA_IP_MBC_DTST1_HWF32                          (1 << 1)
-#define INCA_IP_MBC_DTST1_HWF4M                          (1 << 2)
-#define INCA_IP_MBC_DTST1_HWFOP                          (1 << 3)
-
-/***********************************************************************/
-/*  Module      :  Switch register address and bits                    */
-/***********************************************************************/
-
-#define INCA_IP_Switch                       (0xBF104000)
-/***********************************************************************/
-
-
-/***Unknown Destination Register***/
-#define INCA_IP_Switch_UN_DEST                      ((volatile u32*)(INCA_IP_Switch+ 0x0000))
-#define INCA_IP_Switch_UN_DEST_CB                              (1 << 8)
-#define INCA_IP_Switch_UN_DEST_LB                              (1 << 7)
-#define INCA_IP_Switch_UN_DEST_PB                              (1 << 6)
-#define INCA_IP_Switch_UN_DEST_CM                              (1 << 5)
-#define INCA_IP_Switch_UN_DEST_LM                              (1 << 4)
-#define INCA_IP_Switch_UN_DEST_PM                              (1 << 3)
-#define INCA_IP_Switch_UN_DEST_CU                              (1 << 2)
-#define INCA_IP_Switch_UN_DEST_LU                              (1 << 1)
-#define INCA_IP_Switch_UN_DEST_PU                              (1 << 0)
-
-/***VLAN Control Register***/
-#define INCA_IP_Switch_VLAN_CTRL                    ((volatile u32*)(INCA_IP_Switch+ 0x0004))
-#define INCA_IP_Switch_VLAN_CTRL_SC                              (1 << 6)
-#define INCA_IP_Switch_VLAN_CTRL_SL                              (1 << 5)
-#define INCA_IP_Switch_VLAN_CTRL_SP                              (1 << 4)
-#define INCA_IP_Switch_VLAN_CTRL_TC                              (1 << 3)
-#define INCA_IP_Switch_VLAN_CTRL_TL                              (1 << 2)
-#define INCA_IP_Switch_VLAN_CTRL_TP                              (1 << 1)
-#define INCA_IP_Switch_VLAN_CTRL_VA                              (1 << 0)
-
-/***PC VLAN Configuration Register***/
-#define INCA_IP_Switch_PC_VLAN                      ((volatile u32*)(INCA_IP_Switch+ 0x0008))
-#define INCA_IP_Switch_PC_VLAN_PRI (value)                (((( 1 << 3) - 1) & (value)) << 12)
-#define INCA_IP_Switch_PC_VLAN_VLAN_ID (value)            (((( 1 << 12) - 1) & (value)) << 0)
-
-/***LAN VLAN Configuration Register***/
-#define INCA_IP_Switch_LAN_VLAN                    ((volatile u32*)(INCA_IP_Switch+ 0x000C))
-#define INCA_IP_Switch_LAN_VLAN_PRI (value)                (((( 1 << 3) - 1) & (value)) << 12)
-#define INCA_IP_Switch_LAN_VLAN_VLAN_ID (value)            (((( 1 << 12) - 1) & (value)) << 0)
-
-/***CPU VLAN Configuration Register***/
-#define INCA_IP_Switch_CPU_VLAN                    ((volatile u32*)(INCA_IP_Switch+ 0x0010))
-#define INCA_IP_Switch_CPU_VLAN_PRI (value)                (((( 1 << 3) - 1) & (value)) << 12)
-#define INCA_IP_Switch_CPU_VLAN_VLAN_ID (value)            (((( 1 << 12) - 1) & (value)) << 0)
-
-/***Priority CoS Mapping Register***/
-#define INCA_IP_Switch_PRI_CoS                      ((volatile u32*)(INCA_IP_Switch+ 0x0014))
-#define INCA_IP_Switch_PRI_CoS_P7                              (1 << 7)
-#define INCA_IP_Switch_PRI_CoS_P6                              (1 << 6)
-#define INCA_IP_Switch_PRI_CoS_P5                              (1 << 5)
-#define INCA_IP_Switch_PRI_CoS_P4                              (1 << 4)
-#define INCA_IP_Switch_PRI_CoS_P3                              (1 << 3)
-#define INCA_IP_Switch_PRI_CoS_P2                              (1 << 2)
-#define INCA_IP_Switch_PRI_CoS_P1                              (1 << 1)
-#define INCA_IP_Switch_PRI_CoS_P0                              (1 << 0)
-
-/***Spanning Tree Port Status Register***/
-#define INCA_IP_Switch_ST_PT                        ((volatile u32*)(INCA_IP_Switch+ 0x0018))
-#define INCA_IP_Switch_ST_PT_CPS (value)                (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_Switch_ST_PT_LPS (value)                (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_Switch_ST_PT_PPS (value)                (((( 1 << 2) - 1) & (value)) << 0)
-
-/***ARL Control Register***/
-#define INCA_IP_Switch_ARL_CTL                      ((volatile u32*)(INCA_IP_Switch+ 0x001C))
-#define INCA_IP_Switch_ARL_CTL_CHCC                            (1 << 15)
-#define INCA_IP_Switch_ARL_CTL_CHCL                            (1 << 14)
-#define INCA_IP_Switch_ARL_CTL_CHCP                            (1 << 13)
-#define INCA_IP_Switch_ARL_CTL_CC                              (1 << 12)
-#define INCA_IP_Switch_ARL_CTL_CL                              (1 << 11)
-#define INCA_IP_Switch_ARL_CTL_CP                              (1 << 10)
-#define INCA_IP_Switch_ARL_CTL_CG                              (1 << 9)
-#define INCA_IP_Switch_ARL_CTL_PS                              (1 << 8)
-#define INCA_IP_Switch_ARL_CTL_MRO                              (1 << 7)
-#define INCA_IP_Switch_ARL_CTL_SRC                              (1 << 6)
-#define INCA_IP_Switch_ARL_CTL_ATS                              (1 << 5)
-#define INCA_IP_Switch_ARL_CTL_AGE_TICK_SEL (value)       (((( 1 << 3) - 1) & (value)) << 2)
-#define INCA_IP_Switch_ARL_CTL_MAF                              (1 << 1)
-#define INCA_IP_Switch_ARL_CTL_ENL                              (1 << 0)
-#define INCA_IP_Switch_ARL_CTL_Res (value)                (((( 1 << 19) - 1) & (value)) << 13)
-
-/***CPU Access Control Register***/
-#define INCA_IP_Switch_CPU_ACTL                    ((volatile u32*)(INCA_IP_Switch+ 0x0020))
-#define INCA_IP_Switch_CPU_ACTL_RA                              (1 << 31)
-#define INCA_IP_Switch_CPU_ACTL_RW                              (1 << 30)
-#define INCA_IP_Switch_CPU_ACTL_Res (value)                (((( 1 << 21) - 1) & (value)) << 9)
-#define INCA_IP_Switch_CPU_ACTL_AVA                              (1 << 8)
-#define INCA_IP_Switch_CPU_ACTL_IDX (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***CPU Access Data Register 1***/
-#define INCA_IP_Switch_DATA1                        ((volatile u32*)(INCA_IP_Switch+ 0x0024))
-#define INCA_IP_Switch_DATA1_Data (value)               (((( 1 << 24) - 1) & (value)) << 0)
-
-/***CPU Access Data Register 2***/
-#define INCA_IP_Switch_DATA2                        ((volatile u32*)(INCA_IP_Switch+ 0x0028))
-#define INCA_IP_Switch_DATA2_Data
-
-/***CPU Port Control Register***/
-#define INCA_IP_Switch_CPU_PCTL                    ((volatile u32*)(INCA_IP_Switch+ 0x002C))
-#define INCA_IP_Switch_CPU_PCTL_DA_PORTS (value)          (((( 1 << 3) - 1) & (value)) << 11)
-#define INCA_IP_Switch_CPU_PCTL_DAC                              (1 << 10)
-#define INCA_IP_Switch_CPU_PCTL_MA_STATE (value)          (((( 1 << 3) - 1) & (value)) << 7)
-#define INCA_IP_Switch_CPU_PCTL_MAM                              (1 << 6)
-#define INCA_IP_Switch_CPU_PCTL_MA_Ports (value)          (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_Switch_CPU_PCTL_MAC                              (1 << 2)
-#define INCA_IP_Switch_CPU_PCTL_EML                              (1 << 1)
-#define INCA_IP_Switch_CPU_PCTL_EDL                              (1 << 0)
-#define INCA_IP_Switch_CPU_PCTL_Res (value)                (((( 1 << 18) - 1) & (value)) << 14)
-
-/***DSCP CoS Mapping Register 1***/
-#define INCA_IP_Switch_DSCP_COS1                    ((volatile u32*)(INCA_IP_Switch+ 0x0030))
-#define INCA_IP_Switch_DSCP_COS1_DSCP
-
-/***DSCP CoS Mapping Register 1***/
-#define INCA_IP_Switch_DSCP_COS2                    ((volatile u32*)(INCA_IP_Switch+ 0x0034))
-#define INCA_IP_Switch_DSCP_COS2_DSCP
-
-/***PC WFQ Control Register***/
-#define INCA_IP_Switch_PC_WFQ_CTL                   ((volatile u32*)(INCA_IP_Switch+ 0x0080))
-#define INCA_IP_Switch_PC_WFQ_CTL_P1                              (1 << 9)
-#define INCA_IP_Switch_PC_WFQ_CTL_P0                              (1 << 8)
-#define INCA_IP_Switch_PC_WFQ_CTL_WT1 (value)                (((( 1 << 3) - 1) & (value)) << 5)
-#define INCA_IP_Switch_PC_WFQ_CTL_WT0 (value)                (((( 1 << 3) - 1) & (value)) << 2)
-#define INCA_IP_Switch_PC_WFQ_CTL_SCH_SEL (value)            (((( 1 << 2) - 1) & (value)) << 0)
-
-/***PC TX Control Register***/
-#define INCA_IP_Switch_PC_TX_CTL                    ((volatile u32*)(INCA_IP_Switch+ 0x0084))
-#define INCA_IP_Switch_PC_TX_CTL_ELR                              (1 << 1)
-#define INCA_IP_Switch_PC_TX_CTL_EER                              (1 << 0)
-
-/***LAN WFQ Control Register***/
-#define INCA_IP_Switch_LAN_WFQ_CTL                  ((volatile u32*)(INCA_IP_Switch+ 0x0100))
-#define INCA_IP_Switch_LAN_WFQ_CTL_P1                              (1 << 9)
-#define INCA_IP_Switch_LAN_WFQ_CTL_P0                              (1 << 8)
-#define INCA_IP_Switch_LAN_WFQ_CTL_WT1 (value)                (((( 1 << 3) - 1) & (value)) << 5)
-#define INCA_IP_Switch_LAN_WFQ_CTL_WT0 (value)                (((( 1 << 3) - 1) & (value)) << 2)
-#define INCA_IP_Switch_LAN_WFQ_CTL_SCH_SEL (value)            (((( 1 << 2) - 1) & (value)) << 0)
-
-/***LAN TX Control Register***/
-#define INCA_IP_Switch_LAN_TX_CTL                   ((volatile u32*)(INCA_IP_Switch+ 0x0104))
-#define INCA_IP_Switch_LAN_TX_CTL_ELR                              (1 << 1)
-#define INCA_IP_Switch_LAN_TX_CTL_EER                              (1 << 0)
-
-/***CPU WFQ Control Register***/
-#define INCA_IP_Switch_CPU_WFQ_CTL                  ((volatile u32*)(INCA_IP_Switch+ 0x0180))
-#define INCA_IP_Switch_CPU_WFQ_CTL_P1                              (1 << 9)
-#define INCA_IP_Switch_CPU_WFQ_CTL_P0                              (1 << 8)
-#define INCA_IP_Switch_CPU_WFQ_CTL_WT1 (value)                (((( 1 << 3) - 1) & (value)) << 5)
-#define INCA_IP_Switch_CPU_WFQ_CTL_WT0 (value)                (((( 1 << 3) - 1) & (value)) << 2)
-#define INCA_IP_Switch_CPU_WFQ_CTL_SCH_SEL (value)            (((( 1 << 2) - 1) & (value)) << 0)
-
-/***PM PC RX Watermark Register***/
-#define INCA_IP_Switch_PC_WM                        ((volatile u32*)(INCA_IP_Switch+ 0x0200))
-#define INCA_IP_Switch_PC_WM_RX_WM1 (value)             (((( 1 << 8) - 1) & (value)) << 24)
-#define INCA_IP_Switch_PC_WM_RX_WM2 (value)             (((( 1 << 8) - 1) & (value)) << 16)
-#define INCA_IP_Switch_PC_WM_RX_WM3 (value)             (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_Switch_PC_WM_RX_WM4 (value)             (((( 1 << 8) - 1) & (value)) << 0)
-
-/***PM LAN RX Watermark Register***/
-#define INCA_IP_Switch_LAN_WM                       ((volatile u32*)(INCA_IP_Switch+ 0x0204))
-#define INCA_IP_Switch_LAN_WM_RX_WM1 (value)             (((( 1 << 8) - 1) & (value)) << 24)
-#define INCA_IP_Switch_LAN_WM_RX_WM2 (value)             (((( 1 << 8) - 1) & (value)) << 16)
-#define INCA_IP_Switch_LAN_WM_RX_WM3 (value)             (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_Switch_LAN_WM_RX_WM4 (value)             (((( 1 << 8) - 1) & (value)) << 0)
-
-/***PM CPU RX Watermark Register***/
-#define INCA_IP_Switch_CPU_WM                       ((volatile u32*)(INCA_IP_Switch+ 0x0208))
-#define INCA_IP_Switch_CPU_WM_RX_WM1 (value)             (((( 1 << 8) - 1) & (value)) << 24)
-#define INCA_IP_Switch_CPU_WM_RX_WM2 (value)             (((( 1 << 8) - 1) & (value)) << 16)
-#define INCA_IP_Switch_CPU_WM_RX_WM3 (value)             (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_Switch_CPU_WM_RX_WM4 (value)             (((( 1 << 8) - 1) & (value)) << 0)
-
-/***PM CPU RX Watermark Register***/
-#define INCA_IP_Switch_GBL_WM                       ((volatile u32*)(INCA_IP_Switch+ 0x020C))
-#define INCA_IP_Switch_GBL_WM_GBL_RX_WM1 (value)         (((( 1 << 8) - 1) & (value)) << 24)
-#define INCA_IP_Switch_GBL_WM_GBL_RX_WM2 (value)         (((( 1 << 8) - 1) & (value)) << 16)
-#define INCA_IP_Switch_GBL_WM_GBL_RX_WM3 (value)         (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_Switch_GBL_WM_GBL_RX_WM4 (value)         (((( 1 << 8) - 1) & (value)) << 0)
-
-/***PM Control Register***/
-#define INCA_IP_Switch_PM_CTL                       ((volatile u32*)(INCA_IP_Switch+ 0x0210))
-#define INCA_IP_Switch_PM_CTL_GDN                              (1 << 3)
-#define INCA_IP_Switch_PM_CTL_CDN                              (1 << 2)
-#define INCA_IP_Switch_PM_CTL_LDN                              (1 << 1)
-#define INCA_IP_Switch_PM_CTL_PDN                              (1 << 0)
-
-/***PM Header Control Register***/
-#define INCA_IP_Switch_PMAC_HD_CTL                  ((volatile u32*)(INCA_IP_Switch+ 0x0280))
-#define INCA_IP_Switch_PMAC_HD_CTL_RL2                              (1 << 21)
-#define INCA_IP_Switch_PMAC_HD_CTL_RC                              (1 << 20)
-#define INCA_IP_Switch_PMAC_HD_CTL_CM                              (1 << 19)
-#define INCA_IP_Switch_PMAC_HD_CTL_CV                              (1 << 18)
-#define INCA_IP_Switch_PMAC_HD_CTL_TYPE_LEN (value)          (((( 1 << 16) - 1) & (value)) << 2)
-#define INCA_IP_Switch_PMAC_HD_CTL_TAG                              (1 << 1)
-#define INCA_IP_Switch_PMAC_HD_CTL_ADD                              (1 << 0)
-
-/***PM Source Address Register 1***/
-#define INCA_IP_Switch_PMAC_SA1                    ((volatile u32*)(INCA_IP_Switch+ 0x0284))
-#define INCA_IP_Switch_PMAC_SA1_SA_47_32 (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***PM Source Address Register 2***/
-#define INCA_IP_Switch_PMAC_SA2                    ((volatile u32*)(INCA_IP_Switch+ 0x0288))
-#define INCA_IP_Switch_PMAC_SA2_SA_31_0
-
-/***PM Dest Address Register 1***/
-#define INCA_IP_Switch_PMAC_DA1                    ((volatile u32*)(INCA_IP_Switch+ 0x028C))
-#define INCA_IP_Switch_PMAC_DA1_DA_47_32 (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***PM Dest Address Register 2***/
-#define INCA_IP_Switch_PMAC_DA2                    ((volatile u32*)(INCA_IP_Switch+ 0x0290))
-#define INCA_IP_Switch_PMAC_DA2_DA_31_0
-
-/***PM VLAN Register***/
-#define INCA_IP_Switch_PMAC_VLAN                    ((volatile u32*)(INCA_IP_Switch+ 0x0294))
-#define INCA_IP_Switch_PMAC_VLAN_PRI (value)                (((( 1 << 3) - 1) & (value)) << 13)
-#define INCA_IP_Switch_PMAC_VLAN_CFI                              (1 << 12)
-#define INCA_IP_Switch_PMAC_VLAN_VLANID (value)             (((( 1 << 12) - 1) & (value)) << 0)
-
-/***PM TX IPG Counter Register***/
-#define INCA_IP_Switch_PMAC_TX_IPG                  ((volatile u32*)(INCA_IP_Switch+ 0x0298))
-#define INCA_IP_Switch_PMAC_TX_IPG_IPGCNT (value)             (((( 1 << 8) - 1) & (value)) << 0)
-
-/***PM RX IPG Counter Register***/
-#define INCA_IP_Switch_PMAC_RX_IPG                  ((volatile u32*)(INCA_IP_Switch+ 0x029C))
-#define INCA_IP_Switch_PMAC_RX_IPG_IPGCNT (value)             (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Mirror Register***/
-#define INCA_IP_Switch_MRR                          ((volatile u32*)(INCA_IP_Switch+ 0x0300))
-#define INCA_IP_Switch_MRR_MRR (value)                (((( 1 << 2) - 1) & (value)) << 6)
-#define INCA_IP_Switch_MRR_EC                              (1 << 5)
-#define INCA_IP_Switch_MRR_EL                              (1 << 4)
-#define INCA_IP_Switch_MRR_EP                              (1 << 3)
-#define INCA_IP_Switch_MRR_IC                              (1 << 2)
-#define INCA_IP_Switch_MRR_IL                              (1 << 1)
-#define INCA_IP_Switch_MRR_IP                              (1 << 0)
-
-/***Packet Length Register***/
-#define INCA_IP_Switch_PKT_LEN                      ((volatile u32*)(INCA_IP_Switch+ 0x0304))
-#define INCA_IP_Switch_PKT_LEN_ADD                              (1 << 11)
-#define INCA_IP_Switch_PKT_LEN_MAX_PKT_LEN (value)        (((( 1 << 11) - 1) & (value)) << 0)
-
-/***MDIO Access Register***/
-#define INCA_IP_Switch_MDIO_ACC                    ((volatile u32*)(INCA_IP_Switch+ 0x0480))
-#define INCA_IP_Switch_MDIO_ACC_RA                              (1 << 31)
-#define INCA_IP_Switch_MDIO_ACC_RW                              (1 << 30)
-#define INCA_IP_Switch_MDIO_ACC_PHY_ADDR (value)          (((( 1 << 5) - 1) & (value)) << 21)
-#define INCA_IP_Switch_MDIO_ACC_REG_ADDR (value)          (((( 1 << 5) - 1) & (value)) << 16)
-#define INCA_IP_Switch_MDIO_ACC_PHY_DATA (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***Ethernet PHY Register***/
-#define INCA_IP_Switch_EPHY                         ((volatile u32*)(INCA_IP_Switch+ 0x0484))
-#define INCA_IP_Switch_EPHY_SL                              (1 << 7)
-#define INCA_IP_Switch_EPHY_SP                              (1 << 6)
-#define INCA_IP_Switch_EPHY_LL                              (1 << 5)
-#define INCA_IP_Switch_EPHY_LP                              (1 << 4)
-#define INCA_IP_Switch_EPHY_DL                              (1 << 3)
-#define INCA_IP_Switch_EPHY_DP                              (1 << 2)
-#define INCA_IP_Switch_EPHY_PL                              (1 << 1)
-#define INCA_IP_Switch_EPHY_PP                              (1 << 0)
-
-/***Pause Write Enable Register***/
-#define INCA_IP_Switch_PWR_EN                       ((volatile u32*)(INCA_IP_Switch+ 0x0488))
-#define INCA_IP_Switch_PWR_EN_PL                              (1 << 1)
-#define INCA_IP_Switch_PWR_EN_PP                              (1 << 0)
-
-/***MDIO Configuration Register***/
-#define INCA_IP_Switch_MDIO_CFG                    ((volatile u32*)(INCA_IP_Switch+ 0x048C))
-#define INCA_IP_Switch_MDIO_CFG_MDS (value)                (((( 1 << 2) - 1) & (value)) << 14)
-#define INCA_IP_Switch_MDIO_CFG_PHY_LAN_ADDR (value)       (((( 1 << 5) - 1) & (value)) << 9)
-#define INCA_IP_Switch_MDIO_CFG_PHY_PC_ADDR (value)        (((( 1 << 5) - 1) & (value)) << 4)
-#define INCA_IP_Switch_MDIO_CFG_UEP                              (1 << 3)
-#define INCA_IP_Switch_MDIO_CFG_PS                              (1 << 2)
-#define INCA_IP_Switch_MDIO_CFG_PT                              (1 << 1)
-#define INCA_IP_Switch_MDIO_CFG_UMM                              (1 << 0)
-
-/***Clock Configuration Register***/
-#define INCA_IP_Switch_CLK_CFG                      ((volatile u32*)(INCA_IP_Switch+ 0x0500))
-#define INCA_IP_Switch_CLK_CFG_ARL_ID                        (1 << 9)
-#define INCA_IP_Switch_CLK_CFG_CPU_ID                        (1 << 8)
-#define INCA_IP_Switch_CLK_CFG_LAN_ID                        (1 << 7)
-#define INCA_IP_Switch_CLK_CFG_PC_ID                          (1 << 6)
-#define INCA_IP_Switch_CLK_CFG_SE_ID                          (1 << 5)
-
-/***********************************************************************/
-/*  Module      :  SSC1 register address and bits                      */
-/***********************************************************************/
-
-#define INCA_IP_SSC1                         (0xB8000500)
-/***********************************************************************/
-
-
-/***Control Register (Programming Mode)***/
-#define INCA_IP_SSC1_SCC_CON_PRG                  ((volatile u32*)(INCA_IP_SSC1+ 0x0010))
-#define INCA_IP_SSC1_SCC_CON_PRG_EN                              (1 << 15)
-#define INCA_IP_SSC1_SCC_CON_PRG_MS                              (1 << 14)
-#define INCA_IP_SSC1_SCC_CON_PRG_AREN                            (1 << 12)
-#define INCA_IP_SSC1_SCC_CON_PRG_BEN                              (1 << 11)
-#define INCA_IP_SSC1_SCC_CON_PRG_PEN                              (1 << 10)
-#define INCA_IP_SSC1_SCC_CON_PRG_REN                              (1 << 9)
-#define INCA_IP_SSC1_SCC_CON_PRG_TEN                              (1 << 8)
-#define INCA_IP_SSC1_SCC_CON_PRG_LB                              (1 << 7)
-#define INCA_IP_SSC1_SCC_CON_PRG_PO                              (1 << 6)
-#define INCA_IP_SSC1_SCC_CON_PRG_PH                              (1 << 5)
-#define INCA_IP_SSC1_SCC_CON_PRG_HB                              (1 << 4)
-#define INCA_IP_SSC1_SCC_CON_PRG_BM (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***SCC Control Register (Operating Mode)***/
-#define INCA_IP_SSC1_SCC_CON_OPR                  ((volatile u32*)(INCA_IP_SSC1+ 0x0010))
-#define INCA_IP_SSC1_SCC_CON_OPR_EN                              (1 << 15)
-#define INCA_IP_SSC1_SCC_CON_OPR_MS                              (1 << 14)
-#define INCA_IP_SSC1_SCC_CON_OPR_BSY                              (1 << 12)
-#define INCA_IP_SSC1_SCC_CON_OPR_BE                              (1 << 11)
-#define INCA_IP_SSC1_SCC_CON_OPR_PE                              (1 << 10)
-#define INCA_IP_SSC1_SCC_CON_OPR_RE                              (1 << 9)
-#define INCA_IP_SSC1_SCC_CON_OPR_TE                              (1 << 8)
-#define INCA_IP_SSC1_SCC_CON_OPR_BC (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***SSC Write Hardware Modified Control Register***/
-#define INCA_IP_SSC1_SSC_WHBCON                   ((volatile u32*)(INCA_IP_SSC1+ 0x0040))
-#define INCA_IP_SSC1_SSC_WHBCON_SETBE                          (1 << 15)
-#define INCA_IP_SSC1_SSC_WHBCON_SETPE                          (1 << 14)
-#define INCA_IP_SSC1_SSC_WHBCON_SETRE                          (1 << 13)
-#define INCA_IP_SSC1_SSC_WHBCON_SETTE                          (1 << 12)
-#define INCA_IP_SSC1_SSC_WHBCON_CLRBE                          (1 << 11)
-#define INCA_IP_SSC1_SSC_WHBCON_CLRPE                          (1 << 10)
-#define INCA_IP_SSC1_SSC_WHBCON_CLRRE                          (1 << 9)
-#define INCA_IP_SSC1_SSC_WHBCON_CLRTE                          (1 << 8)
-
-/***SSC Baudrate Timer Reload Register***/
-#define INCA_IP_SSC1_SSC_BR                       ((volatile u32*)(INCA_IP_SSC1+ 0x0014))
-#define INCA_IP_SSC1_SSC_BR_BR_VALUE (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***SSC Transmitter Buffer Register***/
-#define INCA_IP_SSC1_SSC_TB                       ((volatile u32*)(INCA_IP_SSC1+ 0x0020))
-#define INCA_IP_SSC1_SSC_TB_TB_VALUE (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***SSC Receiver Buffer Register***/
-#define INCA_IP_SSC1_SSC_RB                       ((volatile u32*)(INCA_IP_SSC1+ 0x0024))
-#define INCA_IP_SSC1_SSC_RB_RB_VALUE (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***SSC Receive FIFO Control Register***/
-#define INCA_IP_SSC1_SSC_RXFCON                   ((volatile u32*)(INCA_IP_SSC1+ 0x0030))
-#define INCA_IP_SSC1_SSC_RXFCON_RXFITL (value)             (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_SSC1_SSC_RXFCON_RXTMEN                        (1 << 2)
-#define INCA_IP_SSC1_SSC_RXFCON_RXFLU                          (1 << 1)
-#define INCA_IP_SSC1_SSC_RXFCON_RXFEN                          (1 << 0)
-
-/***SSC Transmit FIFO Control Register***/
-#define INCA_IP_SSC1_SSC_TXFCON                   ((volatile u32*)(INCA_IP_SSC1+ 0x0034))
-#define INCA_IP_SSC1_SSC_TXFCON_RXFITL (value)             (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_SSC1_SSC_TXFCON_TXTMEN                        (1 << 2)
-#define INCA_IP_SSC1_SSC_TXFCON_TXFLU                          (1 << 1)
-#define INCA_IP_SSC1_SSC_TXFCON_TXFEN                          (1 << 0)
-
-/***SSC FIFO Status Register***/
-#define INCA_IP_SSC1_SSC_FSTAT                    ((volatile u32*)(INCA_IP_SSC1+ 0x0038))
-#define INCA_IP_SSC1_SSC_FSTAT_TXFFL (value)              (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_SSC1_SSC_FSTAT_RXFFL (value)              (((( 1 << 6) - 1) & (value)) << 0)
-
-/***SSC Clock Control Register***/
-#define INCA_IP_SSC1_SSC_CLC                      ((volatile u32*)(INCA_IP_SSC1+ 0x0000))
-#define INCA_IP_SSC1_SSC_CLC_RMC (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_SSC1_SSC_CLC_DISS                            (1 << 1)
-#define INCA_IP_SSC1_SSC_CLC_DISR                            (1 << 0)
-
-/***********************************************************************/
-/*  Module      :  SSC2 register address and bits                      */
-/***********************************************************************/
-
-#define INCA_IP_SSC2                         (0xB8000600)
-/***********************************************************************/
-
-
-/***Control Register (Programming Mode)***/
-#define INCA_IP_SSC2_SCC_CON_PRG                  ((volatile u32*)(INCA_IP_SSC2+ 0x0010))
-#define INCA_IP_SSC2_SCC_CON_PRG_EN                              (1 << 15)
-#define INCA_IP_SSC2_SCC_CON_PRG_MS                              (1 << 14)
-#define INCA_IP_SSC2_SCC_CON_PRG_AREN                            (1 << 12)
-#define INCA_IP_SSC2_SCC_CON_PRG_BEN                              (1 << 11)
-#define INCA_IP_SSC2_SCC_CON_PRG_PEN                              (1 << 10)
-#define INCA_IP_SSC2_SCC_CON_PRG_REN                              (1 << 9)
-#define INCA_IP_SSC2_SCC_CON_PRG_TEN                              (1 << 8)
-#define INCA_IP_SSC2_SCC_CON_PRG_LB                              (1 << 7)
-#define INCA_IP_SSC2_SCC_CON_PRG_PO                              (1 << 6)
-#define INCA_IP_SSC2_SCC_CON_PRG_PH                              (1 << 5)
-#define INCA_IP_SSC2_SCC_CON_PRG_HB                              (1 << 4)
-#define INCA_IP_SSC2_SCC_CON_PRG_BM (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***SCC Control Register (Operating Mode)***/
-#define INCA_IP_SSC2_SCC_CON_OPR                  ((volatile u32*)(INCA_IP_SSC2+ 0x0010))
-#define INCA_IP_SSC2_SCC_CON_OPR_EN                              (1 << 15)
-#define INCA_IP_SSC2_SCC_CON_OPR_MS                              (1 << 14)
-#define INCA_IP_SSC2_SCC_CON_OPR_BSY                              (1 << 12)
-#define INCA_IP_SSC2_SCC_CON_OPR_BE                              (1 << 11)
-#define INCA_IP_SSC2_SCC_CON_OPR_PE                              (1 << 10)
-#define INCA_IP_SSC2_SCC_CON_OPR_RE                              (1 << 9)
-#define INCA_IP_SSC2_SCC_CON_OPR_TE                              (1 << 8)
-#define INCA_IP_SSC2_SCC_CON_OPR_BC (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***SSC Write Hardware Modified Control Register***/
-#define INCA_IP_SSC2_SSC_WHBCON                   ((volatile u32*)(INCA_IP_SSC2+ 0x0040))
-#define INCA_IP_SSC2_SSC_WHBCON_SETBE                          (1 << 15)
-#define INCA_IP_SSC2_SSC_WHBCON_SETPE                          (1 << 14)
-#define INCA_IP_SSC2_SSC_WHBCON_SETRE                          (1 << 13)
-#define INCA_IP_SSC2_SSC_WHBCON_SETTE                          (1 << 12)
-#define INCA_IP_SSC2_SSC_WHBCON_CLRBE                          (1 << 11)
-#define INCA_IP_SSC2_SSC_WHBCON_CLRPE                          (1 << 10)
-#define INCA_IP_SSC2_SSC_WHBCON_CLRRE                          (1 << 9)
-#define INCA_IP_SSC2_SSC_WHBCON_CLRTE                          (1 << 8)
-
-/***SSC Baudrate Timer Reload Register***/
-#define INCA_IP_SSC2_SSC_BR                       ((volatile u32*)(INCA_IP_SSC2+ 0x0014))
-#define INCA_IP_SSC2_SSC_BR_BR_VALUE (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***SSC Transmitter Buffer Register***/
-#define INCA_IP_SSC2_SSC_TB                       ((volatile u32*)(INCA_IP_SSC2+ 0x0020))
-#define INCA_IP_SSC2_SSC_TB_TB_VALUE (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***SSC Receiver Buffer Register***/
-#define INCA_IP_SSC2_SSC_RB                       ((volatile u32*)(INCA_IP_SSC2+ 0x0024))
-#define INCA_IP_SSC2_SSC_RB_RB_VALUE (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***SSC Receive FIFO Control Register***/
-#define INCA_IP_SSC2_SSC_RXFCON                   ((volatile u32*)(INCA_IP_SSC2+ 0x0030))
-#define INCA_IP_SSC2_SSC_RXFCON_RXFITL (value)             (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_SSC2_SSC_RXFCON_RXTMEN                        (1 << 2)
-#define INCA_IP_SSC2_SSC_RXFCON_RXFLU                          (1 << 1)
-#define INCA_IP_SSC2_SSC_RXFCON_RXFEN                          (1 << 0)
-
-/***SSC Transmit FIFO Control Register***/
-#define INCA_IP_SSC2_SSC_TXFCON                   ((volatile u32*)(INCA_IP_SSC2+ 0x0034))
-#define INCA_IP_SSC2_SSC_TXFCON_RXFITL (value)             (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_SSC2_SSC_TXFCON_TXTMEN                        (1 << 2)
-#define INCA_IP_SSC2_SSC_TXFCON_TXFLU                          (1 << 1)
-#define INCA_IP_SSC2_SSC_TXFCON_TXFEN                          (1 << 0)
-
-/***SSC FIFO Status Register***/
-#define INCA_IP_SSC2_SSC_FSTAT                    ((volatile u32*)(INCA_IP_SSC2+ 0x0038))
-#define INCA_IP_SSC2_SSC_FSTAT_TXFFL (value)              (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_SSC2_SSC_FSTAT_RXFFL (value)              (((( 1 << 6) - 1) & (value)) << 0)
-
-/***SSC Clock Control Register***/
-#define INCA_IP_SSC2_SSC_CLC                      ((volatile u32*)(INCA_IP_SSC2+ 0x0000))
-#define INCA_IP_SSC2_SSC_CLC_RMC (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_SSC2_SSC_CLC_DISS                            (1 << 1)
-#define INCA_IP_SSC2_SSC_CLC_DISR                            (1 << 0)
-
-/***********************************************************************/
-/*  Module      :  EBU register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_EBU                          (0xB8000200)
-/***********************************************************************/
-
-
-/***EBU Clock Control Register***/
-#define INCA_IP_EBU_EBU_CLC                      ((volatile u32*)(INCA_IP_EBU+ 0x0000))
-#define INCA_IP_EBU_EBU_CLC_DISS                            (1 << 1)
-#define INCA_IP_EBU_EBU_CLC_DISR                            (1 << 0)
-
-/***EBU Global Control Register***/
-#define INCA_IP_EBU_EBU_CON                      ((volatile u32*)(INCA_IP_EBU+ 0x0010))
-#define INCA_IP_EBU_EBU_CON_DTACS (value)              (((( 1 << 3) - 1) & (value)) << 20)
-#define INCA_IP_EBU_EBU_CON_DTARW (value)              (((( 1 << 3) - 1) & (value)) << 16)
-#define INCA_IP_EBU_EBU_CON_TOUTC (value)              (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_EBU_EBU_CON_ARBMODE (value)            (((( 1 << 2) - 1) & (value)) << 6)
-#define INCA_IP_EBU_EBU_CON_ARBSYNC                      (1 << 5)
-#define INCA_IP_EBU_EBU_CON_1                              (1 << 3)
-
-/***EBU Address Select Register 0***/
-#define INCA_IP_EBU_EBU_ADDSEL0                  ((volatile u32*)(INCA_IP_EBU+ 0x0020))
-#define INCA_IP_EBU_EBU_ADDSEL0_BASE (value)               (((( 1 << 20) - 1) & (value)) << 12)
-#define INCA_IP_EBU_EBU_ADDSEL0_MASK (value)               (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_EBU_EBU_ADDSEL0_MIRRORE                      (1 << 1)
-#define INCA_IP_EBU_EBU_ADDSEL0_REGEN                          (1 << 0)
-
-/***EBU Address Select Register 1***/
-#define INCA_IP_EBU_EBU_ADDSEL1                  ((volatile u32*)(INCA_IP_EBU+ 0x0024))
-#define INCA_IP_EBU_EBU_ADDSEL1_BASE (value)               (((( 1 << 20) - 1) & (value)) << 12)
-#define INCA_IP_EBU_EBU_ADDSEL1_MASK (value)               (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_EBU_EBU_ADDSEL1_MIRRORE                      (1 << 1)
-#define INCA_IP_EBU_EBU_ADDSEL1_REGEN                          (1 << 0)
-
-/***EBU Address Select Register 2***/
-#define INCA_IP_EBU_EBU_ADDSEL2                  ((volatile u32*)(INCA_IP_EBU+ 0x0028))
-#define INCA_IP_EBU_EBU_ADDSEL2_BASE (value)               (((( 1 << 20) - 1) & (value)) << 12)
-#define INCA_IP_EBU_EBU_ADDSEL2_MASK (value)               (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_EBU_EBU_ADDSEL2_MIRRORE                      (1 << 1)
-#define INCA_IP_EBU_EBU_ADDSEL2_REGEN                          (1 << 0)
-
-/***EBU Bus Configuration Register 0***/
-#define INCA_IP_EBU_EBU_BUSCON0                  ((volatile u32*)(INCA_IP_EBU+ 0x0060))
-#define INCA_IP_EBU_EBU_BUSCON0_WRDIS                          (1 << 31)
-#define INCA_IP_EBU_EBU_BUSCON0_ALEC (value)               (((( 1 << 2) - 1) & (value)) << 29)
-#define INCA_IP_EBU_EBU_BUSCON0_BCGEN (value)              (((( 1 << 2) - 1) & (value)) << 27)
-#define INCA_IP_EBU_EBU_BUSCON0_AGEN (value)               (((( 1 << 2) - 1) & (value)) << 24)
-#define INCA_IP_EBU_EBU_BUSCON0_CMULTR (value)             (((( 1 << 2) - 1) & (value)) << 22)
-#define INCA_IP_EBU_EBU_BUSCON0_WAIT (value)               (((( 1 << 2) - 1) & (value)) << 20)
-#define INCA_IP_EBU_EBU_BUSCON0_WAITINV                      (1 << 19)
-#define INCA_IP_EBU_EBU_BUSCON0_SETUP                          (1 << 18)
-#define INCA_IP_EBU_EBU_BUSCON0_PORTW (value)              (((( 1 << 2) - 1) & (value)) << 16)
-#define INCA_IP_EBU_EBU_BUSCON0_WAITRDC (value)            (((( 1 << 7) - 1) & (value)) << 9)
-#define INCA_IP_EBU_EBU_BUSCON0_WAITWRC (value)            (((( 1 << 3) - 1) & (value)) << 6)
-#define INCA_IP_EBU_EBU_BUSCON0_HOLDC (value)              (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_EBU_EBU_BUSCON0_RECOVC (value)             (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_EBU_EBU_BUSCON0_CMULT (value)              (((( 1 << 2) - 1) & (value)) << 0)
-
-/***EBU Bus Configuration Register 1***/
-#define INCA_IP_EBU_EBU_BUSCON1                  ((volatile u32*)(INCA_IP_EBU+ 0x0064))
-#define INCA_IP_EBU_EBU_BUSCON1_WRDIS                          (1 << 31)
-#define INCA_IP_EBU_EBU_BUSCON1_ALEC (value)               (((( 1 << 2) - 1) & (value)) << 29)
-#define INCA_IP_EBU_EBU_BUSCON1_BCGEN (value)              (((( 1 << 2) - 1) & (value)) << 27)
-#define INCA_IP_EBU_EBU_BUSCON1_AGEN (value)               (((( 1 << 2) - 1) & (value)) << 24)
-#define INCA_IP_EBU_EBU_BUSCON1_CMULTR (value)             (((( 1 << 2) - 1) & (value)) << 22)
-#define INCA_IP_EBU_EBU_BUSCON1_WAIT (value)               (((( 1 << 2) - 1) & (value)) << 20)
-#define INCA_IP_EBU_EBU_BUSCON1_WAITINV                      (1 << 19)
-#define INCA_IP_EBU_EBU_BUSCON1_SETUP                          (1 << 18)
-#define INCA_IP_EBU_EBU_BUSCON1_PORTW (value)              (((( 1 << 2) - 1) & (value)) << 16)
-#define INCA_IP_EBU_EBU_BUSCON1_WAITRDC (value)            (((( 1 << 7) - 1) & (value)) << 9)
-#define INCA_IP_EBU_EBU_BUSCON1_WAITWRC (value)            (((( 1 << 3) - 1) & (value)) << 6)
-#define INCA_IP_EBU_EBU_BUSCON1_HOLDC (value)              (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_EBU_EBU_BUSCON1_RECOVC (value)             (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_EBU_EBU_BUSCON1_CMULT (value)              (((( 1 << 2) - 1) & (value)) << 0)
-
-/***EBU Bus Configuration Register 2***/
-#define INCA_IP_EBU_EBU_BUSCON2                  ((volatile u32*)(INCA_IP_EBU+ 0x0068))
-#define INCA_IP_EBU_EBU_BUSCON2_WRDIS                          (1 << 31)
-#define INCA_IP_EBU_EBU_BUSCON2_ALEC (value)               (((( 1 << 2) - 1) & (value)) << 29)
-#define INCA_IP_EBU_EBU_BUSCON2_BCGEN (value)              (((( 1 << 2) - 1) & (value)) << 27)
-#define INCA_IP_EBU_EBU_BUSCON2_AGEN (value)               (((( 1 << 2) - 1) & (value)) << 24)
-#define INCA_IP_EBU_EBU_BUSCON2_CMULTR (value)             (((( 1 << 2) - 1) & (value)) << 22)
-#define INCA_IP_EBU_EBU_BUSCON2_WAIT (value)               (((( 1 << 2) - 1) & (value)) << 20)
-#define INCA_IP_EBU_EBU_BUSCON2_WAITINV                      (1 << 19)
-#define INCA_IP_EBU_EBU_BUSCON2_SETUP                          (1 << 18)
-#define INCA_IP_EBU_EBU_BUSCON2_PORTW (value)              (((( 1 << 2) - 1) & (value)) << 16)
-#define INCA_IP_EBU_EBU_BUSCON2_WAITRDC (value)            (((( 1 << 7) - 1) & (value)) << 9)
-#define INCA_IP_EBU_EBU_BUSCON2_WAITWRC (value)            (((( 1 << 3) - 1) & (value)) << 6)
-#define INCA_IP_EBU_EBU_BUSCON2_HOLDC (value)              (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_EBU_EBU_BUSCON2_RECOVC (value)             (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_EBU_EBU_BUSCON2_CMULT (value)              (((( 1 << 2) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  SDRAM register address and bits                     */
-/***********************************************************************/
-
-#define INCA_IP_SDRAM                        (0xBF800000)
-/***********************************************************************/
-
-
-/***MC Access Error Cause Register***/
-#define INCA_IP_SDRAM_MC_ERRCAUSE                  ((volatile u32*)(INCA_IP_SDRAM+ 0x0100))
-#define INCA_IP_SDRAM_MC_ERRCAUSE_ERR                              (1 << 31)
-#define INCA_IP_SDRAM_MC_ERRCAUSE_PORT (value)               (((( 1 << 4) - 1) & (value)) << 16)
-#define INCA_IP_SDRAM_MC_ERRCAUSE_CAUSE (value)              (((( 1 << 2) - 1) & (value)) << 0)
-#define INCA_IP_SDRAM_MC_ERRCAUSE_Res (value)                (((( 1 << NaN) - 1) & (value)) << NaN)
-
-/***MC Access Error Address Register***/
-#define INCA_IP_SDRAM_MC_ERRADDR                   ((volatile u32*)(INCA_IP_SDRAM+ 0x0108))
-#define INCA_IP_SDRAM_MC_ERRADDR_ADDR
-
-/***MC I/O General Purpose Register***/
-#define INCA_IP_SDRAM_MC_IOGP                      ((volatile u32*)(INCA_IP_SDRAM+ 0x0800))
-#define INCA_IP_SDRAM_MC_IOGP_GPR6 (value)               (((( 1 << 4) - 1) & (value)) << 28)
-#define INCA_IP_SDRAM_MC_IOGP_GPR5 (value)               (((( 1 << 4) - 1) & (value)) << 24)
-#define INCA_IP_SDRAM_MC_IOGP_GPR4 (value)               (((( 1 << 4) - 1) & (value)) << 20)
-#define INCA_IP_SDRAM_MC_IOGP_GPR3 (value)               (((( 1 << 4) - 1) & (value)) << 16)
-#define INCA_IP_SDRAM_MC_IOGP_GPR2 (value)               (((( 1 << 4) - 1) & (value)) << 12)
-#define INCA_IP_SDRAM_MC_IOGP_CPS                              (1 << 11)
-#define INCA_IP_SDRAM_MC_IOGP_CLKDELAY (value)          (((( 1 << 3) - 1) & (value)) << 8)
-#define INCA_IP_SDRAM_MC_IOGP_CLKRAT (value)             (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_SDRAM_MC_IOGP_RDDEL (value)              (((( 1 << 4) - 1) & (value)) << 0)
-
-/***MC Self Refresh Register***/
-#define INCA_IP_SDRAM_MC_SELFRFSH                  ((volatile u32*)(INCA_IP_SDRAM+ 0x0A00))
-#define INCA_IP_SDRAM_MC_SELFRFSH_PWDS                            (1 << 1)
-#define INCA_IP_SDRAM_MC_SELFRFSH_PWD                              (1 << 0)
-#define INCA_IP_SDRAM_MC_SELFRFSH_Res (value)                (((( 1 << 30) - 1) & (value)) << 2)
-
-/***MC Enable Register***/
-#define INCA_IP_SDRAM_MC_CTRLENA                   ((volatile u32*)(INCA_IP_SDRAM+ 0x1000))
-#define INCA_IP_SDRAM_MC_CTRLENA_ENA                              (1 << 0)
-#define INCA_IP_SDRAM_MC_CTRLENA_Res (value)                (((( 1 << 31) - 1) & (value)) << 1)
-
-/***MC Mode Register Setup Code***/
-#define INCA_IP_SDRAM_MC_MRSCODE                   ((volatile u32*)(INCA_IP_SDRAM+ 0x1008))
-#define INCA_IP_SDRAM_MC_MRSCODE_UMC (value)                (((( 1 << 5) - 1) & (value)) << 7)
-#define INCA_IP_SDRAM_MC_MRSCODE_CL (value)                (((( 1 << 3) - 1) & (value)) << 4)
-#define INCA_IP_SDRAM_MC_MRSCODE_WT                              (1 << 3)
-#define INCA_IP_SDRAM_MC_MRSCODE_BL (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***MC Configuration Data-word Width Register***/
-#define INCA_IP_SDRAM_MC_CFGDW                    ((volatile u32*)(INCA_IP_SDRAM+ 0x1010))
-#define INCA_IP_SDRAM_MC_CFGDW_DW (value)                (((( 1 << 4) - 1) & (value)) << 0)
-#define INCA_IP_SDRAM_MC_CFGDW_Res (value)                (((( 1 << 28) - 1) & (value)) << 4)
-
-/***MC Configuration Physical Bank 0 Register***/
-#define INCA_IP_SDRAM_MC_CFGPB0                    ((volatile u32*)(INCA_IP_SDRAM+ 0x1018))
-#define INCA_IP_SDRAM_MC_CFGPB0_MCSEN0 (value)             (((( 1 << 4) - 1) & (value)) << 12)
-#define INCA_IP_SDRAM_MC_CFGPB0_BANKN0 (value)             (((( 1 << 4) - 1) & (value)) << 8)
-#define INCA_IP_SDRAM_MC_CFGPB0_ROWW0 (value)              (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_SDRAM_MC_CFGPB0_COLW0 (value)              (((( 1 << 4) - 1) & (value)) << 0)
-#define INCA_IP_SDRAM_MC_CFGPB0_Res (value)                (((( 1 << 16) - 1) & (value)) << 16)
-
-/***MC Latency Register***/
-#define INCA_IP_SDRAM_MC_LATENCY                   ((volatile u32*)(INCA_IP_SDRAM+ 0x1038))
-#define INCA_IP_SDRAM_MC_LATENCY_TRP (value)                (((( 1 << 4) - 1) & (value)) << 16)
-#define INCA_IP_SDRAM_MC_LATENCY_TRAS (value)               (((( 1 << 4) - 1) & (value)) << 12)
-#define INCA_IP_SDRAM_MC_LATENCY_TRCD (value)               (((( 1 << 4) - 1) & (value)) << 8)
-#define INCA_IP_SDRAM_MC_LATENCY_TDPL (value)               (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_SDRAM_MC_LATENCY_TDAL (value)               (((( 1 << 4) - 1) & (value)) << 0)
-#define INCA_IP_SDRAM_MC_LATENCY_Res (value)                (((( 1 << 12) - 1) & (value)) << 20)
-
-/***MC Refresh Cycle Time Register***/
-#define INCA_IP_SDRAM_MC_TREFRESH                  ((volatile u32*)(INCA_IP_SDRAM+ 0x1040))
-#define INCA_IP_SDRAM_MC_TREFRESH_TREF (value)               (((( 1 << 13) - 1) & (value)) << 0)
-#define INCA_IP_SDRAM_MC_TREFRESH_Res (value)                (((( 1 << 19) - 1) & (value)) << 13)
-
-/***********************************************************************/
-/*  Module      :  GPTU register address and bits                      */
-/***********************************************************************/
-
-#define INCA_IP_GPTU                         (0xB8000300)
-/***********************************************************************/
-
-
-/***GPT Clock Control Register***/
-#define INCA_IP_GPTU_GPT_CLC                      ((volatile u32*)(INCA_IP_GPTU+ 0x0000))
-#define INCA_IP_GPTU_GPT_CLC_RMC (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_GPTU_GPT_CLC_DISS                            (1 << 1)
-#define INCA_IP_GPTU_GPT_CLC_DISR                            (1 << 0)
-
-/***GPT Timer 3 Control Register***/
-#define INCA_IP_GPTU_GPT_T3CON                    ((volatile u32*)(INCA_IP_GPTU+ 0x0014))
-#define INCA_IP_GPTU_GPT_T3CON_T3RDIR                        (1 << 15)
-#define INCA_IP_GPTU_GPT_T3CON_T3CHDIR                      (1 << 14)
-#define INCA_IP_GPTU_GPT_T3CON_T3EDGE                        (1 << 13)
-#define INCA_IP_GPTU_GPT_T3CON_BPS1 (value)               (((( 1 << 2) - 1) & (value)) << 11)
-#define INCA_IP_GPTU_GPT_T3CON_T3OTL                          (1 << 10)
-#define INCA_IP_GPTU_GPT_T3CON_T3UD                            (1 << 7)
-#define INCA_IP_GPTU_GPT_T3CON_T3R                              (1 << 6)
-#define INCA_IP_GPTU_GPT_T3CON_T3M (value)                (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_GPTU_GPT_T3CON_T3I (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***GPT Write Hardware Modified Timer 3 Control Register
-If set and clear bit are written concurrently with 1, the associated bit is not changed.***/
-#define INCA_IP_GPTU_GPT_WHBT3CON                 ((volatile u32*)(INCA_IP_GPTU+ 0x004C))
-#define INCA_IP_GPTU_GPT_WHBT3CON_SETT3CHDIR                (1 << 15)
-#define INCA_IP_GPTU_GPT_WHBT3CON_CLRT3CHDIR                (1 << 14)
-#define INCA_IP_GPTU_GPT_WHBT3CON_SETT3EDGE                  (1 << 13)
-#define INCA_IP_GPTU_GPT_WHBT3CON_CLRT3EDGE                  (1 << 12)
-#define INCA_IP_GPTU_GPT_WHBT3CON_SETT3OTL                  (1 << 11)
-#define INCA_IP_GPTU_GPT_WHBT3CON_CLRT3OTL                  (1 << 10)
-
-/***GPT Timer 2 Control Register***/
-#define INCA_IP_GPTU_GPT_T2CON                    ((volatile u32*)(INCA_IP_GPTU+ 0x0010))
-#define INCA_IP_GPTU_GPT_T2CON_TxRDIR                        (1 << 15)
-#define INCA_IP_GPTU_GPT_T2CON_TxCHDIR                      (1 << 14)
-#define INCA_IP_GPTU_GPT_T2CON_TxEDGE                        (1 << 13)
-#define INCA_IP_GPTU_GPT_T2CON_TxIRDIS                      (1 << 12)
-#define INCA_IP_GPTU_GPT_T2CON_TxRC                            (1 << 9)
-#define INCA_IP_GPTU_GPT_T2CON_TxUD                            (1 << 7)
-#define INCA_IP_GPTU_GPT_T2CON_TxR                              (1 << 6)
-#define INCA_IP_GPTU_GPT_T2CON_TxM (value)                (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_GPTU_GPT_T2CON_TxI (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***GPT Timer 4 Control Register***/
-#define INCA_IP_GPTU_GPT_T4CON                    ((volatile u32*)(INCA_IP_GPTU+ 0x0018))
-#define INCA_IP_GPTU_GPT_T4CON_TxRDIR                        (1 << 15)
-#define INCA_IP_GPTU_GPT_T4CON_TxCHDIR                      (1 << 14)
-#define INCA_IP_GPTU_GPT_T4CON_TxEDGE                        (1 << 13)
-#define INCA_IP_GPTU_GPT_T4CON_TxIRDIS                      (1 << 12)
-#define INCA_IP_GPTU_GPT_T4CON_TxRC                            (1 << 9)
-#define INCA_IP_GPTU_GPT_T4CON_TxUD                            (1 << 7)
-#define INCA_IP_GPTU_GPT_T4CON_TxR                              (1 << 6)
-#define INCA_IP_GPTU_GPT_T4CON_TxM (value)                (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_GPTU_GPT_T4CON_TxI (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***GPT Write HW Modified Timer 2 Control Register If set
- and clear bit are written concurrently with 1, the associated bit is not changed.***/
-#define INCA_IP_GPTU_GPT_WHBT2CON                 ((volatile u32*)(INCA_IP_GPTU+ 0x0048))
-#define INCA_IP_GPTU_GPT_WHBT2CON_SETTxCHDIR                (1 << 15)
-#define INCA_IP_GPTU_GPT_WHBT2CON_CLRTxCHDIR                (1 << 14)
-#define INCA_IP_GPTU_GPT_WHBT2CON_SETTxEDGE                  (1 << 13)
-#define INCA_IP_GPTU_GPT_WHBT2CON_CLRTxEDGE                  (1 << 12)
-
-/***GPT Write HW Modified Timer 4 Control Register If set
- and clear bit are written concurrently with 1, the associated bit is not changed.***/
-#define INCA_IP_GPTU_GPT_WHBT4CON                 ((volatile u32*)(INCA_IP_GPTU+ 0x0050))
-#define INCA_IP_GPTU_GPT_WHBT4CON_SETTxCHDIR                (1 << 15)
-#define INCA_IP_GPTU_GPT_WHBT4CON_CLRTxCHDIR                (1 << 14)
-#define INCA_IP_GPTU_GPT_WHBT4CON_SETTxEDGE                  (1 << 13)
-#define INCA_IP_GPTU_GPT_WHBT4CON_CLRTxEDGE                  (1 << 12)
-
-/***GPT Capture Reload Register***/
-#define INCA_IP_GPTU_GPT_CAPREL                   ((volatile u32*)(INCA_IP_GPTU+ 0x0030))
-#define INCA_IP_GPTU_GPT_CAPREL_CAPREL (value)             (((( 1 << 16) - 1) & (value)) << 0)
-
-/***GPT Timer 2 Register***/
-#define INCA_IP_GPTU_GPT_T2                       ((volatile u32*)(INCA_IP_GPTU+ 0x0034))
-#define INCA_IP_GPTU_GPT_T2_TVAL (value)               (((( 1 << 16) - 1) & (value)) << 0)
-
-/***GPT Timer 3 Register***/
-#define INCA_IP_GPTU_GPT_T3                       ((volatile u32*)(INCA_IP_GPTU+ 0x0038))
-#define INCA_IP_GPTU_GPT_T3_TVAL (value)               (((( 1 << 16) - 1) & (value)) << 0)
-
-/***GPT Timer 4 Register***/
-#define INCA_IP_GPTU_GPT_T4                       ((volatile u32*)(INCA_IP_GPTU+ 0x003C))
-#define INCA_IP_GPTU_GPT_T4_TVAL (value)               (((( 1 << 16) - 1) & (value)) << 0)
-
-/***GPT Timer 5 Register***/
-#define INCA_IP_GPTU_GPT_T5                       ((volatile u32*)(INCA_IP_GPTU+ 0x0040))
-#define INCA_IP_GPTU_GPT_T5_TVAL (value)               (((( 1 << 16) - 1) & (value)) << 0)
-
-/***GPT Timer 6 Register***/
-#define INCA_IP_GPTU_GPT_T6                       ((volatile u32*)(INCA_IP_GPTU+ 0x0044))
-#define INCA_IP_GPTU_GPT_T6_TVAL (value)               (((( 1 << 16) - 1) & (value)) << 0)
-
-/***GPT Timer 6 Control Register***/
-#define INCA_IP_GPTU_GPT_T6CON                    ((volatile u32*)(INCA_IP_GPTU+ 0x0020))
-#define INCA_IP_GPTU_GPT_T6CON_T6SR                            (1 << 15)
-#define INCA_IP_GPTU_GPT_T6CON_T6CLR                          (1 << 14)
-#define INCA_IP_GPTU_GPT_T6CON_BPS2 (value)               (((( 1 << 2) - 1) & (value)) << 11)
-#define INCA_IP_GPTU_GPT_T6CON_T6OTL                          (1 << 10)
-#define INCA_IP_GPTU_GPT_T6CON_T6UD                            (1 << 7)
-#define INCA_IP_GPTU_GPT_T6CON_T6R                              (1 << 6)
-#define INCA_IP_GPTU_GPT_T6CON_T6M (value)                (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_GPTU_GPT_T6CON_T6I (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***GPT Write HW Modified Timer 6 Control Register If set
- and clear bit are written concurrently with 1, the associated bit is not changed.***/
-#define INCA_IP_GPTU_GPT_WHBT6CON                 ((volatile u32*)(INCA_IP_GPTU+ 0x0054))
-#define INCA_IP_GPTU_GPT_WHBT6CON_SETT6OTL                  (1 << 11)
-#define INCA_IP_GPTU_GPT_WHBT6CON_CLRT6OTL                  (1 << 10)
-
-/***GPT Timer 5 Control Register***/
-#define INCA_IP_GPTU_GPT_T5CON                    ((volatile u32*)(INCA_IP_GPTU+ 0x001C))
-#define INCA_IP_GPTU_GPT_T5CON_T5SC                            (1 << 15)
-#define INCA_IP_GPTU_GPT_T5CON_T5CLR                          (1 << 14)
-#define INCA_IP_GPTU_GPT_T5CON_CI (value)                (((( 1 << 2) - 1) & (value)) << 12)
-#define INCA_IP_GPTU_GPT_T5CON_T5CC                            (1 << 11)
-#define INCA_IP_GPTU_GPT_T5CON_CT3                              (1 << 10)
-#define INCA_IP_GPTU_GPT_T5CON_T5RC                            (1 << 9)
-#define INCA_IP_GPTU_GPT_T5CON_T5UDE                          (1 << 8)
-#define INCA_IP_GPTU_GPT_T5CON_T5UD                            (1 << 7)
-#define INCA_IP_GPTU_GPT_T5CON_T5R                              (1 << 6)
-#define INCA_IP_GPTU_GPT_T5CON_T5M (value)                (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_GPTU_GPT_T5CON_T5I (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  IOM register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_IOM                          (0xBF105000)
-/***********************************************************************/
-
-
-/***Receive FIFO***/
-#define INCA_IP_IOM_RFIFO                        ((volatile u32*)(INCA_IP_IOM+ 0x0000))
-#define INCA_IP_IOM_RFIFO_RXD (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Transmit FIFO***/
-#define INCA_IP_IOM_XFIFO                        ((volatile u32*)(INCA_IP_IOM+ 0x0000))
-#define INCA_IP_IOM_XFIFO_TXD (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Interrupt Status Register HDLC***/
-#define INCA_IP_IOM_ISTAH                        ((volatile u32*)(INCA_IP_IOM+ 0x0080))
-#define INCA_IP_IOM_ISTAH_RME                              (1 << 7)
-#define INCA_IP_IOM_ISTAH_RPF                              (1 << 6)
-#define INCA_IP_IOM_ISTAH_RFO                              (1 << 5)
-#define INCA_IP_IOM_ISTAH_XPR                              (1 << 4)
-#define INCA_IP_IOM_ISTAH_XMR                              (1 << 3)
-#define INCA_IP_IOM_ISTAH_XDU                              (1 << 2)
-
-/***Interrupt Mask Register HDLC***/
-#define INCA_IP_IOM_MASKH                        ((volatile u32*)(INCA_IP_IOM+ 0x0080))
-#define INCA_IP_IOM_MASKH_RME                              (1 << 7)
-#define INCA_IP_IOM_MASKH_RPF                              (1 << 6)
-#define INCA_IP_IOM_MASKH_RFO                              (1 << 5)
-#define INCA_IP_IOM_MASKH_XPR                              (1 << 4)
-#define INCA_IP_IOM_MASKH_XMR                              (1 << 3)
-#define INCA_IP_IOM_MASKH_XDU                              (1 << 2)
-
-/***Status Register***/
-#define INCA_IP_IOM_STAR                         ((volatile u32*)(INCA_IP_IOM+ 0x0084))
-#define INCA_IP_IOM_STAR_XDOV                            (1 << 7)
-#define INCA_IP_IOM_STAR_XFW                              (1 << 6)
-#define INCA_IP_IOM_STAR_RACI                            (1 << 3)
-#define INCA_IP_IOM_STAR_XACI                            (1 << 1)
-
-/***Command Register***/
-#define INCA_IP_IOM_CMDR                         ((volatile u32*)(INCA_IP_IOM+ 0x0084))
-#define INCA_IP_IOM_CMDR_RMC                              (1 << 7)
-#define INCA_IP_IOM_CMDR_RRES                            (1 << 6)
-#define INCA_IP_IOM_CMDR_XTF                              (1 << 3)
-#define INCA_IP_IOM_CMDR_XME                              (1 << 1)
-#define INCA_IP_IOM_CMDR_XRES                            (1 << 0)
-
-/***Mode Register***/
-#define INCA_IP_IOM_MODEH                        ((volatile u32*)(INCA_IP_IOM+ 0x0088))
-#define INCA_IP_IOM_MODEH_MDS2                            (1 << 7)
-#define INCA_IP_IOM_MODEH_MDS1                            (1 << 6)
-#define INCA_IP_IOM_MODEH_MDS0                            (1 << 5)
-#define INCA_IP_IOM_MODEH_RAC                              (1 << 3)
-#define INCA_IP_IOM_MODEH_DIM2                            (1 << 2)
-#define INCA_IP_IOM_MODEH_DIM1                            (1 << 1)
-#define INCA_IP_IOM_MODEH_DIM0                            (1 << 0)
-
-/***Extended Mode Register***/
-#define INCA_IP_IOM_EXMR                         ((volatile u32*)(INCA_IP_IOM+ 0x008C))
-#define INCA_IP_IOM_EXMR_XFBS                            (1 << 7)
-#define INCA_IP_IOM_EXMR_RFBS (value)               (((( 1 << 2) - 1) & (value)) << 5)
-#define INCA_IP_IOM_EXMR_SRA                              (1 << 4)
-#define INCA_IP_IOM_EXMR_XCRC                            (1 << 3)
-#define INCA_IP_IOM_EXMR_RCRC                            (1 << 2)
-#define INCA_IP_IOM_EXMR_ITF                              (1 << 0)
-
-/***SAPI1 Register***/
-#define INCA_IP_IOM_SAP1                         ((volatile u32*)(INCA_IP_IOM+ 0x0094))
-#define INCA_IP_IOM_SAP1_SAPI1 (value)              (((( 1 << 6) - 1) & (value)) << 2)
-#define INCA_IP_IOM_SAP1_MHA                              (1 << 0)
-
-/***Receive Frame Byte Count Low***/
-#define INCA_IP_IOM_RBCL                         ((volatile u32*)(INCA_IP_IOM+ 0x0098))
-#define INCA_IP_IOM_RBCL_RBC(value)              (1 << value)
-
-
-/***SAPI2 Register***/
-#define INCA_IP_IOM_SAP2                         ((volatile u32*)(INCA_IP_IOM+ 0x0098))
-#define INCA_IP_IOM_SAP2_SAPI2 (value)              (((( 1 << 6) - 1) & (value)) << 2)
-#define INCA_IP_IOM_SAP2_MLA                              (1 << 0)
-
-/***Receive Frame Byte Count High***/
-#define INCA_IP_IOM_RBCH                         ((volatile u32*)(INCA_IP_IOM+ 0x009C))
-#define INCA_IP_IOM_RBCH_OV                              (1 << 4)
-#define INCA_IP_IOM_RBCH_RBC11                          (1 << 3)
-#define INCA_IP_IOM_RBCH_RBC10                          (1 << 2)
-#define INCA_IP_IOM_RBCH_RBC9                            (1 << 1)
-#define INCA_IP_IOM_RBCH_RBC8                            (1 << 0)
-
-/***TEI1 Register 1***/
-#define INCA_IP_IOM_TEI1                         ((volatile u32*)(INCA_IP_IOM+ 0x009C))
-#define INCA_IP_IOM_TEI1_TEI1 (value)               (((( 1 << 7) - 1) & (value)) << 1)
-#define INCA_IP_IOM_TEI1_EA                              (1 << 0)
-
-/***Receive Status Register***/
-#define INCA_IP_IOM_RSTA                         ((volatile u32*)(INCA_IP_IOM+ 0x00A0))
-#define INCA_IP_IOM_RSTA_VFR                              (1 << 7)
-#define INCA_IP_IOM_RSTA_RDO                              (1 << 6)
-#define INCA_IP_IOM_RSTA_CRC                              (1 << 5)
-#define INCA_IP_IOM_RSTA_RAB                              (1 << 4)
-#define INCA_IP_IOM_RSTA_SA1                              (1 << 3)
-#define INCA_IP_IOM_RSTA_SA0                              (1 << 2)
-#define INCA_IP_IOM_RSTA_TA                              (1 << 0)
-#define INCA_IP_IOM_RSTA_CR                              (1 << 1)
-
-/***TEI2 Register***/
-#define INCA_IP_IOM_TEI2                         ((volatile u32*)(INCA_IP_IOM+ 0x00A0))
-#define INCA_IP_IOM_TEI2_TEI2 (value)               (((( 1 << 7) - 1) & (value)) << 1)
-#define INCA_IP_IOM_TEI2_EA                              (1 << 0)
-
-/***Test Mode Register HDLC***/
-#define INCA_IP_IOM_TMH                          ((volatile u32*)(INCA_IP_IOM+ 0x00A4))
-#define INCA_IP_IOM_TMH_TLP                              (1 << 0)
-
-/***Command/Indication Receive 0***/
-#define INCA_IP_IOM_CIR0                         ((volatile u32*)(INCA_IP_IOM+ 0x00B8))
-#define INCA_IP_IOM_CIR0_CODR0 (value)              (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_IOM_CIR0_CIC0                            (1 << 3)
-#define INCA_IP_IOM_CIR0_CIC1                            (1 << 2)
-#define INCA_IP_IOM_CIR0_SG                              (1 << 1)
-#define INCA_IP_IOM_CIR0_BAS                              (1 << 0)
-
-/***Command/Indication Transmit 0***/
-#define INCA_IP_IOM_CIX0                         ((volatile u32*)(INCA_IP_IOM+ 0x00B8))
-#define INCA_IP_IOM_CIX0_CODX0 (value)              (((( 1 << 4) - 1) & (value)) << 4)
-#define INCA_IP_IOM_CIX0_TBA2                            (1 << 3)
-#define INCA_IP_IOM_CIX0_TBA1                            (1 << 2)
-#define INCA_IP_IOM_CIX0_TBA0                            (1 << 1)
-#define INCA_IP_IOM_CIX0_BAC                              (1 << 0)
-
-/***Command/Indication Receive 1***/
-#define INCA_IP_IOM_CIR1                         ((volatile u32*)(INCA_IP_IOM+ 0x00BC))
-#define INCA_IP_IOM_CIR1_CODR1 (value)              (((( 1 << 6) - 1) & (value)) << 2)
-
-/***Command/Indication Transmit 1***/
-#define INCA_IP_IOM_CIX1                         ((volatile u32*)(INCA_IP_IOM+ 0x00BC))
-#define INCA_IP_IOM_CIX1_CODX1 (value)              (((( 1 << 6) - 1) & (value)) << 2)
-#define INCA_IP_IOM_CIX1_CICW                            (1 << 1)
-#define INCA_IP_IOM_CIX1_CI1E                            (1 << 0)
-
-/***Controller Data Access Reg. (CH10)***/
-#define INCA_IP_IOM_CDA10                        ((volatile u32*)(INCA_IP_IOM+ 0x0100))
-#define INCA_IP_IOM_CDA10_CDA (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Controller Data Access Reg. (CH11)***/
-#define INCA_IP_IOM_CDA11                        ((volatile u32*)(INCA_IP_IOM+ 0x0104))
-#define INCA_IP_IOM_CDA11_CDA (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Controller Data Access Reg. (CH20)***/
-#define INCA_IP_IOM_CDA20                        ((volatile u32*)(INCA_IP_IOM+ 0x0108))
-#define INCA_IP_IOM_CDA20_CDA (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Controller Data Access Reg. (CH21)***/
-#define INCA_IP_IOM_CDA21                        ((volatile u32*)(INCA_IP_IOM+ 0x010C))
-#define INCA_IP_IOM_CDA21_CDA (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH10)***/
-#define INCA_IP_IOM_CDA_TSDP10                   ((volatile u32*)(INCA_IP_IOM+ 0x0110))
-#define INCA_IP_IOM_CDA_TSDP10_DPS                              (1 << 7)
-#define INCA_IP_IOM_CDA_TSDP10_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH11)***/
-#define INCA_IP_IOM_CDA_TSDP11                   ((volatile u32*)(INCA_IP_IOM+ 0x0114))
-#define INCA_IP_IOM_CDA_TSDP11_DPS                              (1 << 7)
-#define INCA_IP_IOM_CDA_TSDP11_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH20)***/
-#define INCA_IP_IOM_CDA_TSDP20                   ((volatile u32*)(INCA_IP_IOM+ 0x0118))
-#define INCA_IP_IOM_CDA_TSDP20_DPS                              (1 << 7)
-#define INCA_IP_IOM_CDA_TSDP20_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH21)***/
-#define INCA_IP_IOM_CDA_TSDP21                   ((volatile u32*)(INCA_IP_IOM+ 0x011C))
-#define INCA_IP_IOM_CDA_TSDP21_DPS                              (1 << 7)
-#define INCA_IP_IOM_CDA_TSDP21_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH10)***/
-#define INCA_IP_IOM_CO_TSDP10                    ((volatile u32*)(INCA_IP_IOM+ 0x0120))
-#define INCA_IP_IOM_CO_TSDP10_DPS                              (1 << 7)
-#define INCA_IP_IOM_CO_TSDP10_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH11)***/
-#define INCA_IP_IOM_CO_TSDP11                    ((volatile u32*)(INCA_IP_IOM+ 0x0124))
-#define INCA_IP_IOM_CO_TSDP11_DPS                              (1 << 7)
-#define INCA_IP_IOM_CO_TSDP11_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH20)***/
-#define INCA_IP_IOM_CO_TSDP20                    ((volatile u32*)(INCA_IP_IOM+ 0x0128))
-#define INCA_IP_IOM_CO_TSDP20_DPS                              (1 << 7)
-#define INCA_IP_IOM_CO_TSDP20_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Time Slot and Data Port Sel. (CH21)***/
-#define INCA_IP_IOM_CO_TSDP21                    ((volatile u32*)(INCA_IP_IOM+ 0x012C))
-#define INCA_IP_IOM_CO_TSDP21_DPS                              (1 << 7)
-#define INCA_IP_IOM_CO_TSDP21_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Ctrl. Reg. Contr. Data Access CH1x***/
-#define INCA_IP_IOM_CDA1_CR                      ((volatile u32*)(INCA_IP_IOM+ 0x0138))
-#define INCA_IP_IOM_CDA1_CR_EN_TBM                        (1 << 5)
-#define INCA_IP_IOM_CDA1_CR_EN_I1                          (1 << 4)
-#define INCA_IP_IOM_CDA1_CR_EN_I0                          (1 << 3)
-#define INCA_IP_IOM_CDA1_CR_EN_O1                          (1 << 2)
-#define INCA_IP_IOM_CDA1_CR_EN_O0                          (1 << 1)
-#define INCA_IP_IOM_CDA1_CR_SWAP                            (1 << 0)
-
-/***Ctrl. Reg. Contr. Data Access CH1x***/
-#define INCA_IP_IOM_CDA2_CR                      ((volatile u32*)(INCA_IP_IOM+ 0x013C))
-#define INCA_IP_IOM_CDA2_CR_EN_TBM                        (1 << 5)
-#define INCA_IP_IOM_CDA2_CR_EN_I1                          (1 << 4)
-#define INCA_IP_IOM_CDA2_CR_EN_I0                          (1 << 3)
-#define INCA_IP_IOM_CDA2_CR_EN_O1                          (1 << 2)
-#define INCA_IP_IOM_CDA2_CR_EN_O0                          (1 << 1)
-#define INCA_IP_IOM_CDA2_CR_SWAP                            (1 << 0)
-
-/***Control Register B-Channel Data***/
-#define INCA_IP_IOM_BCHA_CR                      ((volatile u32*)(INCA_IP_IOM+ 0x0144))
-#define INCA_IP_IOM_BCHA_CR_EN_BC2                        (1 << 4)
-#define INCA_IP_IOM_BCHA_CR_EN_BC1                        (1 << 3)
-
-/***Control Register B-Channel Data***/
-#define INCA_IP_IOM_BCHB_CR                      ((volatile u32*)(INCA_IP_IOM+ 0x0148))
-#define INCA_IP_IOM_BCHB_CR_EN_BC2                        (1 << 4)
-#define INCA_IP_IOM_BCHB_CR_EN_BC1                        (1 << 3)
-
-/***Control Reg. for HDLC and CI1 Data***/
-#define INCA_IP_IOM_DCI_CR                       ((volatile u32*)(INCA_IP_IOM+ 0x014C))
-#define INCA_IP_IOM_DCI_CR_DPS_CI1                      (1 << 7)
-#define INCA_IP_IOM_DCI_CR_EN_CI1                        (1 << 6)
-#define INCA_IP_IOM_DCI_CR_EN_D                            (1 << 5)
-
-/***Control Reg. for HDLC and CI1 Data***/
-#define INCA_IP_IOM_DCIC_CR                      ((volatile u32*)(INCA_IP_IOM+ 0x014C))
-#define INCA_IP_IOM_DCIC_CR_DPS_CI0                      (1 << 7)
-#define INCA_IP_IOM_DCIC_CR_EN_CI0                        (1 << 6)
-#define INCA_IP_IOM_DCIC_CR_DPS_D                          (1 << 5)
-
-/***Control Reg. Serial Data Strobe x***/
-#define INCA_IP_IOM_SDS_CR                       ((volatile u32*)(INCA_IP_IOM+ 0x0154))
-#define INCA_IP_IOM_SDS_CR_ENS_TSS                      (1 << 7)
-#define INCA_IP_IOM_SDS_CR_ENS_TSS_1                  (1 << 6)
-#define INCA_IP_IOM_SDS_CR_ENS_TSS_3                  (1 << 5)
-#define INCA_IP_IOM_SDS_CR_TSS (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Control Register IOM Data***/
-#define INCA_IP_IOM_IOM_CR                       ((volatile u32*)(INCA_IP_IOM+ 0x015C))
-#define INCA_IP_IOM_IOM_CR_SPU                              (1 << 7)
-#define INCA_IP_IOM_IOM_CR_CI_CS                          (1 << 5)
-#define INCA_IP_IOM_IOM_CR_TIC_DIS                      (1 << 4)
-#define INCA_IP_IOM_IOM_CR_EN_BCL                        (1 << 3)
-#define INCA_IP_IOM_IOM_CR_CLKM                            (1 << 2)
-#define INCA_IP_IOM_IOM_CR_Res                              (1 << 1)
-#define INCA_IP_IOM_IOM_CR_DIS_IOM                      (1 << 0)
-
-/***Synchronous Transfer Interrupt***/
-#define INCA_IP_IOM_STI                          ((volatile u32*)(INCA_IP_IOM+ 0x0160))
-#define INCA_IP_IOM_STI_STOV21                        (1 << 7)
-#define INCA_IP_IOM_STI_STOV20                        (1 << 6)
-#define INCA_IP_IOM_STI_STOV11                        (1 << 5)
-#define INCA_IP_IOM_STI_STOV10                        (1 << 4)
-#define INCA_IP_IOM_STI_STI21                          (1 << 3)
-#define INCA_IP_IOM_STI_STI20                          (1 << 2)
-#define INCA_IP_IOM_STI_STI11                          (1 << 1)
-#define INCA_IP_IOM_STI_STI10                          (1 << 0)
-
-/***Acknowledge Synchronous Transfer Interrupt***/
-#define INCA_IP_IOM_ASTI                         ((volatile u32*)(INCA_IP_IOM+ 0x0160))
-#define INCA_IP_IOM_ASTI_ACK21                          (1 << 3)
-#define INCA_IP_IOM_ASTI_ACK20                          (1 << 2)
-#define INCA_IP_IOM_ASTI_ACK11                          (1 << 1)
-#define INCA_IP_IOM_ASTI_ACK10                          (1 << 0)
-
-/***Mask Synchronous Transfer Interrupt***/
-#define INCA_IP_IOM_MSTI                         ((volatile u32*)(INCA_IP_IOM+ 0x0164))
-#define INCA_IP_IOM_MSTI_STOV21                        (1 << 7)
-#define INCA_IP_IOM_MSTI_STOV20                        (1 << 6)
-#define INCA_IP_IOM_MSTI_STOV11                        (1 << 5)
-#define INCA_IP_IOM_MSTI_STOV10                        (1 << 4)
-#define INCA_IP_IOM_MSTI_STI21                          (1 << 3)
-#define INCA_IP_IOM_MSTI_STI20                          (1 << 2)
-#define INCA_IP_IOM_MSTI_STI11                          (1 << 1)
-#define INCA_IP_IOM_MSTI_STI10                          (1 << 0)
-
-/***Configuration Register for Serial Data Strobes***/
-#define INCA_IP_IOM_SDS_CONF                    ((volatile u32*)(INCA_IP_IOM+ 0x0168))
-#define INCA_IP_IOM_SDS_CONF_SDS_BCL                      (1 << 0)
-
-/***Monitoring CDA Bits***/
-#define INCA_IP_IOM_MCDA                         ((volatile u32*)(INCA_IP_IOM+ 0x016C))
-#define INCA_IP_IOM_MCDA_MCDA21 (value)             (((( 1 << 2) - 1) & (value)) << 6)
-#define INCA_IP_IOM_MCDA_MCDA20 (value)             (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_IOM_MCDA_MCDA11 (value)             (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_IOM_MCDA_MCDA10 (value)             (((( 1 << 2) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  ASC register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_ASC                          (0xB8000400)
-/***********************************************************************/
-
-
-/***ASC Port Input Select Register***/
-#define INCA_IP_ASC_ASC_PISEL                    ((volatile u32*)(INCA_IP_ASC+ 0x0004))
-#define INCA_IP_ASC_ASC_PISEL_RIS                              (1 << 0)
-
-/***ASC Control Register***/
-#define INCA_IP_ASC_ASC_CON                      ((volatile u32*)(INCA_IP_ASC+ 0x0010))
-#define INCA_IP_ASC_ASC_CON_R                              (1 << 15)
-#define INCA_IP_ASC_ASC_CON_LB                              (1 << 14)
-#define INCA_IP_ASC_ASC_CON_BRS                              (1 << 13)
-#define INCA_IP_ASC_ASC_CON_ODD                              (1 << 12)
-#define INCA_IP_ASC_ASC_CON_FDE                              (1 << 11)
-#define INCA_IP_ASC_ASC_CON_OE                              (1 << 10)
-#define INCA_IP_ASC_ASC_CON_FE                              (1 << 9)
-#define INCA_IP_ASC_ASC_CON_PE                              (1 << 8)
-#define INCA_IP_ASC_ASC_CON_OEN                              (1 << 7)
-#define INCA_IP_ASC_ASC_CON_FEN                              (1 << 6)
-#define INCA_IP_ASC_ASC_CON_PENRXDI                  (1 << 5)
-#define INCA_IP_ASC_ASC_CON_REN                              (1 << 4)
-#define INCA_IP_ASC_ASC_CON_STP                              (1 << 3)
-#define INCA_IP_ASC_ASC_CON_M (value)                (((( 1 << 3) - 1) & (value)) << 0)
-
-/***ASC Write Hardware Modified Control Register***/
-#define INCA_IP_ASC_ASC_WHBCON                   ((volatile u32*)(INCA_IP_ASC+ 0x0050))
-#define INCA_IP_ASC_ASC_WHBCON_SETOE                          (1 << 13)
-#define INCA_IP_ASC_ASC_WHBCON_SETFE                          (1 << 12)
-#define INCA_IP_ASC_ASC_WHBCON_SETPE                          (1 << 11)
-#define INCA_IP_ASC_ASC_WHBCON_CLROE                          (1 << 10)
-#define INCA_IP_ASC_ASC_WHBCON_CLRFE                          (1 << 9)
-#define INCA_IP_ASC_ASC_WHBCON_CLRPE                          (1 << 8)
-#define INCA_IP_ASC_ASC_WHBCON_SETREN                        (1 << 5)
-#define INCA_IP_ASC_ASC_WHBCON_CLRREN                        (1 << 4)
-
-/***ASC Baudrate Timer/Reload Register***/
-#define INCA_IP_ASC_ASC_BTR                      ((volatile u32*)(INCA_IP_ASC+ 0x0014))
-#define INCA_IP_ASC_ASC_BTR_BR_VALUE (value)          (((( 1 << 13) - 1) & (value)) << 0)
-
-/***ASC Fractional Divider Register***/
-#define INCA_IP_ASC_ASC_FDV                      ((volatile u32*)(INCA_IP_ASC+ 0x0018))
-#define INCA_IP_ASC_ASC_FDV_FD_VALUE (value)          (((( 1 << 9) - 1) & (value)) << 0)
-
-/***ASC IrDA Pulse Mode/Width Register***/
-#define INCA_IP_ASC_ASC_PMW                      ((volatile u32*)(INCA_IP_ASC+ 0x001C))
-#define INCA_IP_ASC_ASC_PMW_IRPW                            (1 << 8)
-#define INCA_IP_ASC_ASC_PMW_PW_VALUE (value)          (((( 1 << 8) - 1) & (value)) << 0)
-
-/***ASC Transmit Buffer Register***/
-#define INCA_IP_ASC_ASC_TBUF                    ((volatile u32*)(INCA_IP_ASC+ 0x0020))
-#define INCA_IP_ASC_ASC_TBUF_TD_VALUE (value)          (((( 1 << 9) - 1) & (value)) << 0)
-
-/***ASC Receive Buffer Register***/
-#define INCA_IP_ASC_ASC_RBUF                    ((volatile u32*)(INCA_IP_ASC+ 0x0024))
-#define INCA_IP_ASC_ASC_RBUF_RD_VALUE (value)          (((( 1 << 9) - 1) & (value)) << 0)
-
-/***ASC Autobaud Control Register***/
-#define INCA_IP_ASC_ASC_ABCON                    ((volatile u32*)(INCA_IP_ASC+ 0x0030))
-#define INCA_IP_ASC_ASC_ABCON_RXINV                          (1 << 11)
-#define INCA_IP_ASC_ASC_ABCON_TXINV                          (1 << 10)
-#define INCA_IP_ASC_ASC_ABCON_ABEM (value)               (((( 1 << 2) - 1) & (value)) << 8)
-#define INCA_IP_ASC_ASC_ABCON_FCDETEN                      (1 << 4)
-#define INCA_IP_ASC_ASC_ABCON_ABDETEN                      (1 << 3)
-#define INCA_IP_ASC_ASC_ABCON_ABSTEN                        (1 << 2)
-#define INCA_IP_ASC_ASC_ABCON_AUREN                          (1 << 1)
-#define INCA_IP_ASC_ASC_ABCON_ABEN                            (1 << 0)
-
-/***Receive FIFO Control Register***/
-#define INCA_IP_ASC_RXFCON                       ((volatile u32*)(INCA_IP_ASC+ 0x0040))
-#define INCA_IP_ASC_RXFCON_RXFITL (value)             (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_ASC_RXFCON_RXTMEN                        (1 << 2)
-#define INCA_IP_ASC_RXFCON_RXFFLU                        (1 << 1)
-#define INCA_IP_ASC_RXFCON_RXFEN                          (1 << 0)
-
-/***Transmit FIFO Control Register***/
-#define INCA_IP_ASC_TXFCON                       ((volatile u32*)(INCA_IP_ASC+ 0x0044))
-#define INCA_IP_ASC_TXFCON_TXFITL (value)             (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_ASC_TXFCON_TXTMEN                        (1 << 2)
-#define INCA_IP_ASC_TXFCON_TXFFLU                        (1 << 1)
-#define INCA_IP_ASC_TXFCON_TXFEN                          (1 << 0)
-
-/***FIFO Status Register***/
-#define INCA_IP_ASC_FSTAT                        ((volatile u32*)(INCA_IP_ASC+ 0x0048))
-#define INCA_IP_ASC_FSTAT_TXFFL (value)              (((( 1 << 6) - 1) & (value)) << 8)
-#define INCA_IP_ASC_FSTAT_RXFFL (value)              (((( 1 << 6) - 1) & (value)) << 0)
-
-/***ASC Write HW Modified Autobaud Control Register***/
-#define INCA_IP_ASC_ASC_WHBABCON                 ((volatile u32*)(INCA_IP_ASC+ 0x0054))
-#define INCA_IP_ASC_ASC_WHBABCON_SETABEN                      (1 << 1)
-#define INCA_IP_ASC_ASC_WHBABCON_CLRABEN                      (1 << 0)
-
-/***ASC Autobaud Status Register***/
-#define INCA_IP_ASC_ASC_ABSTAT                   ((volatile u32*)(INCA_IP_ASC+ 0x0034))
-#define INCA_IP_ASC_ASC_ABSTAT_DETWAIT                      (1 << 4)
-#define INCA_IP_ASC_ASC_ABSTAT_SCCDET                        (1 << 3)
-#define INCA_IP_ASC_ASC_ABSTAT_SCSDET                        (1 << 2)
-#define INCA_IP_ASC_ASC_ABSTAT_FCCDET                        (1 << 1)
-#define INCA_IP_ASC_ASC_ABSTAT_FCSDET                        (1 << 0)
-
-/***ASC Write HW Modified Autobaud Status Register***/
-#define INCA_IP_ASC_ASC_WHBABSTAT                 ((volatile u32*)(INCA_IP_ASC+ 0x0058))
-#define INCA_IP_ASC_ASC_WHBABSTAT_SETDETWAIT                (1 << 9)
-#define INCA_IP_ASC_ASC_WHBABSTAT_CLRDETWAIT                (1 << 8)
-#define INCA_IP_ASC_ASC_WHBABSTAT_SETSCCDET                  (1 << 7)
-#define INCA_IP_ASC_ASC_WHBABSTAT_CLRSCCDET                  (1 << 6)
-#define INCA_IP_ASC_ASC_WHBABSTAT_SETSCSDET                  (1 << 5)
-#define INCA_IP_ASC_ASC_WHBABSTAT_CLRSCSDET                  (1 << 4)
-#define INCA_IP_ASC_ASC_WHBABSTAT_SETFCCDET                  (1 << 3)
-#define INCA_IP_ASC_ASC_WHBABSTAT_CLRFCCDET                  (1 << 2)
-#define INCA_IP_ASC_ASC_WHBABSTAT_SETFCSDET                  (1 << 1)
-#define INCA_IP_ASC_ASC_WHBABSTAT_CLRFCSDET                  (1 << 0)
-
-/***ASC Clock Control Register***/
-#define INCA_IP_ASC_ASC_CLC                      ((volatile u32*)(INCA_IP_ASC+ 0x0000))
-#define INCA_IP_ASC_ASC_CLC_RMC (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_ASC_ASC_CLC_DISS                            (1 << 1)
-#define INCA_IP_ASC_ASC_CLC_DISR                            (1 << 0)
-
-/***********************************************************************/
-/*  Module      :  DMA register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_DMA                          (0xBF108000)
-/***********************************************************************/
-
-
-/***DMA RX Channel 0 Command Register***/
-#define INCA_IP_DMA_DMA_RXCCR0                   ((volatile u32*)(INCA_IP_DMA+ 0x0800))
-#define INCA_IP_DMA_DMA_RXCCR0_LBE                              (1 << 31)
-#define INCA_IP_DMA_DMA_RXCCR0_HPEN                            (1 << 30)
-#define INCA_IP_DMA_DMA_RXCCR0_INIT                            (1 << 2)
-#define INCA_IP_DMA_DMA_RXCCR0_OFF                              (1 << 1)
-#define INCA_IP_DMA_DMA_RXCCR0_HR                              (1 << 0)
-
-/***DMA RX Channel 1 Command Register***/
-#define INCA_IP_DMA_DMA_RXCCR1                   ((volatile u32*)(INCA_IP_DMA+ 0x0804))
-#define INCA_IP_DMA_DMA_RXCCR1_LBE                              (1 << 31)
-#define INCA_IP_DMA_DMA_RXCCR1_HPEN                            (1 << 30)
-#define INCA_IP_DMA_DMA_RXCCR1_INIT                            (1 << 2)
-#define INCA_IP_DMA_DMA_RXCCR1_OFF                              (1 << 1)
-#define INCA_IP_DMA_DMA_RXCCR1_HR                              (1 << 0)
-
-/***DMA Receive Interrupt Status Register***/
-#define INCA_IP_DMA_DMA_RXISR                    ((volatile u32*)(INCA_IP_DMA+ 0x0808))
-#define INCA_IP_DMA_DMA_RXISR_RDERRx (value)             (((( 1 << 2) - 1) & (value)) << 8)
-#define INCA_IP_DMA_DMA_RXISR_CMDCPTx (value)            (((( 1 << 2) - 1) & (value)) << 6)
-#define INCA_IP_DMA_DMA_RXISR_EOPx (value)               (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_DMA_DMA_RXISR_CPTx (value)               (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_DMA_DMA_RXISR_HLDx (value)               (((( 1 << 2) - 1) & (value)) << 0)
-
-/***DMA Receive Interrupt Mask Register***/
-#define INCA_IP_DMA_DMA_RXIMR                    ((volatile u32*)(INCA_IP_DMA+ 0x080C))
-#define INCA_IP_DMA_DMA_RXIMR_RDERRx (value)             (((( 1 << 2) - 1) & (value)) << 8)
-#define INCA_IP_DMA_DMA_RXIMR_CMDCPTx (value)            (((( 1 << 2) - 1) & (value)) << 6)
-#define INCA_IP_DMA_DMA_RXIMR_EOPx (value)               (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_DMA_DMA_RXIMR_CPTx (value)               (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_DMA_DMA_RXIMR_HLDx (value)               (((( 1 << 2) - 1) & (value)) << 0)
-
-/***DMA First Receive Descriptor Addr. for Rx Channel 0
-***/
-#define INCA_IP_DMA_DMA_RXFRDA0                  ((volatile u32*)(INCA_IP_DMA+ 0x0810))
-#define INCA_IP_DMA_DMA_RXFRDA0_RXFRDA (value)             (((( 1 << 28) - 1) & (value)) << 0)
-
-/***DMA First Receive Descriptor Addr. for Rx Channel 1
-***/
-#define INCA_IP_DMA_DMA_RXFRDA1                  ((volatile u32*)(INCA_IP_DMA+ 0x0814))
-#define INCA_IP_DMA_DMA_RXFRDA1_RXFRDA (value)             (((( 1 << 28) - 1) & (value)) << 0)
-
-/***DMA Receive Channel Polling Time***/
-#define INCA_IP_DMA_DMA_RXPOLL                   ((volatile u32*)(INCA_IP_DMA+ 0x0818))
-#define INCA_IP_DMA_DMA_RXPOLL_BSZ1 (value)               (((( 1 << 2) - 1) & (value)) << 30)
-#define INCA_IP_DMA_DMA_RXPOLL_BSZ0 (value)               (((( 1 << 2) - 1) & (value)) << 28)
-#define INCA_IP_DMA_DMA_RXPOLL_RXPOLLTIME (value)         (((( 1 << 8) - 1) & (value)) << 0)
-
-/***DMA TX Channel 0 Command Register (Voice Port)***/
-#define INCA_IP_DMA_DMA_TXCCR0                   ((volatile u32*)(INCA_IP_DMA+ 0x0880))
-#define INCA_IP_DMA_DMA_TXCCR0_LBE                              (1 << 31)
-#define INCA_IP_DMA_DMA_TXCCR0_HPEN                            (1 << 30)
-#define INCA_IP_DMA_DMA_TXCCR0_HR                              (1 << 2)
-#define INCA_IP_DMA_DMA_TXCCR0_OFF                              (1 << 1)
-#define INCA_IP_DMA_DMA_TXCCR0_INIT                            (1 << 0)
-
-/***DMA TX Channel 1 Command Register (Mangmt Port)***/
-#define INCA_IP_DMA_DMA_TXCCR1                   ((volatile u32*)(INCA_IP_DMA+ 0x0884))
-#define INCA_IP_DMA_DMA_TXCCR1_LBE                              (1 << 31)
-#define INCA_IP_DMA_DMA_TXCCR1_HPEN                            (1 << 30)
-#define INCA_IP_DMA_DMA_TXCCR1_HR                              (1 << 2)
-#define INCA_IP_DMA_DMA_TXCCR1_OFF                              (1 << 1)
-#define INCA_IP_DMA_DMA_TXCCR1_INIT                            (1 << 0)
-
-/***DMA TX Channel 2 Command Register (SSC Port)***/
-#define INCA_IP_DMA_DMA_TXCCR2                   ((volatile u32*)(INCA_IP_DMA+ 0x0888))
-#define INCA_IP_DMA_DMA_TXCCR2_LBE                              (1 << 31)
-#define INCA_IP_DMA_DMA_TXCCR2_HPEN                            (1 << 30)
-#define INCA_IP_DMA_DMA_TXCCR2_HBF                              (1 << 29)
-#define INCA_IP_DMA_DMA_TXCCR2_HR                              (1 << 2)
-#define INCA_IP_DMA_DMA_TXCCR2_OFF                              (1 << 1)
-#define INCA_IP_DMA_DMA_TXCCR2_INIT                            (1 << 0)
-
-/***DMA First Receive Descriptor Addr. for Tx Channel 0
-***/
-#define INCA_IP_DMA_DMA_TXFRDA0                  ((volatile u32*)(INCA_IP_DMA+ 0x08A0))
-#define INCA_IP_DMA_DMA_TXFRDA0_TXFRDA (value)             (((( 1 << 28) - 1) & (value)) << 0)
-
-/***DMA First Receive Descriptor Addr. for Tx Channel 1
-***/
-#define INCA_IP_DMA_DMA_TXFRDA1                  ((volatile u32*)(INCA_IP_DMA+ 0x08A4))
-#define INCA_IP_DMA_DMA_TXFRDA1_TXFRDA (value)             (((( 1 << 28) - 1) & (value)) << 0)
-
-/***DMA First Receive Descriptor Addr. for Tx Channel 2
-***/
-#define INCA_IP_DMA_DMA_TXFRDA2                  ((volatile u32*)(INCA_IP_DMA+ 0x08A8))
-#define INCA_IP_DMA_DMA_TXFRDA2_TXFRDA (value)             (((( 1 << 28) - 1) & (value)) << 0)
-
-/***DMA Transmit Channel Arbitration Register***/
-#define INCA_IP_DMA_DMA_TXWGT                    ((volatile u32*)(INCA_IP_DMA+ 0x08C0))
-#define INCA_IP_DMA_DMA_TXWGT_TX2PR (value)              (((( 1 << 2) - 1) & (value)) << 4)
-#define INCA_IP_DMA_DMA_TXWGT_TX1PRI (value)             (((( 1 << 2) - 1) & (value)) << 2)
-#define INCA_IP_DMA_DMA_TXWGT_TX0PRI (value)             (((( 1 << 2) - 1) & (value)) << 0)
-
-/***DMA Transmit Channel Polling Time***/
-#define INCA_IP_DMA_DMA_TXPOLL                   ((volatile u32*)(INCA_IP_DMA+ 0x08C4))
-#define INCA_IP_DMA_DMA_TXPOLL_BSZ2 (value)               (((( 1 << 2) - 1) & (value)) << 30)
-#define INCA_IP_DMA_DMA_TXPOLL_BSZ1 (value)               (((( 1 << 2) - 1) & (value)) << 28)
-#define INCA_IP_DMA_DMA_TXPOLL_BSZ0 (value)               (((( 1 << 2) - 1) & (value)) << 26)
-#define INCA_IP_DMA_DMA_TXPOLL_TXPOLLTIME (value)         (((( 1 << 8) - 1) & (value)) << 0)
-
-/***DMA Transmit Interrupt Status Register***/
-#define INCA_IP_DMA_DMA_TXISR                    ((volatile u32*)(INCA_IP_DMA+ 0x08C8))
-#define INCA_IP_DMA_DMA_TXISR_RDERRx (value)             (((( 1 << 3) - 1) & (value)) << 12)
-#define INCA_IP_DMA_DMA_TXISR_HLDx (value)               (((( 1 << 3) - 1) & (value)) << 9)
-#define INCA_IP_DMA_DMA_TXISR_CPTx (value)               (((( 1 << 3) - 1) & (value)) << 6)
-#define INCA_IP_DMA_DMA_TXISR_EOPx (value)               (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_DMA_DMA_TXISR_CMDCPTx (value)            (((( 1 << 3) - 1) & (value)) << 0)
-
-/***DMA Transmit Interrupt Mask Register***/
-#define INCA_IP_DMA_DMA_TXIMR                    ((volatile u32*)(INCA_IP_DMA+ 0x08CC))
-#define INCA_IP_DMA_DMA_TXIMR_RDERRx (value)             (((( 1 << 3) - 1) & (value)) << 12)
-#define INCA_IP_DMA_DMA_TXIMR_HLDx (value)               (((( 1 << 3) - 1) & (value)) << 9)
-#define INCA_IP_DMA_DMA_TXIMR_CPTx (value)               (((( 1 << 3) - 1) & (value)) << 6)
-#define INCA_IP_DMA_DMA_TXIMR_EOPx (value)               (((( 1 << 3) - 1) & (value)) << 3)
-#define INCA_IP_DMA_DMA_TXIMR_CMDCPTx (value)            (((( 1 << 3) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  Debug register address and bits                     */
-/***********************************************************************/
-
-#define INCA_IP_Debug                        (0xBF106000)
-/***********************************************************************/
-
-
-/***MCD Break Bus Switch Register***/
-#define INCA_IP_Debug_MCD_BBS                      ((volatile u32*)(INCA_IP_Debug+ 0x0000))
-#define INCA_IP_Debug_MCD_BBS_BTP1                            (1 << 19)
-#define INCA_IP_Debug_MCD_BBS_BTP0                            (1 << 18)
-#define INCA_IP_Debug_MCD_BBS_BSP1                            (1 << 17)
-#define INCA_IP_Debug_MCD_BBS_BSP0                            (1 << 16)
-#define INCA_IP_Debug_MCD_BBS_BT5EN                          (1 << 15)
-#define INCA_IP_Debug_MCD_BBS_BT4EN                          (1 << 14)
-#define INCA_IP_Debug_MCD_BBS_BT5                              (1 << 13)
-#define INCA_IP_Debug_MCD_BBS_BT4                              (1 << 12)
-#define INCA_IP_Debug_MCD_BBS_BS5EN                          (1 << 7)
-#define INCA_IP_Debug_MCD_BBS_BS4EN                          (1 << 6)
-#define INCA_IP_Debug_MCD_BBS_BS5                              (1 << 5)
-#define INCA_IP_Debug_MCD_BBS_BS4                              (1 << 4)
-
-/***MCD Multiplexer Control Register***/
-#define INCA_IP_Debug_MCD_MCR                      ((volatile u32*)(INCA_IP_Debug+ 0x0008))
-#define INCA_IP_Debug_MCD_MCR_MUX5                            (1 << 4)
-#define INCA_IP_Debug_MCD_MCR_MUX4                            (1 << 3)
-#define INCA_IP_Debug_MCD_MCR_MUX1                            (1 << 0)
-
-/***********************************************************************/
-/*  Module      :  TSF register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_TSF                          (0xB8000900)
-/***********************************************************************/
-
-
-/***TSF Configuration Register (0000H)***/
-#define INCA_IP_TSF_TSF_CONF                    ((volatile u32*)(INCA_IP_TSF+ 0x0000))
-#define INCA_IP_TSF_TSF_CONF_PWMEN                          (1 << 2)
-#define INCA_IP_TSF_TSF_CONF_LEDEN                          (1 << 1)
-#define INCA_IP_TSF_TSF_CONF_KEYEN                          (1 << 0)
-
-/***Key scan Configuration Register (0004H)***/
-#define INCA_IP_TSF_KEY_CONF                    ((volatile u32*)(INCA_IP_TSF+ 0x0004))
-#define INCA_IP_TSF_KEY_CONF_SL (value)                (((( 1 << 4) - 1) & (value)) << 0)
-
-/***Scan Register Line 0 and 1 (0008H)***/
-#define INCA_IP_TSF_SREG01                       ((volatile u32*)(INCA_IP_TSF+ 0x0008))
-#define INCA_IP_TSF_SREG01_RES1x (value)              (((( 1 << 12) - 1) & (value)) << 16)
-#define INCA_IP_TSF_SREG01_RES0x (value)              (((( 1 << 13) - 1) & (value)) << 0)
-
-/***Scan Register Line 2 and 3 (000CH)***/
-#define INCA_IP_TSF_SREG23                       ((volatile u32*)(INCA_IP_TSF+ 0x000C))
-#define INCA_IP_TSF_SREG23_RES3x (value)              (((( 1 << 10) - 1) & (value)) << 16)
-#define INCA_IP_TSF_SREG23_RES2x (value)              (((( 1 << 11) - 1) & (value)) << 0)
-
-/***Scan Register Line 4, 5 and 6 (0010H)***/
-#define INCA_IP_TSF_SREG456                      ((volatile u32*)(INCA_IP_TSF+ 0x0010))
-#define INCA_IP_TSF_SREG456_RES6x (value)              (((( 1 << 7) - 1) & (value)) << 24)
-#define INCA_IP_TSF_SREG456_RES5x (value)              (((( 1 << 8) - 1) & (value)) << 16)
-#define INCA_IP_TSF_SREG456_RES4x (value)              (((( 1 << 9) - 1) & (value)) << 0)
-
-/***Scan Register Line 7 to 12 (0014H)***/
-#define INCA_IP_TSF_SREG7to12                    ((volatile u32*)(INCA_IP_TSF+ 0x0014))
-#define INCA_IP_TSF_SREG7to12_RES12x                        (1 << 28)
-#define INCA_IP_TSF_SREG7to12_RES11x (value)             (((( 1 << 2) - 1) & (value)) << 24)
-#define INCA_IP_TSF_SREG7to12_RES10x (value)             (((( 1 << 3) - 1) & (value)) << 20)
-#define INCA_IP_TSF_SREG7to12_RES9x (value)              (((( 1 << 4) - 1) & (value)) << 16)
-#define INCA_IP_TSF_SREG7to12_RES8x (value)              (((( 1 << 5) - 1) & (value)) << 8)
-#define INCA_IP_TSF_SREG7to12_RES7x (value)              (((( 1 << 6) - 1) & (value)) << 0)
-
-/***LEDMUX Configuration Register (0018H)***/
-#define INCA_IP_TSF_LEDMUX_CONF                  ((volatile u32*)(INCA_IP_TSF+ 0x0018))
-#define INCA_IP_TSF_LEDMUX_CONF_ETL1                            (1 << 25)
-#define INCA_IP_TSF_LEDMUX_CONF_ESTA1                          (1 << 24)
-#define INCA_IP_TSF_LEDMUX_CONF_EDPX1                          (1 << 23)
-#define INCA_IP_TSF_LEDMUX_CONF_EACT1                          (1 << 22)
-#define INCA_IP_TSF_LEDMUX_CONF_ESPD1                          (1 << 21)
-#define INCA_IP_TSF_LEDMUX_CONF_ETL0                            (1 << 20)
-#define INCA_IP_TSF_LEDMUX_CONF_ESTA0                          (1 << 19)
-#define INCA_IP_TSF_LEDMUX_CONF_EDPX0                          (1 << 18)
-#define INCA_IP_TSF_LEDMUX_CONF_EACT0                          (1 << 17)
-#define INCA_IP_TSF_LEDMUX_CONF_ESPD0                          (1 << 16)
-#define INCA_IP_TSF_LEDMUX_CONF_INV                              (1 << 1)
-#define INCA_IP_TSF_LEDMUX_CONF_NCOL                            (1 << 0)
-
-/***LED Register (001CH)***/
-#define INCA_IP_TSF_LED_REG                      ((volatile u32*)(INCA_IP_TSF+ 0x001C))
-#define INCA_IP_TSF_LED_REG_Lxy (value)                (((( 1 << 24) - 1) & (value)) << 0)
-
-/***Pulse Width Modulator 1 and 2 Register (0020H)***/
-#define INCA_IP_TSF_PWM12                        ((volatile u32*)(INCA_IP_TSF+ 0x0020))
-#define INCA_IP_TSF_PWM12_PW2PW1 (value)             (((( 1 << NaN) - 1) & (value)) << NaN)
-
-/***********************************************************************/
-/*  Module      :  Ports register address and bits                     */
-/***********************************************************************/
-
-#define INCA_IP_Ports                        (0xB8000A00)
-/***********************************************************************/
-
-
-/***Port 1 Data Output Register (0020H)***/
-#define INCA_IP_Ports_P1_OUT                       ((volatile u32*)(INCA_IP_Ports+ 0x0020))
-#define INCA_IP_Ports_P1_OUT_P(value)               (1 << value)
-
-
-/***Port 2 Data Output Register (0040H)***/
-#define INCA_IP_Ports_P2_OUT                       ((volatile u32*)(INCA_IP_Ports+ 0x0040))
-#define INCA_IP_Ports_P2_OUT_P(value)               (1 << value)
-
-
-/***Port 1 Data Input Register (0024H)***/
-#define INCA_IP_Ports_P1_IN                        ((volatile u32*)(INCA_IP_Ports+ 0x0024))
-#define INCA_IP_Ports_P1_IN_P(value)               (1 << value)
-
-
-/***Port 2 Data Input Register (0044H)***/
-#define INCA_IP_Ports_P2_IN                        ((volatile u32*)(INCA_IP_Ports+ 0x0044))
-#define INCA_IP_Ports_P2_IN_P(value)               (1 << value)
-
-
-/***Port 1 Direction Register (0028H)***/
-#define INCA_IP_Ports_P1_DIR                       ((volatile u32*)(INCA_IP_Ports+ 0x0028))
-#define INCA_IP_Ports_P1_DIR_Port1P(value)         (1 << value)
-
-#define INCA_IP_Ports_P1_DIR_Port2Pn (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***Port 2 Direction Register (0048H)***/
-#define INCA_IP_Ports_P2_DIR                       ((volatile u32*)(INCA_IP_Ports+ 0x0048))
-#define INCA_IP_Ports_P2_DIR_Port1P(value)         (1 << value)
-
-#define INCA_IP_Ports_P2_DIR_Port2Pn (value)          (((( 1 << 16) - 1) & (value)) << 0)
-
-/***Port 0 Alternate Function Select Register 0 (000C H)
-***/
-#define INCA_IP_Ports_P0_ALTSEL                    ((volatile u32*)(INCA_IP_Ports+ 0x000C))
-#define INCA_IP_Ports_P0_ALTSEL_Port0P(value)         (1 << value)
-
-
-/***Port 1 Alternate Function Select Register 0 (002C H)
-***/
-#define INCA_IP_Ports_P1_ALTSEL                    ((volatile u32*)(INCA_IP_Ports+ 0x002C))
-#define INCA_IP_Ports_P1_ALTSEL_Port1P(value)         (1 << value)
-
-#define INCA_IP_Ports_P1_ALTSEL_Port2P(value)         (1 << value)
-
-
-/***Port 2 Alternate Function Select Register 0 (004C H)
-***/
-#define INCA_IP_Ports_P2_ALTSEL                    ((volatile u32*)(INCA_IP_Ports+ 0x004C))
-#define INCA_IP_Ports_P2_ALTSEL_Port1P(value)         (1 << value)
-
-#define INCA_IP_Ports_P2_ALTSEL_Port2P(value)         (1 << value)
-
-
-/***Port 0 Input Schmitt-Trigger Off Register (0010 H)
-***/
-#define INCA_IP_Ports_P0_STOFF                    ((volatile u32*)(INCA_IP_Ports+ 0x0010))
-#define INCA_IP_Ports_P0_STOFF_Port0P(value)         (1 << value)
-
-
-/***Port 1 Input Schmitt-Trigger Off Register (0030 H)
-***/
-#define INCA_IP_Ports_P1_STOFF                    ((volatile u32*)(INCA_IP_Ports+ 0x0030))
-#define INCA_IP_Ports_P1_STOFF_Port1P(value)         (1 << value)
-
-#define INCA_IP_Ports_P1_STOFF_Port2P(value)         (1 << value)
-
-
-/***Port 2 Input Schmitt-Trigger Off Register (0050 H)
-***/
-#define INCA_IP_Ports_P2_STOFF                    ((volatile u32*)(INCA_IP_Ports+ 0x0050))
-#define INCA_IP_Ports_P2_STOFF_Port1P(value)         (1 << value)
-
-#define INCA_IP_Ports_P2_STOFF_Port2P(value)         (1 << value)
-
-
-/***Port 2 Open Drain Control Register (0054H)***/
-#define INCA_IP_Ports_P2_OD                        ((volatile u32*)(INCA_IP_Ports+ 0x0054))
-#define INCA_IP_Ports_P2_OD_Port2P(value)         (1 << value)
-
-
-/***Port 0 Pull Up Device Enable Register (0018 H)***/
-#define INCA_IP_Ports_P0_PUDEN                    ((volatile u32*)(INCA_IP_Ports+ 0x0018))
-#define INCA_IP_Ports_P0_PUDEN_Port0P(value)         (1 << value)
-
-
-/***Port 2 Pull Up Device Enable Register (0058 H)***/
-#define INCA_IP_Ports_P2_PUDEN                    ((volatile u32*)(INCA_IP_Ports+ 0x0058))
-#define INCA_IP_Ports_P2_PUDEN_Port2P(value)         (1 << value)
-
-#define INCA_IP_Ports_P2_PUDEN_Port2P(value)         (1 << value)
-
-
-/***Port 0 Pull Up/Pull Down Select Register (001C H)***/
-#define INCA_IP_Ports_P0_PUDSEL                    ((volatile u32*)(INCA_IP_Ports+ 0x001C))
-#define INCA_IP_Ports_P0_PUDSEL_Port0P(value)         (1 << value)
-
-
-/***Port 2 Pull Up/Pull Down Select Register (005C H)***/
-#define INCA_IP_Ports_P2_PUDSEL                    ((volatile u32*)(INCA_IP_Ports+ 0x005C))
-#define INCA_IP_Ports_P2_PUDSEL_Port2P(value)         (1 << value)
-
-#define INCA_IP_Ports_P2_PUDSEL_Port2P(value)         (1 << value)
-
-
-/***********************************************************************/
-/*  Module      :  DES/3DES register address and bits                 */
-/***********************************************************************/
-
-#define INCA_IP_DES_3DES                    (0xB8000800)
-/***********************************************************************/
-
-
-/***DES Input Data High Register***/
-#define INCA_IP_DES_3DES_DES_IHR                      ((volatile u32*)(INCA_IP_DES_3DES+ 0x0000))
-#define INCA_IP_DES_3DES_DES_IHR_IH(value)               (1 << value)
-
-
-/***DES Input Data Low Register***/
-#define INCA_IP_DES_3DES_DES_ILR                      ((volatile u32*)(INCA_IP_DES_3DES+ 0x0004))
-#define INCA_IP_DES_3DES_DES_ILR_IL(value)               (1 << value)
-
-
-/***DES Key #1 High Register***/
-#define INCA_IP_DES_3DES_DES_K1HR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x0008))
-#define INCA_IP_DES_3DES_DES_K1HR_K1H(value)              (1 << value)
-
-
-/***DES Key #1 Low Register***/
-#define INCA_IP_DES_3DES_DES_K1LR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x000C))
-#define INCA_IP_DES_3DES_DES_K1LR_K1L(value)              (1 << value)
-
-
-/***DES Key #2 High Register***/
-#define INCA_IP_DES_3DES_DES_K2HR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x0010))
-#define INCA_IP_DES_3DES_DES_K2HR_K2H(value)              (1 << value)
-
-
-/***DES Key #2 Low Register***/
-#define INCA_IP_DES_3DES_DES_K2LR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x0014))
-#define INCA_IP_DES_3DES_DES_K2LR_K2L(value)              (1 << value)
-
-
-/***DES Key #3 High Register***/
-#define INCA_IP_DES_3DES_DES_K3HR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x0018))
-#define INCA_IP_DES_3DES_DES_K3HR_K3H(value)              (1 << value)
-
-
-/***DES Key #3 Low Register***/
-#define INCA_IP_DES_3DES_DES_K3LR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x001C))
-#define INCA_IP_DES_3DES_DES_K3LR_K3L(value)              (1 << value)
-
-
-/***DES Initialization Vector High Register***/
-#define INCA_IP_DES_3DES_DES_IVHR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x0020))
-#define INCA_IP_DES_3DES_DES_IVHR_IVH(value)              (1 << value)
-
-
-/***DES Initialization Vector Low Register***/
-#define INCA_IP_DES_3DES_DES_IVLR                    ((volatile u32*)(INCA_IP_DES_3DES+ 0x0024))
-#define INCA_IP_DES_3DES_DES_IVLR_IVL(value)              (1 << value)
-
-
-/***DES Control Register***/
-#define INCA_IP_DES_3DES_DES_CONTROLR                 ((volatile u32*)(INCA_IP_DES_3DES+ 0x0028))
-#define INCA_IP_DES_3DES_DES_CONTROLR_KRE                              (1 << 31)
-#define INCA_IP_DES_3DES_DES_CONTROLR_DAU                              (1 << 16)
-#define INCA_IP_DES_3DES_DES_CONTROLR_F(value)               (1 << value)
-
-#define INCA_IP_DES_3DES_DES_CONTROLR_O(value)               (1 << value)
-
-#define INCA_IP_DES_3DES_DES_CONTROLR_GO                              (1 << 8)
-#define INCA_IP_DES_3DES_DES_CONTROLR_STP                              (1 << 7)
-#define INCA_IP_DES_3DES_DES_CONTROLR_IEN                              (1 << 6)
-#define INCA_IP_DES_3DES_DES_CONTROLR_BUS                              (1 << 5)
-#define INCA_IP_DES_3DES_DES_CONTROLR_SM                              (1 << 4)
-#define INCA_IP_DES_3DES_DES_CONTROLR_E_D                              (1 << 3)
-#define INCA_IP_DES_3DES_DES_CONTROLR_M(value)               (1 << value)
-
-
-/***DES Output Data High Register***/
-#define INCA_IP_DES_3DES_DES_OHR                      ((volatile u32*)(INCA_IP_DES_3DES+ 0x002C))
-#define INCA_IP_DES_3DES_DES_OHR_OH(value)               (1 << value)
-
-
-/***DES Output Data Low Register***/
-#define INCA_IP_DES_3DES_DES_OLR                      ((volatile u32*)(INCA_IP_DES_3DES+ 0x0030))
-#define INCA_IP_DES_3DES_DES_OLR_OL(value)               (1 << value)
-
-
-/***********************************************************************/
-/*  Module      :  AES register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_AES                          (0xB8000880)
-/***********************************************************************/
-
-
-/***AES Input Data 3 Register***/
-#define INCA_IP_AES_AES_ID3R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_ID3R_I(value)               (1 << value)
-
-
-/***AES Input Data 2 Register***/
-#define INCA_IP_AES_AES_ID2R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_ID2R_I(value)               (1 << value)
-
-
-/***AES Input Data 1 Register***/
-#define INCA_IP_AES_AES_ID1R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_ID1R_I(value)               (1 << value)
-
-
-/***AES Input Data 0 Register***/
-#define INCA_IP_AES_AES_ID0R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_ID0R_I(value)               (1 << value)
-
-
-/***AES Output Data 3 Register***/
-#define INCA_IP_AES_AES_OD3R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_OD3R_O(value)               (1 << value)
-
-
-/***AES Output Data 2 Register***/
-#define INCA_IP_AES_AES_OD2R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_OD2R_O(value)               (1 << value)
-
-
-/***AES Output Data 1 Register***/
-#define INCA_IP_AES_AES_OD1R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_OD1R_O(value)               (1 << value)
-
-
-/***AES Output Data 0 Register***/
-#define INCA_IP_AES_AES_OD0R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_OD0R_O(value)               (1 << value)
-
-
-/***AES Key 7 Register***/
-#define INCA_IP_AES_AES_K7R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K7R_K(value)               (1 << value)
-
-
-/***AES Key 6 Register***/
-#define INCA_IP_AES_AES_K6R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K6R_K(value)               (1 << value)
-
-
-/***AES Key 5 Register***/
-#define INCA_IP_AES_AES_K5R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K5R_K(value)               (1 << value)
-
-
-/***AES Key 4 Register***/
-#define INCA_IP_AES_AES_K4R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K4R_K(value)               (1 << value)
-
-
-/***AES Key 3 Register***/
-#define INCA_IP_AES_AES_K3R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K3R_K(value)               (1 << value)
-
-
-/***AES Key 2 Register***/
-#define INCA_IP_AES_AES_K2R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K2R_K(value)               (1 << value)
-
-
-/***AES Key 1 Register***/
-#define INCA_IP_AES_AES_K1R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K1R_K(value)               (1 << value)
-
-
-/***AES Key 0 Register***/
-#define INCA_IP_AES_AES_K0R                      ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_K0R_K(value)               (1 << value)
-
-
-/***AES Initialization Vector 3 Register***/
-#define INCA_IP_AES_AES_IV3R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_IV3R_IV(value)               (1 << value)
-
-
-/***AES Initialization Vector 2 Register***/
-#define INCA_IP_AES_AES_IV2R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_IV2R_IV(value)               (1 << value)
-
-
-/***AES Initialization Vector 1 Register***/
-#define INCA_IP_AES_AES_IV1R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_IV1R_IV(value)               (1 << value)
-
-
-/***AES Initialization Vector 0 Register***/
-#define INCA_IP_AES_AES_IV0R                    ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_IV0R_IV (value)                (((( 1 << 32) - 1) &(value)) << 0)
-
-/***AES Control Register***/
-#define INCA_IP_AES_AES_CONTROLR                 ((volatile u32*)(INCA_IP_AES+ 0x0000))
-#define INCA_IP_AES_AES_CONTROLR_KRE                              (1 << 31)
-#define INCA_IP_AES_AES_CONTROLR_DAU                              (1 << 16)
-#define INCA_IP_AES_AES_CONTROLR_PNK                              (1 << 15)
-#define INCA_IP_AES_AES_CONTROLR_F(value)               (1 << value)
-
-#define INCA_IP_AES_AES_CONTROLR_O(value)               (1 << value)
-
-#define INCA_IP_AES_AES_CONTROLR_GO                              (1 << 8)
-#define INCA_IP_AES_AES_CONTROLR_STP                              (1 << 7)
-#define INCA_IP_AES_AES_CONTROLR_IEN                              (1 << 6)
-#define INCA_IP_AES_AES_CONTROLR_BUS                              (1 << 5)
-#define INCA_IP_AES_AES_CONTROLR_SM                              (1 << 4)
-#define INCA_IP_AES_AES_CONTROLR_E_D                              (1 << 3)
-#define INCA_IP_AES_AES_CONTROLR_KV                              (1 << 2)
-#define INCA_IP_AES_AES_CONTROLR_K(value)               (1 << value)
-
-
-/***********************************************************************/
-/*  Module      :  I²C register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_IIC                          (0xB8000700)
-/***********************************************************************/
-
-
-/***I²C Port Input Select Register***/
-#define INCA_IP_IIC_IIC_PISEL                    ((volatile u32*)(INCA_IP_IIC+ 0x0004))
-#define INCA_IP_IIC_IIC_PISEL_SDAIS(value)            (1 << value)
-
-#define INCA_IP_IIC_IIC_PISEL_SCLIS(value)            (1 << value)
-
-
-/***I²C Clock Control Register***/
-#define INCA_IP_IIC_IIC_CLC                      ((volatile u32*)(INCA_IP_IIC+ 0x0000))
-#define INCA_IP_IIC_IIC_CLC_RMC (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_IIC_IIC_CLC_DISS                            (1 << 1)
-#define INCA_IP_IIC_IIC_CLC_DISR                            (1 << 0)
-
-/***I²C System Control Register***/
-#define INCA_IP_IIC_IIC_SYSCON_0                 ((volatile u32*)(INCA_IP_IIC+ 0x0010))
-#define INCA_IP_IIC_IIC_SYSCON_0_WMEN                            (1 << 31)
-#define INCA_IP_IIC_IIC_SYSCON_0_CI (value)                (((( 1 << 2) - 1) & (value)) << 26)
-#define INCA_IP_IIC_IIC_SYSCON_0_STP                              (1 << 25)
-#define INCA_IP_IIC_IIC_SYSCON_0_IGE                              (1 << 24)
-#define INCA_IP_IIC_IIC_SYSCON_0_TRX                              (1 << 23)
-#define INCA_IP_IIC_IIC_SYSCON_0_INT                              (1 << 22)
-#define INCA_IP_IIC_IIC_SYSCON_0_ACKDIS                        (1 << 21)
-#define INCA_IP_IIC_IIC_SYSCON_0_BUM                              (1 << 20)
-#define INCA_IP_IIC_IIC_SYSCON_0_MOD (value)                (((( 1 << 2) - 1) & (value)) << 18)
-#define INCA_IP_IIC_IIC_SYSCON_0_RSC                              (1 << 17)
-#define INCA_IP_IIC_IIC_SYSCON_0_M10                              (1 << 16)
-#define INCA_IP_IIC_IIC_SYSCON_0_RMEN                            (1 << 15)
-#define INCA_IP_IIC_IIC_SYSCON_0_CO (value)                (((( 1 << 3) - 1) & (value)) << 8)
-#define INCA_IP_IIC_IIC_SYSCON_0_IRQE                            (1 << 7)
-#define INCA_IP_IIC_IIC_SYSCON_0_IRQP                            (1 << 6)
-#define INCA_IP_IIC_IIC_SYSCON_0_IRQD                            (1 << 5)
-#define INCA_IP_IIC_IIC_SYSCON_0_BB                              (1 << 4)
-#define INCA_IP_IIC_IIC_SYSCON_0_LRB                              (1 << 3)
-#define INCA_IP_IIC_IIC_SYSCON_0_SLA                              (1 << 2)
-#define INCA_IP_IIC_IIC_SYSCON_0_AL                              (1 << 1)
-#define INCA_IP_IIC_IIC_SYSCON_0_ADR                              (1 << 0)
-
-/***I²C System Control Register***/
-#define INCA_IP_IIC_IIC_SYSCON_1                 ((volatile u32*)(INCA_IP_IIC+ 0x0010))
-#define INCA_IP_IIC_IIC_SYSCON_1_RM (value)                (((( 1 << 8) - 1) & (value)) << 24)
-#define INCA_IP_IIC_IIC_SYSCON_1_TRX                              (1 << 23)
-#define INCA_IP_IIC_IIC_SYSCON_1_INT                              (1 << 22)
-#define INCA_IP_IIC_IIC_SYSCON_1_ACKDIS                        (1 << 21)
-#define INCA_IP_IIC_IIC_SYSCON_1_BUM                              (1 << 20)
-#define INCA_IP_IIC_IIC_SYSCON_1_MOD (value)                (((( 1 << 2) - 1) & (value)) << 18)
-#define INCA_IP_IIC_IIC_SYSCON_1_RSC                              (1 << 17)
-#define INCA_IP_IIC_IIC_SYSCON_1_M10                              (1 << 16)
-#define INCA_IP_IIC_IIC_SYSCON_1_RMEN                            (1 << 15)
-#define INCA_IP_IIC_IIC_SYSCON_1_CO (value)                (((( 1 << 3) - 1) & (value)) << 8)
-#define INCA_IP_IIC_IIC_SYSCON_1_IRQE                            (1 << 7)
-#define INCA_IP_IIC_IIC_SYSCON_1_IRQP                            (1 << 6)
-#define INCA_IP_IIC_IIC_SYSCON_1_IRQD                            (1 << 5)
-#define INCA_IP_IIC_IIC_SYSCON_1_BB                              (1 << 4)
-#define INCA_IP_IIC_IIC_SYSCON_1_LRB                              (1 << 3)
-#define INCA_IP_IIC_IIC_SYSCON_1_SLA                              (1 << 2)
-#define INCA_IP_IIC_IIC_SYSCON_1_AL                              (1 << 1)
-#define INCA_IP_IIC_IIC_SYSCON_1_ADR                              (1 << 0)
-
-/***I²C System Control Register***/
-#define INCA_IP_IIC_IIC_SYSCON_2                 ((volatile u32*)(INCA_IP_IIC+ 0x0010))
-#define INCA_IP_IIC_IIC_SYSCON_2_WMEN                            (1 << 31)
-#define INCA_IP_IIC_IIC_SYSCON_2_CI (value)                (((( 1 << 2) - 1) & (value)) << 26)
-#define INCA_IP_IIC_IIC_SYSCON_2_STP                              (1 << 25)
-#define INCA_IP_IIC_IIC_SYSCON_2_IGE                              (1 << 24)
-#define INCA_IP_IIC_IIC_SYSCON_2_TRX                              (1 << 23)
-#define INCA_IP_IIC_IIC_SYSCON_2_INT                              (1 << 22)
-#define INCA_IP_IIC_IIC_SYSCON_2_ACKDIS                        (1 << 21)
-#define INCA_IP_IIC_IIC_SYSCON_2_BUM                              (1 << 20)
-#define INCA_IP_IIC_IIC_SYSCON_2_MOD (value)                (((( 1 << 2) - 1) & (value)) << 18)
-#define INCA_IP_IIC_IIC_SYSCON_2_RSC                              (1 << 17)
-#define INCA_IP_IIC_IIC_SYSCON_2_M10                              (1 << 16)
-#define INCA_IP_IIC_IIC_SYSCON_2_WM (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_IIC_IIC_SYSCON_2_IRQE                            (1 << 7)
-#define INCA_IP_IIC_IIC_SYSCON_2_IRQP                            (1 << 6)
-#define INCA_IP_IIC_IIC_SYSCON_2_IRQD                            (1 << 5)
-#define INCA_IP_IIC_IIC_SYSCON_2_BB                              (1 << 4)
-#define INCA_IP_IIC_IIC_SYSCON_2_LRB                              (1 << 3)
-#define INCA_IP_IIC_IIC_SYSCON_2_SLA                              (1 << 2)
-#define INCA_IP_IIC_IIC_SYSCON_2_AL                              (1 << 1)
-#define INCA_IP_IIC_IIC_SYSCON_2_ADR                              (1 << 0)
-
-/***I²C Write Hardware Modified System Control Register
-***/
-#define INCA_IP_IIC_IIC_WHBSYSCON                 ((volatile u32*)(INCA_IP_IIC+ 0x0020))
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRWMEN                      (1 << 31)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETWMEN                      (1 << 30)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETSTP                        (1 << 26)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRSTP                        (1 << 25)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETTRX                        (1 << 24)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRTRX                        (1 << 23)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETACKDIS                  (1 << 22)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRACKDIS                  (1 << 21)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETBUM                        (1 << 20)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRBUM                        (1 << 19)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETRSC                        (1 << 17)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRRSC                        (1 << 16)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETRMEN                      (1 << 15)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRRMEN                      (1 << 14)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETIRQE                      (1 << 10)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETIRQP                      (1 << 9)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETIRQD                      (1 << 8)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRIRQE                      (1 << 7)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRIRQP                      (1 << 6)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRIRQD                      (1 << 5)
-#define INCA_IP_IIC_IIC_WHBSYSCON_SETAL                          (1 << 2)
-#define INCA_IP_IIC_IIC_WHBSYSCON_CLRAL                          (1 << 1)
-
-/***I²C Bus Control Register***/
-#define INCA_IP_IIC_IIC_BUSCON_0                 ((volatile u32*)(INCA_IP_IIC+ 0x0014))
-#define INCA_IP_IIC_IIC_BUSCON_0_BRPMOD                        (1 << 31)
-#define INCA_IP_IIC_IIC_BUSCON_0_PREDIV (value)             (((( 1 << 2) - 1) & (value)) << 29)
-#define INCA_IP_IIC_IIC_BUSCON_0_ICA9_0 (value)             (((( 1 << 10) - 1) & (value)) << 16)
-#define INCA_IP_IIC_IIC_BUSCON_0_BRP (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_IIC_IIC_BUSCON_0_SCLEN(value)            (1 << value)
-
-#define INCA_IP_IIC_IIC_BUSCON_0_SDAEN(value)            (1 << value)
-
-
-/***I²C Bus Control Register***/
-#define INCA_IP_IIC_IIC_BUSCON_1                 ((volatile u32*)(INCA_IP_IIC+ 0x0014))
-#define INCA_IP_IIC_IIC_BUSCON_1_BRPMOD                        (1 << 31)
-#define INCA_IP_IIC_IIC_BUSCON_1_PREDIV (value)             (((( 1 << 2) - 1) & (value)) << 29)
-#define INCA_IP_IIC_IIC_BUSCON_1_ICA7_1 (value)             (((( 1 << 7) - 1) & (value)) << 17)
-#define INCA_IP_IIC_IIC_BUSCON_1_BRP (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_IIC_IIC_BUSCON_1_SCLEN(value)            (1 << value)
-
-#define INCA_IP_IIC_IIC_BUSCON_1_SDAEN(value)            (1 << value)
-
-
-/***I²C Receive Transmit Buffer***/
-#define INCA_IP_IIC_IIC_RTB                      ((volatile u32*)(INCA_IP_IIC+ 0x0018))
-#define INCA_IP_IIC_IIC_RTB_RTB(value)              (1 << value)
-
-
-/***********************************************************************/
-/*  Module      :  FB register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_FB                          (0xBF880000)
-/***********************************************************************/
-
-
-/***FB Access Error Cause Register***/
-#define INCA_IP_FB_FB_ERRCAUSE                  ((volatile u32*)(INCA_IP_FB+ 0x0100))
-#define INCA_IP_FB_FB_ERRCAUSE_ERR                              (1 << 31)
-#define INCA_IP_FB_FB_ERRCAUSE_PORT (value)               (((( 1 << 4) - 1) & (value)) << 16)
-#define INCA_IP_FB_FB_ERRCAUSE_CAUSE (value)              (((( 1 << 2) - 1) & (value)) << 0)
-
-/***FB Access Error Address Register***/
-#define INCA_IP_FB_FB_ERRADDR                   ((volatile u32*)(INCA_IP_FB+ 0x0108))
-#define INCA_IP_FB_FB_ERRADDR_ADDR
-
-/***FB Configuration Register***/
-#define INCA_IP_FB_FB_CFG                       ((volatile u32*)(INCA_IP_FB+ 0x0800))
-#define INCA_IP_FB_FB_CFG_SVM                              (1 << 0)
-
-/***********************************************************************/
-/*  Module      :  SRAM register address and bits                      */
-/***********************************************************************/
-
-#define INCA_IP_SRAM                         (0xBF980000)
-/***********************************************************************/
-
-
-/***SRAM Size Register***/
-#define INCA_IP_SRAM_SRAM_SIZE                    ((volatile u32*)(INCA_IP_SRAM+ 0x0800))
-#define INCA_IP_SRAM_SRAM_SIZE_SIZE (value)               (((( 1 << 23) - 1) & (value)) << 0)
-
-/***********************************************************************/
-/*  Module      :  BIU register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_BIU                          (0xBFA80000)
-/***********************************************************************/
-
-
-/***BIU Identification Register***/
-#define INCA_IP_BIU_BIU_ID                       ((volatile u32*)(INCA_IP_BIU+ 0x0000))
-#define INCA_IP_BIU_BIU_ID_ARCH                            (1 << 16)
-#define INCA_IP_BIU_BIU_ID_ID (value)                (((( 1 << 8) - 1) & (value)) << 8)
-#define INCA_IP_BIU_BIU_ID_REV (value)                (((( 1 << 8) - 1) & (value)) << 0)
-
-/***BIU Access Error Cause Register***/
-#define INCA_IP_BIU_BIU_ERRCAUSE                 ((volatile u32*)(INCA_IP_BIU+ 0x0100))
-#define INCA_IP_BIU_BIU_ERRCAUSE_ERR                              (1 << 31)
-#define INCA_IP_BIU_BIU_ERRCAUSE_PORT (value)               (((( 1 << 4) - 1) & (value)) << 16)
-#define INCA_IP_BIU_BIU_ERRCAUSE_CAUSE (value)              (((( 1 << 2) - 1) & (value)) << 0)
-
-/***BIU Access Error Address Register***/
-#define INCA_IP_BIU_BIU_ERRADDR                  ((volatile u32*)(INCA_IP_BIU+ 0x0108))
-#define INCA_IP_BIU_BIU_ERRADDR_ADDR
-
-/***********************************************************************/
-/*  Module      :  ICU register address and bits                       */
-/***********************************************************************/
-
-#define INCA_IP_ICU                          (0xBF101000)
-/***********************************************************************/
-
-
-/***IM0 Interrupt Status Register***/
-#define INCA_IP_ICU_IM0_ISR                      ((volatile u32*)(INCA_IP_ICU+ 0x0000))
-#define INCA_IP_ICU_IM0_ISR_IR(value)               (1 << value)
-
-
-/***IM1 Interrupt Status Register***/
-#define INCA_IP_ICU_IM1_ISR                      ((volatile u32*)(INCA_IP_ICU+ 0x0200))
-#define INCA_IP_ICU_IM1_ISR_IR(value)               (1 << value)
-
-
-/***IM2 Interrupt Status Register***/
-#define INCA_IP_ICU_IM2_ISR                      ((volatile u32*)(INCA_IP_ICU+ 0x0400))
-#define INCA_IP_ICU_IM2_ISR_IR(value)               (1 << value)
-
-
-/***IM0 Interrupt Enable Register***/
-#define INCA_IP_ICU_IM0_IER                      ((volatile u32*)(INCA_IP_ICU+ 0x0008))
-#define INCA_IP_ICU_IM0_IER_IR(value)               (1 << value)
-
-
-/***IM1 Interrupt Enable Register***/
-#define INCA_IP_ICU_IM1_IER                      ((volatile u32*)(INCA_IP_ICU+ 0x0208))
-#define INCA_IP_ICU_IM1_IER_IR(value)               (1 << value)
-
-
-/***IM2 Interrupt Enable Register***/
-#define INCA_IP_ICU_IM2_IER                      ((volatile u32*)(INCA_IP_ICU+ 0x0408))
-#define INCA_IP_ICU_IM2_IER_IR(value)               (1 << value)
-
-
-/***IM0 Interrupt Output Status Register***/
-#define INCA_IP_ICU_IM0_IOSR                    ((volatile u32*)(INCA_IP_ICU+ 0x0010))
-#define INCA_IP_ICU_IM0_IOSR_IR(value)               (1 << value)
-
-
-/***IM1 Interrupt Output Status Register***/
-#define INCA_IP_ICU_IM1_IOSR                    ((volatile u32*)(INCA_IP_ICU+ 0x0210))
-#define INCA_IP_ICU_IM1_IOSR_IR(value)               (1 << value)
-
-
-/***IM2 Interrupt Output Status Register***/
-#define INCA_IP_ICU_IM2_IOSR                    ((volatile u32*)(INCA_IP_ICU+ 0x0410))
-#define INCA_IP_ICU_IM2_IOSR_IR(value)               (1 << value)
-
-
-/***IM0 Interrupt Request Set Register***/
-#define INCA_IP_ICU_IM0_IRSR                    ((volatile u32*)(INCA_IP_ICU+ 0x0018))
-#define INCA_IP_ICU_IM0_IRSR_IR(value)               (1 << value)
-
-
-/***IM1 Interrupt Request Set Register***/
-#define INCA_IP_ICU_IM1_IRSR                    ((volatile u32*)(INCA_IP_ICU+ 0x0218))
-#define INCA_IP_ICU_IM1_IRSR_IR(value)               (1 << value)
-
-
-/***IM2 Interrupt Request Set Register***/
-#define INCA_IP_ICU_IM2_IRSR                    ((volatile u32*)(INCA_IP_ICU+ 0x0418))
-#define INCA_IP_ICU_IM2_IRSR_IR(value)               (1 << value)
-
-
-/***External Interrupt Control Register***/
-#define INCA_IP_ICU_ICU_EICR                    ((volatile u32*)(INCA_IP_ICU+ 0x0B00))
-#define INCA_IP_ICU_ICU_EICR_EII5 (value)               (((( 1 << 3) - 1) & (value)) << 20)
-#define INCA_IP_ICU_ICU_EICR_EII4 (value)               (((( 1 << 3) - 1) & (value)) << 16)
-#define INCA_IP_ICU_ICU_EICR_EII3 (value)               (((( 1 << 3) - 1) & (value)) << 12)
-#define INCA_IP_ICU_ICU_EICR_EII2 (value)               (((( 1 << 3) - 1) & (value)) << 8)
-#define INCA_IP_ICU_ICU_EICR_EII1 (value)               (((( 1 << 3) - 1) & (value)) << 4)
-#define INCA_IP_ICU_ICU_EICR_EII0 (value)               (((( 1 << 3) - 1) & (value)) << 0)
index 9f3cce9a628b3bf8906b5b47504d9d7af5567217..a5b2fc08f87926fe8a27a95a054dac9b22e8764e 100644 (file)
@@ -21,5 +21,3 @@ static inline unsigned long image_copy_end(void)
        extern char __image_copy_end[];
        return (unsigned long) &__image_copy_end;
 }
-
-extern int incaip_set_cpuclk(void);
index 985d7d808ac4f7f7ff4fd26b6bc1841d3eda36fe..0eb170ded8e1fc62fdabf51c35c91dd6b2019f20 100644 (file)
 #ifndef _U_BOOT_H_
 #define _U_BOOT_H_     1
 
+#ifdef CONFIG_SYS_GENERIC_BOARD
+
+/* Use the generic board which requires a unified bd_info */
+#include <asm-generic/u-boot.h>
+
+#else /* !CONFIG_SYS_GENERIC_BOARD */
+
 typedef struct bd_info {
        unsigned int    bi_baudrate;    /* serial console baudrate */
        unsigned long   bi_arch_number; /* unique id for this board */
@@ -26,6 +33,8 @@ typedef struct bd_info {
        unsigned long   bi_flashoffset; /* reserved area for startup monitor */
 } bd_t;
 
+#endif /* !CONFIG_SYS_GENERIC_BOARD */
+
 /* For image.h:image_check_target_arch() */
 #define IH_ARCH_DEFAULT IH_ARCH_MIPS
 
index fabeb83f7e9fd910c340c2abefaef94abf361451..e483e86f6b471e69e4b38b190c0c14278294a621 100644 (file)
@@ -5,7 +5,11 @@
 # 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
 
 lib-$(CONFIG_USE_PRIVATE_LIBGCC) += ashldi3.o ashrdi3.o lshrdi3.o
index 9e6ba15acab5a0401e28614a12192083b99378dd..3200d87e30ae623267541949336118081885ab52 100644 (file)
@@ -27,12 +27,6 @@ ulong monitor_flash_len;
 
 static char *failed = "*** failed ***\n";
 
-/*
- * mips_io_port_base is the begin of the address space to which x86 style
- * I/O ports are mapped.
- */
-const unsigned long mips_io_port_base = -1;
-
 int __board_early_init_f(void)
 {
        /*
@@ -109,9 +103,6 @@ init_fnc_t *init_sequence[] = {
        board_early_init_f,
        timer_init,
        env_init,               /* initialize environment */
-#ifdef CONFIG_INCA_IP
-       incaip_set_cpuclk,      /* set cpu clock according to env. variable */
-#endif
        init_baudrate,          /* initialize baudrate settings */
        serial_init,            /* serial communications setup */
        console_init_f,
diff --git a/arch/mips/lib/io.c b/arch/mips/lib/io.c
new file mode 100644 (file)
index 0000000..b2d4a09
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * mips_io_port_base is the begin of the address space to which x86 style
+ * I/O ports are mapped.
+ */
+const unsigned long mips_io_port_base = -1;
index 47ac18e757cee98a3e525121aa9df7874f3619e9..68d88e910cbd8ee430110b36662d4f7e88c603bb 100644 (file)
@@ -46,8 +46,6 @@
 void
 cpu_init_f (void)
 {
-/* MOUSSE board is initialized in asm */
-#if !defined(CONFIG_MOUSSE)
     register unsigned long val;
     CONFIG_WRITE_HALFWORD(PCICR, 0x06); /* Bus Master, respond to PCI memory space acesses*/
 /*    CONFIG_WRITE_HALFWORD(PCISR, 0xffff); */ /*reset PCISR*/
@@ -302,98 +300,12 @@ cpu_init_f (void)
        CONFIG_READ_WORD(MCCR1, val);
        CONFIG_WRITE_WORD(MCCR1, val | MCCR1_MEMGO); /* set memory access going */
        __asm__ __volatile__("eieio");
-
-#endif /* !CONFIG_MOUSSE */
 }
 
-
-#ifdef CONFIG_MOUSSE
-#ifdef INCLUDE_MPC107_REPORT
-struct MPC107_s {
-       unsigned int iobase;
-       char desc[120];
-} MPC107Regs[] = {
-       { BMC_BASE +  0x00, "MPC107 Vendor/Device ID"           },
-       { BMC_BASE +  0x04, "MPC107 PCI Command/Status Register" },
-       { BMC_BASE +  0x08, "MPC107 Revision"                   },
-       { BMC_BASE +  0x0C, "MPC107 Cache Line Size"            },
-       { BMC_BASE +  0x10, "MPC107 LMBAR"                      },
-       { BMC_BASE +  0x14, "MPC824x PCSR"                      },
-       { BMC_BASE +  0xA8, "MPC824x PICR1"                     },
-       { BMC_BASE +  0xAC, "MPC824x PICR2"                     },
-       { BMC_BASE +  0x46, "MPC824x PACR"                      },
-       { BMC_BASE + 0x310, "MPC824x ITWR"                      },
-       { BMC_BASE + 0x300, "MPC824x OMBAR"                     },
-       { BMC_BASE + 0x308, "MPC824x OTWR"                      },
-       { BMC_BASE +  0x14, "MPC107 Peripheral Control and Status Register" },
-       { BMC_BASE + 0x78, "MPC107 EUMBAR"                      },
-       { BMC_BASE + 0xC0, "MPC107 Processor Bus Error Status"  },
-       { BMC_BASE + 0xC4, "MPC107 PCI Bus Error Status"        },
-       { BMC_BASE + 0xC8, "MPC107 Processor/PCI Error Address" },
-       { BMC_BASE + 0xE0, "MPC107 AMBOR Register"              },
-       { BMC_BASE + 0xF0, "MPC107 MCCR1 Register"              },
-       { BMC_BASE + 0xF4, "MPC107 MCCR2 Register"              },
-       { BMC_BASE + 0xF8, "MPC107 MCCR3 Register"              },
-       { BMC_BASE + 0xFC, "MPC107 MCCR4 Register"              },
-};
-#define N_MPC107_Regs  (sizeof(MPC107Regs)/sizeof(MPC107Regs[0]))
-#endif /* INCLUDE_MPC107_REPORT */
-#endif /* CONFIG_MOUSSE */
-
 /*
  * initialize higher level parts of CPU like time base and timers
  */
 int cpu_init_r (void)
 {
-#ifdef CONFIG_MOUSSE
-#ifdef INCLUDE_MPC107_REPORT
-       unsigned int tmp = 0, i;
-#endif
-       /*
-        * Initialize the EUMBBAR (Embedded Util Mem Block Base Addr Reg).
-        * This is necessary before the EPIC, DMA ctlr, I2C ctlr, etc. can
-        * be accessed.
-        */
-
-#ifdef CONFIG_MPC8240                  /* only on MPC8240 */
-       mpc824x_mpc107_setreg (EUMBBAR, EUMBBAR_VAL);
-       /* MOT/SPS: Issue #10002, PCI (FD Alias enable) */
-       mpc824x_mpc107_setreg (AMBOR, 0x000000C0);
-#endif
-
-
-#ifdef INCLUDE_MPC107_REPORT
-       /* Check MPC824x PCI Device and Vendor ID */
-       while ((tmp = mpc824x_mpc107_getreg (BMC_BASE)) != 0x31057) {
-               printf ("       MPC107: offset=0x%x, val = 0x%x\n",
-                       BMC_BASE,
-                       tmp);
-       }
-
-       for (i = 0; i < N_MPC107_Regs; i++) {
-               printf ("       0x%x/%s = 0x%x\n",
-                       MPC107Regs[i].iobase,
-                       MPC107Regs[i].desc,
-                       mpc824x_mpc107_getreg (MPC107Regs[i].iobase));
-       }
-
-       printf ("IBAT0L = 0x%08X\n", mfspr (IBAT0L));
-       printf ("IBAT0U = 0x%08X\n", mfspr (IBAT0U));
-       printf ("IBAT1L = 0x%08X\n", mfspr (IBAT1L));
-       printf ("IBAT1U = 0x%08X\n", mfspr (IBAT1U));
-       printf ("IBAT2L = 0x%08X\n", mfspr (IBAT2L));
-       printf ("IBAT2U = 0x%08X\n", mfspr (IBAT2U));
-       printf ("IBAT3L = 0x%08X\n", mfspr (IBAT3L));
-       printf ("IBAT3U = 0x%08X\n", mfspr (IBAT3U));
-       printf ("DBAT0L = 0x%08X\n", mfspr (DBAT0L));
-       printf ("DBAT0U = 0x%08X\n", mfspr (DBAT0U));
-       printf ("DBAT1L = 0x%08X\n", mfspr (DBAT1L));
-       printf ("DBAT1U = 0x%08X\n", mfspr (DBAT1U));
-       printf ("DBAT2L = 0x%08X\n", mfspr (DBAT2L));
-       printf ("DBAT2U = 0x%08X\n", mfspr (DBAT2U));
-       printf ("DBAT3L = 0x%08X\n", mfspr (DBAT3L));
-       printf ("DBAT3U = 0x%08X\n", mfspr (DBAT3U));
-#endif /* INCLUDE_MPC107_REPORT */
-#endif /* CONFIG_MOUSSE */
        return (0);
 }
index e275fcea41e8ed519de09d90ba56bc32c050ac32..e41988d5fadabde58418bb9514acb5ac59ed2207 100644 (file)
@@ -19,7 +19,7 @@
 #include <tsec.h>
 #include <netdev.h>
 #include <fsl_esdhc.h>
-#ifdef CONFIG_BOOTCOUNT_LIMIT
+#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_MPC831x)
 #include <asm/immap_qe.h>
 #include <asm/io.h>
 #endif
index cce7d6b265e6a51cc676f1431aed175180aaba64..450a9704e5be684e1c07cc802fbdf4b085b16957 100644 (file)
@@ -17,7 +17,7 @@ extern void ft_qe_setup(void *blob);
 DECLARE_GLOBAL_DATA_PTR;
 
 #if defined(CONFIG_BOOTCOUNT_LIMIT) && \
-       (defined(CONFIG_QE))
+       (defined(CONFIG_QE) && !defined(CONFIG_MPC831x))
 #include <asm/immap_qe.h>
 
 void fdt_fixup_muram (void *blob)
@@ -124,7 +124,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 
        fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
 
-#if defined(CONFIG_BOOTCOUNT_LIMIT)
+#if defined(CONFIG_BOOTCOUNT_LIMIT) && \
+       (defined(CONFIG_QE) && !defined(CONFIG_MPC831x))
        fdt_fixup_muram (blob);
 #endif
 }
index ef7637a49cddf21daf2f7055e70d10f3e15f1f7d..409478539ec1a7eb16750f19baa0635faed2e51b 100644 (file)
@@ -102,7 +102,9 @@ obj-y       += cpu.o
 obj-y  += cpu_init.o
 obj-y  += cpu_init_early.o
 obj-y  += interrupts.o
+ifneq ($(CONFIG_QEMU_E500),y)
 obj-y  += speed.o
+endif
 obj-y  += tlb.o
 obj-y  += traps.o
 
index 8b79c05b1f2dc945a7fc662a5e9a4bab45938847..9d8acd0aa173ff29fa89b6aac8cef02e70e2393a 100644 (file)
@@ -113,6 +113,21 @@ static void check_erratum_a4580(uint32_t svr)
 }
 #endif
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
+/*
+ * This workaround can be implemented in PBI, or by u-boot.
+ */
+static void check_erratum_a007212(void)
+{
+       u32 __iomem *plldgdcr = (void *)(CONFIG_SYS_DCSRBAR + 0x21c20);
+
+       if (in_be32(plldgdcr) & 0x1fe) {
+               /* check if PLL ratio is set by workaround */
+               puts("Work-around for Erratum A007212 enabled\n");
+       }
+}
+#endif
+
 static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 #ifdef CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011
@@ -268,6 +283,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #ifdef CONFIG_SYS_FSL_ERRATUM_A005125
        puts("Work-around for Erratum A005125 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007075
+       if (has_erratum_a007075())
+               puts("Work-around for Erratum A007075 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))
@@ -277,6 +296,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (has_erratum_a006261())
                puts("Work-around for Erratum A006261 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
+       check_erratum_a007212();
+#endif
+
        return 0;
 }
 
index 3e99b079c74a5f613409fd70491d7882ae9e17c4..12e8e10d483cacc7493c55b24f57fce2f88240cd 100644 (file)
@@ -130,6 +130,11 @@ int checkcpu (void)
 
        get_sys_info(&sysinfo);
 
+#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+       if (sysinfo.diff_sysclk == 1)
+               puts("Single Source Clock Configuration\n");
+#endif
+
        puts("Clock Configuration:");
        for_each_cpu(i, core, nr_cores, mask) {
                if (!(i & 3))
@@ -272,7 +277,7 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #ifndef CONFIG_SYS_FSL_TBCLK_DIV
 #define CONFIG_SYS_FSL_TBCLK_DIV 8
 #endif
-unsigned long get_tbclk (void)
+__weak unsigned long get_tbclk (void)
 {
        unsigned long tbclk_div = CONFIG_SYS_FSL_TBCLK_DIV;
 
@@ -338,7 +343,8 @@ void mpc85xx_reginfo(void)
        !defined(CONFIG_SYS_INIT_L2_ADDR)
 phys_size_t initdram(int board_type)
 {
-#if defined(CONFIG_SPD_EEPROM) || defined(CONFIG_DDR_SPD)
+#if defined(CONFIG_SPD_EEPROM) || defined(CONFIG_DDR_SPD) || \
+       defined(CONFIG_QEMU_E500)
        return fsl_ddr_sdram_size();
 #else
        return (phys_size_t)CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
index 81aeadd363feade245665a6cf98f94ec378d0594..36ef23232ed044db5cf3316067b445d213c0f87a 100644 (file)
 #endif
 
 #include "../../../../drivers/block/fsl_sata.h"
+#ifdef CONFIG_U_QE
+#include "../../../../drivers/qe/qe.h"
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+/*
+ * For deriving usb clock from 100MHz sysclk, reference divisor is set
+ * to a value of 5, which gives an intermediate value 20(100/5). The
+ * multiplication factor integer is set to 24, which when multiplied to
+ * above intermediate value provides clock for usb ip.
+ */
+void usb_single_source_clk_configure(struct ccsr_usb_phy *usb_phy)
+{
+       sys_info_t sysinfo;
+
+       get_sys_info(&sysinfo);
+       if (sysinfo.diff_sysclk == 1) {
+               clrbits_be32(&usb_phy->pllprg[1],
+                            CONFIG_SYS_FSL_USB_PLLPRG2_MFI);
+               setbits_be32(&usb_phy->pllprg[1],
+                            CONFIG_SYS_FSL_USB_PLLPRG2_REF_DIV_INTERNAL_CLK |
+                            CONFIG_SYS_FSL_USB_PLLPRG2_MFI_INTERNAL_CLK |
+                            CONFIG_SYS_FSL_USB_INTERNAL_SOC_CLK_EN);
+               }
+}
+#endif
+
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006261
 void fsl_erratum_a006261_workaround(struct ccsr_usb_phy __iomem *usb_phy)
 {
@@ -84,7 +110,7 @@ void fsl_erratum_a006261_workaround(struct ccsr_usb_phy __iomem *usb_phy)
 #endif
 
 
-#ifdef CONFIG_QE
+#if defined(CONFIG_QE) && !defined(CONFIG_U_QE)
 extern qe_iop_conf_t qe_iop_conf_tab[];
 extern void qe_config_iopin(u8 port, u8 pin, int dir,
                                int open_drain, int assign);
@@ -173,17 +199,14 @@ void config_8560_ioports (volatile ccsr_cpm_t * cpm)
 #endif
 
 #ifdef CONFIG_SYS_FSL_CPC
-static void enable_cpc(void)
+#if defined(CONFIG_RAMBOOT_PBL) || defined(CONFIG_SYS_CPC_REINIT_F)
+static void disable_cpc_sram(void)
 {
        int i;
-       u32 size = 0;
 
        cpc_corenet_t *cpc = (cpc_corenet_t *)CONFIG_SYS_FSL_CPC_ADDR;
 
        for (i = 0; i < CONFIG_SYS_NUM_CPC; i++, cpc++) {
-               u32 cpccfg0 = in_be32(&cpc->cpccfg0);
-               size += CPC_CFG0_SZ_K(cpccfg0);
-#ifdef CONFIG_RAMBOOT_PBL
                if (in_be32(&cpc->cpcsrcr0) & CPC_SRCR0_SRAMEN) {
                        /* find and disable LAW of SRAM */
                        struct law_entry law = find_law(CONFIG_SYS_INIT_L3_ADDR);
@@ -198,8 +221,21 @@ static void enable_cpc(void)
                        out_be32(&cpc->cpccsr0, 0);
                        out_be32(&cpc->cpcsrcr0, 0);
                }
+       }
+}
 #endif
 
+static void enable_cpc(void)
+{
+       int i;
+       u32 size = 0;
+
+       cpc_corenet_t *cpc = (cpc_corenet_t *)CONFIG_SYS_FSL_CPC_ADDR;
+
+       for (i = 0; i < CONFIG_SYS_NUM_CPC; i++, cpc++) {
+               u32 cpccfg0 = in_be32(&cpc->cpccfg0);
+               size += CPC_CFG0_SZ_K(cpccfg0);
+
 #ifdef CONFIG_SYS_FSL_ERRATUM_CPC_A002
                setbits_be32(&cpc->cpchdbcr0, CPC_HDBCR0_TAG_ECC_SCRUB_DIS);
 #endif
@@ -267,11 +303,77 @@ static void corenet_tb_init(void)
 }
 #endif
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
+void fsl_erratum_a007212_workaround(void)
+{
+       ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 ddr_pll_ratio;
+       u32 __iomem *plldgdcr1 = (void *)(CONFIG_SYS_DCSRBAR + 0x21c20);
+       u32 __iomem *plldadcr1 = (void *)(CONFIG_SYS_DCSRBAR + 0x21c28);
+       u32 __iomem *dpdovrcr4 = (void *)(CONFIG_SYS_DCSRBAR + 0x21e80);
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 2)
+       u32 __iomem *plldgdcr2 = (void *)(CONFIG_SYS_DCSRBAR + 0x21c40);
+       u32 __iomem *plldadcr2 = (void *)(CONFIG_SYS_DCSRBAR + 0x21c48);
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 3)
+       u32 __iomem *plldgdcr3 = (void *)(CONFIG_SYS_DCSRBAR + 0x21c60);
+       u32 __iomem *plldadcr3 = (void *)(CONFIG_SYS_DCSRBAR + 0x21c68);
+#endif
+#endif
+       /*
+        * Even this workaround applies to selected version of SoCs, it is
+        * safe to apply to all versions, with the limitation of odd ratios.
+        * If RCW has disabled DDR PLL, we have to apply this workaround,
+        * otherwise DDR will not work.
+        */
+       ddr_pll_ratio = (in_be32(&gur->rcwsr[0]) >>
+               FSL_CORENET_RCWSR0_MEM_PLL_RAT_SHIFT) &
+               FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK;
+       /* check if RCW sets ratio to 0, required by this workaround */
+       if (ddr_pll_ratio != 0)
+               return;
+       ddr_pll_ratio = (in_be32(&gur->rcwsr[0]) >>
+               FSL_CORENET_RCWSR0_MEM_PLL_RAT_RESV_SHIFT) &
+               FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK;
+       /* check if reserved bits have the desired ratio */
+       if (ddr_pll_ratio == 0) {
+               printf("Error: Unknown DDR PLL ratio!\n");
+               return;
+       }
+       ddr_pll_ratio >>= 1;
+
+       setbits_be32(plldadcr1, 0x02000001);
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 2)
+       setbits_be32(plldadcr2, 0x02000001);
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 3)
+       setbits_be32(plldadcr3, 0x02000001);
+#endif
+#endif
+       setbits_be32(dpdovrcr4, 0xe0000000);
+       out_be32(plldgdcr1, 0x08000001 | (ddr_pll_ratio << 1));
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 2)
+       out_be32(plldgdcr2, 0x08000001 | (ddr_pll_ratio << 1));
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 3)
+       out_be32(plldgdcr3, 0x08000001 | (ddr_pll_ratio << 1));
+#endif
+#endif
+       udelay(100);
+       clrbits_be32(plldadcr1, 0x02000001);
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 2)
+       clrbits_be32(plldadcr2, 0x02000001);
+#if (CONFIG_NUM_DDR_CONTROLLERS >= 3)
+       clrbits_be32(plldadcr3, 0x02000001);
+#endif
+#endif
+       clrbits_be32(dpdovrcr4, 0xe0000000);
+}
+#endif
+
 void cpu_init_f (void)
 {
        extern void m8560_cpm_reset (void);
 #ifdef CONFIG_SYS_DCSRBAR_PHYS
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
 #endif
 #if defined(CONFIG_SECURE_BOOT)
        struct law_entry law;
@@ -298,6 +400,10 @@ void cpu_init_f (void)
        law = find_law(CONFIG_SYS_PBI_FLASH_BASE);
        if (law.index != -1)
                disable_law(law.index);
+
+#if defined(CONFIG_SYS_CPC_REINIT_F)
+       disable_cpc_sram();
+#endif
 #endif
 
 #ifdef CONFIG_CPM2
@@ -309,10 +415,12 @@ void cpu_init_f (void)
 #if defined(CONFIG_CPM2)
        m8560_cpm_reset();
 #endif
-#ifdef CONFIG_QE
+
+#if defined(CONFIG_QE) && !defined(CONFIG_U_QE)
        /* Config QE ioports */
        config_qe_ioports();
 #endif
+
 #if defined(CONFIG_FSL_DMA)
        dma_init();
 #endif
@@ -330,6 +438,17 @@ void cpu_init_f (void)
        in_be32(&gur->dcsrcr);
 #endif
 
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+#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;
+#endif
+#endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
+       fsl_erratum_a007212_workaround();
+#endif
+
 }
 
 /* Implement a dummy function for those platforms w/o SERDES */
@@ -598,6 +717,9 @@ skip_l2:
        puts("disabled\n");
 #endif
 
+#if defined(CONFIG_RAMBOOT_PBL)
+       disable_cpc_sram();
+#endif
        enable_cpc();
 
 #ifndef CONFIG_SYS_FSL_NO_SERDES
@@ -716,6 +838,9 @@ skip_l2:
                             CONFIG_SYS_FSL_USB_PLLPRG2_PHY1_CLK_EN |
                             CONFIG_SYS_FSL_USB_PLLPRG2_MFI |
                             CONFIG_SYS_FSL_USB_PLLPRG2_PLL_EN);
+#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+               usb_single_source_clk_configure(usb_phy);
+#endif
                setbits_be32(&usb_phy->port1.ctrl,
                             CONFIG_SYS_FSL_USB_CTRL_PHY_EN);
                setbits_be32(&usb_phy->port1.drvvbuscfg,
@@ -767,8 +892,6 @@ skip_l2:
        return 0;
 }
 
-extern void setup_ivors(void);
-
 void arch_preboot_os(void)
 {
        u32 msr;
@@ -781,8 +904,6 @@ void arch_preboot_os(void)
        msr = mfmsr();
        msr &= ~(MSR_ME|MSR_CE);
        mtmsr(msr);
-
-       setup_ivors();
 }
 
 #if defined(CONFIG_CMD_SATA) && defined(CONFIG_FSL_SATA)
@@ -797,21 +918,13 @@ int sata_initialize(void)
 
 void cpu_secondary_init_r(void)
 {
-#ifdef CONFIG_QE
+#ifdef CONFIG_U_QE
+       uint qe_base = CONFIG_SYS_IMMR + 0x00140000; /* QE immr base */
+#elif defined CONFIG_QE
        uint qe_base = CONFIG_SYS_IMMR + 0x00080000; /* QE immr base */
-#ifdef CONFIG_SYS_QE_FMAN_FW_IN_NAND
-       int ret;
-       size_t fw_length = CONFIG_SYS_QE_FMAN_FW_LENGTH;
-
-       /* load QE firmware from NAND flash to DDR first */
-       ret = nand_read(&nand_info[0], (loff_t)CONFIG_SYS_QE_FMAN_FW_IN_NAND,
-                       &fw_length, (u_char *)CONFIG_SYS_QE_FMAN_FW_ADDR);
-
-       if (ret && ret == -EUCLEAN) {
-               printf ("NAND read for QE firmware at offset %x failed %d\n",
-                               CONFIG_SYS_QE_FMAN_FW_IN_NAND, ret);
-       }
 #endif
+
+#ifdef CONFIG_QE
        qe_init(qe_base);
        qe_reset();
 #endif
index 993b8b828ba572c15e8df3957da29e56f12cff69..998781b706bc22667313053c3b055e773975f8a3 100644 (file)
@@ -79,7 +79,7 @@ void setup_ifc(void)
 #endif
 
 /* We run cpu_init_early_f in AS = 1 */
-void cpu_init_early_f(void)
+void cpu_init_early_f(void *fdt)
 {
        u32 mas0, mas1, mas2, mas3, mas7;
        int i;
@@ -102,6 +102,12 @@ void cpu_init_early_f(void)
        for (i = 0; i < sizeof(gd_t); i++)
                ((char *)gd)[i] = 0;
 
+       /*
+        * CONFIG_SYS_CCSRBAR_PHYS below may use gd->fdt_blob on ePAPR systems,
+        * so we need to populate it before it accesses it.
+        */
+       gd->fdt_blob = fdt;
+
        mas0 = MAS0_TLBSEL(1) | MAS0_ESEL(13);
        mas1 = MAS1_VALID | MAS1_TID(0) | MAS1_TS | MAS1_TSIZE(BOOKE_PAGESZ_1M);
        mas2 = FSL_BOOKE_MAS2(CONFIG_SYS_CCSRBAR, MAS2_I|MAS2_G);
index 33bc900167518264f847113d22f3e888dbb7ea29..0cc21c7f680916d0a58dcedb162f90e7f0469f91 100644 (file)
@@ -275,12 +275,16 @@ static inline void ft_fixup_l2cache(void *blob)
                        u32 *reg = (u32 *)fdt_getprop(blob, off, "reg", 0);
 #if defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2) && defined(CONFIG_E6500)
                        /* Only initialize every eighth thread */
-                       if (reg && !((*reg) % 8))
+                       if (reg && !((*reg) % 8)) {
+                               fdt_setprop_cell(blob, l2_off, "cache-stash-id",
+                                                (*reg / 4) + 32 + 1);
+                       }
 #else
-                       if (reg)
-#endif
+                       if (reg) {
                                fdt_setprop_cell(blob, l2_off, "cache-stash-id",
-                                        (*reg * 2) + 32 + 1);
+                                                (*reg * 2) + 32 + 1);
+                       }
+#endif
 #endif
 
                        fdt_setprop(blob, l2_off, "cache-unified", NULL, 0);
@@ -582,6 +586,33 @@ static void fdt_fixup_usb(void *fdt)
 #define fdt_fixup_usb(x)
 #endif
 
+#if defined(CONFIG_PPC_T1040)
+static void fdt_fixup_l2_switch(void *blob)
+{
+       uchar l2swaddr[6];
+       int node;
+
+       /* The l2switch node from device-tree has
+        * compatible string "vitesse-9953" */
+       node = fdt_node_offset_by_compatible(blob, -1, "vitesse-9953");
+       if (node == -FDT_ERR_NOTFOUND)
+               /* no l2switch node has been found */
+               return;
+
+       /* Get MAC address for the l2switch from "l2switchaddr"*/
+       if (!eth_getenv_enetaddr("l2switchaddr", l2swaddr)) {
+               printf("Warning: MAC address for l2switch not found\n");
+               memset(l2swaddr, 0, sizeof(l2swaddr));
+       }
+
+       /* Add MAC address to l2switch node */
+       fdt_setprop(blob, node, "local-mac-address", l2swaddr,
+                   sizeof(l2swaddr));
+}
+#else
+#define fdt_fixup_l2_switch(x)
+#endif
+
 void ft_cpu_setup(void *blob, bd_t *bd)
 {
        int off;
@@ -719,6 +750,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
                        "clock-frequency", gd->bus_clk/2, 1);
 
        fdt_fixup_usb(blob);
+
+       fdt_fixup_l2_switch(blob);
 }
 
 /*
diff --git a/arch/powerpc/cpu/mpc85xx/fixed_ivor.S b/arch/powerpc/cpu/mpc85xx/fixed_ivor.S
deleted file mode 100644 (file)
index ebbb8c0..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2009 Freescale Semiconductor, Inc.
- *
- * Kumar Gala <kumar.gala@freescale.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* This file is intended to be included by other asm code since
- * we will want to execute this on both the primary core when
- * it does a bootm and the secondary core's that get released
- * out of the spin table */
-
-#define SET_IVOR(vector_number, vector_offset) \
-       li      r3,vector_offset@l;             \
-       mtspr   SPRN_IVOR##vector_number,r3;
-
-#define SET_GIVOR(vector_number, vector_offset)        \
-       li      r3,vector_offset@l;             \
-       mtspr   SPRN_GIVOR##vector_number,r3;
-
-       SET_IVOR(0, 0x020) /* Critical Input */
-       SET_IVOR(1, 0x000) /* Machine Check */
-       SET_IVOR(2, 0x060) /* Data Storage */
-       SET_IVOR(3, 0x080) /* Instruction Storage */
-       SET_IVOR(4, 0x0a0) /* External Input */
-       SET_IVOR(5, 0x0c0) /* Alignment */
-       SET_IVOR(6, 0x0e0) /* Program */
-       SET_IVOR(7, 0x100) /* FP Unavailable */
-       SET_IVOR(8, 0x120) /* System Call */
-       SET_IVOR(9, 0x140) /* Auxiliary Processor Unavailable */
-       SET_IVOR(10, 0x160) /* Decrementer */
-       SET_IVOR(11, 0x180) /* Fixed Interval Timer */
-       SET_IVOR(12, 0x1a0) /* Watchdog Timer */
-       SET_IVOR(13, 0x1c0) /* Data TLB Error */
-       SET_IVOR(14, 0x1e0) /* Instruction TLB Error */
-       SET_IVOR(15, 0x040) /* Debug */
-
-/* e500v1 & e500v2 only */
-#ifndef CONFIG_E500MC
-       SET_IVOR(32, 0x200) /* SPE Unavailable */
-       SET_IVOR(33, 0x220) /* Embedded FP Data */
-       SET_IVOR(34, 0x240) /* Embedded FP Round */
-#endif
-
-       SET_IVOR(35, 0x260) /* Performance monitor */
-
-/* e500mc only */
-#ifdef CONFIG_E500MC
-       SET_IVOR(36, 0x280) /* Processor doorbell */
-       SET_IVOR(37, 0x2a0) /* Processor doorbell critical */
-       SET_IVOR(38, 0x2c0) /* Guest Processor doorbell */
-       SET_IVOR(39, 0x2e0) /* Guest Processor critical & machine check */
-       SET_IVOR(40, 0x300) /* Hypervisor system call */
-       SET_IVOR(41, 0x320) /* Hypervisor Priviledge */
-
-       SET_GIVOR(2, 0x060) /* Guest Data Storage */
-       SET_GIVOR(3, 0x080) /* Guest Instruction Storage */
-       SET_GIVOR(4, 0x0a0) /* Guest External Input */
-       SET_GIVOR(8, 0x120) /* Guest System Call */
-       SET_GIVOR(13, 0x1c0) /* Guest Data TLB Error */
-       SET_GIVOR(14, 0x1e0) /* Guest Instruction TLB Error */
-#endif
index 76c60da420110c90262a4769be6eadd341df24bd..d2825ec36eca67773c1265585a6a56d4750dcbbe 100644 (file)
@@ -12,7 +12,7 @@
 #include "asm/io.h"
 #include "asm/immap_85xx.h"
 
-#if defined(CONFIG_QE)
+#if defined(CONFIG_QE) && !defined(CONFIG_U_QE)
 #define        NUM_OF_PINS     32
 void qe_config_iopin(u8 port, u8 pin, int dir, int open_drain, int assign)
 {
index fcfba7ec19d2b5546ce53b2e6b570400a2e54ff8..a2c0ad4244ffc59644a90da7995965c300cf1ac2 100644 (file)
@@ -405,9 +405,6 @@ __second_half_boot_page:
        bne     3b
        isync
 
-       /* setup IVORs to match fixed offsets */
-#include "fixed_ivor.S"
-
        /* get the upper bits of the addr */
        lwz     r11,ENTRY_ADDR_UPPER(r10)
 
index adf09efa2795aa4f0934ddf4d0439938c07a46b1..d516d4e4a627aa669281824815db01defb3c97d6 100644 (file)
@@ -74,28 +74,33 @@ void get_sys_info(sys_info_t *sys_info)
        uint ratio[CONFIG_SYS_FSL_NUM_CC_PLLS];
        unsigned long sysclk = CONFIG_SYS_CLK_FREQ;
        uint mem_pll_rat;
-#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
-       uint single_src;
-#endif
 
        sys_info->freq_systembus = sysclk;
 #ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+       uint ddr_refclk_sel;
+       unsigned int porsr1_sys_clk;
+       porsr1_sys_clk = in_be32(&gur->porsr1) >> FSL_DCFG_PORSR1_SYSCLK_SHIFT
+                                               & FSL_DCFG_PORSR1_SYSCLK_MASK;
+       if (porsr1_sys_clk == FSL_DCFG_PORSR1_SYSCLK_DIFF)
+               sys_info->diff_sysclk = 1;
+       else
+               sys_info->diff_sysclk = 0;
+
        /*
         * DDR_REFCLK_SEL rcw bit is used to determine if DDR PLLS
         * are driven by separate DDR Refclock or single source
         * differential clock.
         */
-       single_src = (in_be32(&gur->rcwsr[5]) >>
+       ddr_refclk_sel = (in_be32(&gur->rcwsr[5]) >>
                      FSL_CORENET2_RCWSR5_DDR_REFCLK_SEL_SHIFT) &
                      FSL_CORENET2_RCWSR5_DDR_REFCLK_SEL_MASK;
        /*
-        * For single source clocking, both ddrclock and syclock
+        * For single source clocking, both ddrclock and sysclock
         * are driven by differential sysclock.
         */
-       if (single_src == FSL_CORENET2_RCWSR5_DDR_REFCLK_SINGLE_CLK) {
-               printf("Single Source Clock Configuration\n");
+       if (ddr_refclk_sel == FSL_CORENET2_RCWSR5_DDR_REFCLK_SINGLE_CLK)
                sys_info->freq_ddrbus = CONFIG_SYS_CLK_FREQ;
-       else
+       else
 #endif
 #ifdef CONFIG_DDR_CLK_FREQ
                sys_info->freq_ddrbus = CONFIG_DDR_CLK_FREQ;
@@ -107,6 +112,13 @@ void get_sys_info(sys_info_t *sys_info)
        mem_pll_rat = (in_be32(&gur->rcwsr[0]) >>
                        FSL_CORENET_RCWSR0_MEM_PLL_RAT_SHIFT)
                        & FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK;
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
+       if (mem_pll_rat == 0) {
+               mem_pll_rat = (in_be32(&gur->rcwsr[0]) >>
+                       FSL_CORENET_RCWSR0_MEM_PLL_RAT_RESV_SHIFT) &
+                       FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK;
+       }
+#endif
        /* 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.
@@ -151,8 +163,8 @@ void get_sys_info(sys_info_t *sys_info)
                sys_info->freq_processor[cpu] =
                         freq_c_pll[cplx_pll] / core_cplx_pll_div[c_pll_sel];
        }
-#if defined(CONFIG_PPC_B4860) || defined(CONFIG_PPC_T2080) || \
-       defined(CONFIG_PPC_T2081)
+#if defined(CONFIG_PPC_B4860) || defined(CONFIG_PPC_B4420) || \
+       defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)
 #define FM1_CLK_SEL    0xe0000000
 #define FM1_CLK_SHIFT  29
 #else
@@ -336,6 +348,10 @@ void get_sys_info(sys_info_t *sys_info)
 
 #endif /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */
 
+#ifdef CONFIG_U_QE
+       sys_info->freq_qe =  sys_info->freq_systembus / 2;
+#endif
+
 #else /* CONFIG_FSL_CORENET */
        uint plat_ratio, e500_ratio, half_freq_systembus;
        int i;
index dbbd8e588c587c4948eb6bd5d5f961d4d3b0b331..0e3c86a0f8f211e1f667af53280121c29c6294e1 100644 (file)
@@ -26,6 +26,8 @@
 #undef MSR_KERNEL
 #define MSR_KERNEL ( MSR_ME )  /* Machine Check */
 
+#define LAW_EN         0x80000000
+
 #if defined(CONFIG_NAND_SPL) || \
        (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_INIT_MINIMAL))
 #define MINIMAL_SPL
@@ -78,6 +80,13 @@ _start_e500:
        li      r1,MSR_DE
        mtmsr   r1
 
+       /*
+        * If we got an ePAPR device tree pointer passed in as r3, we need that
+        * later in cpu_init_early_f(). Save it to a safe register before we
+        * clobber it so that we can fetch it from there later.
+        */
+       mr      r24, r3
+
 #ifdef CONFIG_SYS_FSL_ERRATUM_A004510
        mfspr   r3,SPRN_SVR
        rlwinm  r3,r3,0,0xff
@@ -115,7 +124,8 @@ _start_e500:
 #endif
 
 
-#if defined(CONFIG_SECURE_BOOT) && defined(CONFIG_E500MC)
+#if defined(CONFIG_SECURE_BOOT) && defined(CONFIG_E500MC) && \
+       !defined(CONFIG_E6500)
        /* ISBC uses L2 as stack.
         * Disable L2 cache here so that u-boot can enable it later
         * as part of it's normal flow
@@ -460,7 +470,8 @@ nexti:      mflr    r1              /* R1 = our PC */
 2:     cmpw    r3, r4
        blt     1b
 
-#if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !defined(MINIMAL_SPL)
+#if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !defined(MINIMAL_SPL) && \
+       !defined(CONFIG_SECURE_BOOT)
 /*
  * TLB entry for debuggging in AS1
  * Create temporary TLB entry in AS0 to handle debug exception
@@ -481,12 +492,6 @@ nexti:     mflr    r1              /* R1 = our PC */
                0xffc00000, MAS3_SX|MAS3_SW|MAS3_SR, \
                0, r6
 
-#elif !defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT)
-       create_tlb1_entry CONFIG_SYS_PPC_E500_DEBUG_TLB, \
-               0, BOOKE_PAGESZ_1M, \
-               CONFIG_SYS_MONITOR_BASE, MAS2_I|MAS2_G, \
-               CONFIG_SYS_PBI_FLASH_WINDOW, MAS3_SX|MAS3_SW|MAS3_SR, \
-               0, r6
 #else
 /*
  * TLB entry is created for IVPR + IVOR15 to map on valid OP code address
@@ -574,7 +579,6 @@ infinite_debug_loop:
 #ifdef CONFIG_FSL_CORENET
 
 #define CCSR_LAWBARH0  (CONFIG_SYS_CCSRBAR + 0x1000)
-#define LAW_EN         0x80000000
 #define LAW_SIZE_4K    0xb
 #define CCSRBAR_LAWAR  (LAW_EN | (0x1e << 20) | LAW_SIZE_4K)
 #define CCSRAR_C       0x80000000      /* Commit */
@@ -1142,6 +1146,10 @@ _start_cont:
        mr      r1,r3           /* Transfer to SP(r1) */
 
        GET_GOT
+
+       /* Pass our potential ePAPR device tree pointer to cpu_init_early_f */
+       mr      r3, r24
+
        bl      cpu_init_early_f
 
        /* switch back to AS = 0 */
@@ -1644,6 +1652,7 @@ relocate_code:
        mr      r10,r5          /* Save copy of Destination Address     */
 
        GET_GOT
+#ifndef CONFIG_SPL_SKIP_RELOCATE
        mr      r3,r5                           /* Destination Address  */
        lis     r4,CONFIG_SYS_MONITOR_BASE@h            /* Source      Address  */
        ori     r4,r4,CONFIG_SYS_MONITOR_BASE@l
@@ -1734,6 +1743,7 @@ relocate_code:
 
        mtlr    r0
        blr                             /* NEVER RETURNS! */
+#endif
        .globl  in_ram
 in_ram:
 
@@ -1965,10 +1975,4 @@ flush_dcache:
        isync
 
        blr
-
-.globl setup_ivors
-setup_ivors:
-
-#include "fixed_ivor.S"
-       blr
 #endif /* !MINIMAL_SPL */
index 68160a9512bb18b86f6c59b54994d04411ef20df..1034cd4852b5b3bf97a8ab257448453db0774ddf 100644 (file)
@@ -46,6 +46,7 @@ struct liodn_id_table liodn_tbl[] = {
        SET_DMA_LIODN(2, 227),
 
        /* SET_NEXUS_LIODN(557), -- not yet implemented */
+       SET_QE_LIODN(559),
 };
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
index 8748ecd1440d1ea53811d4a4e937c39428f9fc3c..129ec662fe8a84ba289bb914cddd296eb8e08967 100644 (file)
@@ -24,7 +24,7 @@ void invalidate_tlb(u8 tlb)
                mtspr(MMUCSR0, 0x2);
 }
 
-void init_tlbs(void)
+__weak void init_tlbs(void)
 {
        int i;
 
@@ -236,20 +236,26 @@ void init_addr_map(void)
 }
 #endif
 
-unsigned int
-setup_ddr_tlbs_phys(phys_addr_t p_addr, unsigned int memsize_in_meg)
+uint64_t tlb_map_range(ulong v_addr, phys_addr_t p_addr, uint64_t size,
+                      enum tlb_map_type map_type)
 {
        int i;
        unsigned int tlb_size;
-       unsigned int wimge = MAS2_M;
-       unsigned int ram_tlb_address = (unsigned int)CONFIG_SYS_DDR_SDRAM_BASE;
+       unsigned int wimge;
+       unsigned int perm;
        unsigned int max_cam, tsize_mask;
-       u64 size, memsize = (u64)memsize_in_meg << 20;
 
+       if (map_type == TLB_MAP_RAM) {
+               perm = MAS3_SX|MAS3_SW|MAS3_SR;
+               wimge = MAS2_M;
 #ifdef CONFIG_SYS_PPC_DDR_WIMGE
-       wimge = CONFIG_SYS_PPC_DDR_WIMGE;
+               wimge = CONFIG_SYS_PPC_DDR_WIMGE;
 #endif
-       size = min(memsize, CONFIG_MAX_MEM_MAPPED);
+       } else {
+               perm = MAS3_SW|MAS3_SR;
+               wimge = MAS2_I|MAS2_G;
+       }
+
        if ((mfspr(SPRN_MMUCFG) & MMUCFG_MAVN) == MMUCFG_MAVN_V1) {
                /* Convert (4^max) kB to (2^max) bytes */
                max_cam = ((mfspr(SPRN_TLB1CFG) >> 16) & 0xf) * 2 + 10;
@@ -261,11 +267,11 @@ setup_ddr_tlbs_phys(phys_addr_t p_addr, unsigned int memsize_in_meg)
        }
 
        for (i = 0; size && i < 8; i++) {
-               int ram_tlb_index = find_free_tlbcam();
+               int tlb_index = find_free_tlbcam();
                u32 camsize = __ilog2_u64(size) & tsize_mask;
-               u32 align = __ilog2(ram_tlb_address) & tsize_mask;
+               u32 align = __ilog2(v_addr) & tsize_mask;
 
-               if (ram_tlb_index == -1)
+               if (tlb_index == -1)
                        break;
 
                if (align == -2) align = max_cam;
@@ -277,18 +283,29 @@ setup_ddr_tlbs_phys(phys_addr_t p_addr, unsigned int memsize_in_meg)
 
                tlb_size = camsize - 10;
 
-               set_tlb(1, ram_tlb_address, p_addr,
-                       MAS3_SX|MAS3_SW|MAS3_SR, wimge,
-                       0, ram_tlb_index, tlb_size, 1);
+               set_tlb(1, v_addr, p_addr, perm, wimge,
+                       0, tlb_index, tlb_size, 1);
 
                size -= 1ULL << camsize;
-               memsize -= 1ULL << camsize;
-               ram_tlb_address += 1UL << camsize;
+               v_addr += 1UL << camsize;
                p_addr += 1UL << camsize;
        }
 
+       return size;
+}
+
+unsigned int setup_ddr_tlbs_phys(phys_addr_t p_addr,
+                                unsigned int memsize_in_meg)
+{
+       unsigned int ram_tlb_address = (unsigned int)CONFIG_SYS_DDR_SDRAM_BASE;
+       u64 memsize = (u64)memsize_in_meg << 20;
+
+       memsize = min(memsize, CONFIG_MAX_MEM_MAPPED);
+       memsize = tlb_map_range(ram_tlb_address, p_addr, memsize, TLB_MAP_RAM);
+
        if (memsize)
                print_size(memsize, " left unmapped\n");
+
        return memsize_in_meg;
 }
 
index df3b0f9168b7615eab3515114bc83b20738af37f..d77a6dc62d8ac97fb9988cc9143b6021f87202b4 100644 (file)
@@ -4,6 +4,12 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include "config.h"    /* CONFIG_BOARDDIR */
+
+#ifndef CONFIG_SYS_MONITOR_LEN
+#define CONFIG_SYS_MONITOR_LEN 0x80000
+#endif
+
 OUTPUT_ARCH(powerpc)
 /* Do we need any of these for elf?
    __DYNAMIC = 0;    */
@@ -76,7 +82,7 @@ SECTIONS
     KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
   } :text = 0xffff
 
-  . = ADDR(.text) + 0x80000;
+  . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
 
   __bss_start = .;
   .bss (NOLOAD)       :
index acaa0939ab4e6add174dadc11dbb8f2d8b66c4f2..8453f3a3fe8901f8a768be3a2dce33412a100ebe 100644 (file)
@@ -57,6 +57,16 @@ SECTIONS
        . = ALIGN(8);
        __init_begin = .;
        __init_end = .;
+#ifdef CONFIG_SPL_SKIP_RELOCATE
+       . = ALIGN(4);
+       __bss_start = .;
+       .bss : {
+               *(.sbss*)
+               *(.bss*)
+       }
+       . = ALIGN(4);
+       __bss_end = .;
+#endif
 
 /* For ifc, elbc, esdhc, espi, all need the SPL without section .resetvec */
 #ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
@@ -66,11 +76,16 @@ SECTIONS
        } :text = 0xffff
 #else
 #if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */
-       .bootpg ADDR(.text) + 0x1000 :
+#ifndef BOOT_PAGE_OFFSET
+#define BOOT_PAGE_OFFSET 0x1000
+#endif
+       .bootpg ADDR(.text) + BOOT_PAGE_OFFSET :
        {
                arch/powerpc/cpu/mpc85xx/start.o (.bootpg)
        }
+#ifndef RESET_VECTOR_OFFSET
 #define RESET_VECTOR_OFFSET 0x1ffc /* IFC has 8K sram */
+#endif
 #elif defined(CONFIG_FSL_ELBC)
 #define RESET_VECTOR_OFFSET 0xffc /* LBC has 4k sram */
 #else
@@ -81,6 +96,7 @@ SECTIONS
        } = 0xffff
 #endif
 
+#ifndef CONFIG_SPL_SKIP_RELOCATE
        /*
         * Make sure that the bss segment isn't linked at 0x0, otherwise its
         * address won't be updated during relocation fixups.
@@ -95,4 +111,5 @@ SECTIONS
        }
        . = ALIGN(4);
        __bss_end = .;
+#endif
 }
index 2af4c80f6080accf32d591ac23c56dbf96d91d63..0b9086dfd09befe23d47bb76e424e34ac9463d9d 100644 (file)
 #define RESET_VECTOR_ADDRESS   0xfffffffc
 #endif
 
+#ifndef CONFIG_SYS_MONITOR_LEN
+#define CONFIG_SYS_MONITOR_LEN 0x80000
+#endif
+
 OUTPUT_ARCH(powerpc)
+ENTRY(_start_e500)
 
 PHDRS
 {
@@ -84,7 +89,7 @@ SECTIONS
   {
     KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
   } :text = 0xffff
-  . = ADDR(.text) + 0x80000;
+  . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
 #else
   .bootpg RESET_VECTOR_ADDRESS - 0xffc :
   {
index 53f873d1abf6052c0ef9674b2f62f979af930eaa..9c3102dc69f2e93286ce102ff0108adbcb01f205 100644 (file)
@@ -29,12 +29,10 @@ void cpm_load_patch (volatile immap_t * immr);
  */
 void cpu_init_f (volatile immap_t * immr)
 {
-#ifndef CONFIG_MBX
        volatile memctl8xx_t *memctl = &immr->im_memctl;
 # ifdef CONFIG_SYS_PLPRCR
        ulong mfmask;
 # endif
-#endif
        ulong reg;
 
        /* SYPCR - contains watchdog control (11-9) */
@@ -74,8 +72,6 @@ void cpu_init_f (volatile immap_t * immr)
 
        immr->im_clkrstk.cark_plprcrk = KAPWR_KEY;
 
-#ifndef CONFIG_MBX             /* MBX board does things different */
-
        /* If CONFIG_SYS_PLPRCR (set in the various *_config.h files) tries to
         * set the MF field, then just copy CONFIG_SYS_PLPRCR over car_plprcr,
         * otherwise OR in CONFIG_SYS_PLPRCR so we do not change the current MF
@@ -142,7 +138,6 @@ void cpu_init_f (volatile immap_t * immr)
     defined(CONFIG_MHPC)       || \
     defined(CONFIG_R360MPI)    || \
     defined(CONFIG_RMU)                || \
-    defined(CONFIG_RPXCLASSIC) || \
     defined(CONFIG_RPXLITE)    || \
     defined(CONFIG_SPC1920)    || \
     defined(CONFIG_SPD823TS)
@@ -203,8 +198,6 @@ void cpu_init_f (volatile immap_t * immr)
        memctl->memc_br7 = CONFIG_SYS_BR7_PRELIM;
 #endif
 
-#endif /* ! CONFIG_MBX */
-
        /*
         * Reset CPM
         */
@@ -213,20 +206,6 @@ void cpu_init_f (volatile immap_t * immr)
                __asm__ ("eieio");
        } while (immr->im_cpm.cp_cpcr & CPM_CR_FLG);
 
-#ifdef CONFIG_MBX
-       /*
-        * on the MBX, things are a little bit different:
-        * - we need to read the VPD to get board information
-        * - the plprcr is set up dynamically
-        * - the memory controller is set up dynamically
-        */
-       mbx_init ();
-#endif /* CONFIG_MBX */
-
-#ifdef CONFIG_RPXCLASSIC
-       rpxclassic_init ();
-#endif
-
 #if defined(CONFIG_RPXLITE) && defined(CONFIG_ENV_IS_IN_NVRAM)
        rpxlite_init ();
 #endif
index 2ef77b4c14d988d4e3c5d8462030e40bf8441671..5da697366de23f0c9fd040d88ad4d94f514774ed 100644 (file)
@@ -461,23 +461,6 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
 #error Configuration Error: exactly ONE of PB_ENET_TENA, PC_ENET_TENA must be defined
 #endif
 
-#if defined(CONFIG_ADS) && defined(CONFIG_MPC860)
-       /*
-        * Port C is used to control the PHY,MC68160.
-        */
-       immr->im_ioport.iop_pcdir |=
-               (PC_ENET_ETHLOOP | PC_ENET_TPFLDL | PC_ENET_TPSQEL);
-
-       immr->im_ioport.iop_pcdat |= PC_ENET_TPFLDL;
-       immr->im_ioport.iop_pcdat &= ~(PC_ENET_ETHLOOP | PC_ENET_TPSQEL);
-       *((uint *) BCSR1) &= ~BCSR1_ETHEN;
-#endif /* MPC860ADS */
-
-#ifdef CONFIG_RPXCLASSIC
-       *((uchar *) BCSR0) &= ~BCSR0_ETHLPBK;
-       *((uchar *) BCSR0) |= (BCSR0_ETHEN | BCSR0_COLTEST | BCSR0_FULLDPLX);
-#endif
-
 #ifdef CONFIG_RPXLITE
        *((uchar *) BCSR0) |= BCSR0_ETHEN;
 #endif
@@ -492,10 +475,6 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
        immr->im_cpm.cp_pbdat &= ~0x00000010;
 #endif /* QS860T */
 
-#ifdef CONFIG_MBX
-       board_ether_init ();
-#endif
-
 #if defined(CONFIG_NETVIA)
 #if defined(PA_ENET_PDN)
        immr->im_ioport.iop_papar &= ~PA_ENET_PDN;
@@ -528,8 +507,6 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
         */
 #if defined (CONFIG_FADS)
        udelay (10000);         /* wait 10 ms */
-#elif defined(CONFIG_RPXCLASSIC)
-       udelay (100000);        /* wait 100 ms */
 #endif
 
        return 1;
index 4e840498d79e2db909d7a059655dcc5c3cd03e7f..932141144ce2e5a297b93a7d6edce43e1f9bb664 100644 (file)
@@ -173,7 +173,7 @@ static int smc_init (void)
 # endif
 #endif
 
-#if defined(CONFIG_FADS) || defined(CONFIG_ADS)
+#if defined(CONFIG_FADS)
        /* Enable RS232 */
 #if defined(CONFIG_8xx_CONS_SMC1)
        *((uint *) BCSR1) &= ~BCSR1_RS232EN_1;
@@ -182,7 +182,7 @@ static int smc_init (void)
 #endif
 #endif /* CONFIG_FADS */
 
-#if defined(CONFIG_RPXLITE) || defined(CONFIG_RPXCLASSIC)
+#if defined(CONFIG_RPXLITE)
        /* Enable Monitor Port Transceiver */
        *((uchar *) BCSR0) |= BCSR0_ENMONXCVR ;
 #endif /* CONFIG_RPXLITE */
@@ -225,10 +225,6 @@ static int smc_init (void)
        up->smc_tstate = 0;
 #endif
 
-#if defined(CONFIG_MBX)
-       board_serial_init();
-#endif /* CONFIG_MBX */
-
        /* Set UART mode, 8 bit, no parity, one stop.
         * Enable receive and transmit.
         */
diff --git a/arch/powerpc/cpu/mpc8xx/wlkbd.c b/arch/powerpc/cpu/mpc8xx/wlkbd.c
deleted file mode 100644 (file)
index 3a41c2f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * (C) Copyright 2000
- * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <config.h>
-
-#ifdef CONFIG_WL_4PPM_KEYBOARD
-
-/* WIP: Wireless keyboard on SMC
- */
-int    drv_wlkbd_init (void)
-{
-    return 0 ;
-}
-
-#endif /* CONFIG_WL_4PPM_KEYBOARD */
index a401083107794cc3dd218cf88e7edc58c7858063..33d53a8cfe400fdc4e3e89471001e639cbe0fc56 100644 (file)
@@ -221,6 +221,32 @@ int set_ddr_laws(u64 start, u64 sz, enum law_trgt_if id)
 }
 #endif /* not SPL */
 
+void disable_non_ddr_laws(void)
+{
+       int i;
+       int id;
+       for (i = 0; i < FSL_HW_NUM_LAWS; i++) {
+               u32 lawar = in_be32(LAWAR_ADDR(i));
+
+               if (lawar & LAW_EN) {
+                       id = (lawar & ~LAW_EN) >> 20;
+                       switch (id) {
+                       case LAW_TRGT_IF_DDR_1:
+                       case LAW_TRGT_IF_DDR_2:
+                       case LAW_TRGT_IF_DDR_3:
+                       case LAW_TRGT_IF_DDR_4:
+                       case LAW_TRGT_IF_DDR_INTRLV:
+                       case LAW_TRGT_IF_DDR_INTLV_34:
+                       case LAW_TRGT_IF_DDR_INTLV_123:
+                       case LAW_TRGT_IF_DDR_INTLV_1234:
+                                               continue;
+                       default:
+                                               disable_law(i);
+                       }
+               }
+       }
+}
+
 void init_laws(void)
 {
        int i;
@@ -233,6 +259,23 @@ void init_laws(void)
 #error FSL_HW_NUM_LAWS can not be greater than 32 w/o code changes
 #endif
 
+#if defined(CONFIG_SECURE_BOOT) && defined(CONFIG_E500) && \
+                                               !defined(CONFIG_E500MC)
+       /* ISBC (Boot ROM) creates a LAW 0 entry for non PBL platforms,
+        * which is not disabled before transferring the control to uboot.
+        * Disable the LAW 0 entry here.
+        */
+       disable_law(0);
+#endif
+
+#if !defined(CONFIG_SECURE_BOOT)
+       /*
+        * if any non DDR LAWs has been created earlier, remove them before
+        * LAW table is parsed.
+       */
+       disable_non_ddr_laws();
+#endif
+
        /*
         * Any LAWs that were set up before we booted assume they are meant to
         * be around and mark them used.
@@ -244,15 +287,6 @@ void init_laws(void)
                        gd->arch.used_laws |= (1 << i);
        }
 
-#if (defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)) || \
-       (defined(CONFIG_SPL) && !defined(CONFIG_SPL_BUILD))
-       /*
-        * in SPL boot we've already parsed the law_table and setup those LAWs
-        * so don't do it again.
-        */
-       return;
-#endif
-
        for (i = 0; i < num_law_entries; i++) {
                if (law_table[i].index == -1)
                        set_next_law(law_table[i].addr, law_table[i].size,
index df444510911a29b184c2caa90e6966f4eb9b68eb..864e74c0c761d8240f26fa0576928f0bfdd1d248 100644 (file)
@@ -19,8 +19,8 @@
  */
 #define CONFIG_PPC_SPINTABLE_COMPATIBLE
 
-#define FSL_DDR_VER_4_7        47
-#define FSL_DDR_VER_5_0        50
+#include <fsl_ddrc_version.h>
+#define CONFIG_SYS_FSL_DDR_BE
 
 /* IP endianness */
 #define CONFIG_SYS_FSL_IFC_BE
 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399
 #define CONFIG_SYS_FSL_ERRATUM_A005125
 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_ERRATUM_A007075
 #define CONFIG_SYS_FSL_ERRATUM_A006261
 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x10
 #define CONFIG_ESDHC_HC_BLK_ADDR
 #define CONFIG_SYS_NUM_FM1_DTSEC       5
 #define CONFIG_SYS_NUM_FM1_10GEC       1
 #define CONFIG_NUM_DDR_CONTROLLERS     1
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_5
 #define CONFIG_SYS_FM_MURAM_SIZE       0x28000
 #define CONFIG_SYS_FSL_TBCLK_DIV       32
 #define CONFIG_SYS_FSL_PCIE_COMPAT     "fsl,qoriq-pcie-v2.2"
 #define CONFIG_SYS_NUM_FM1_10GEC       1
 #define CONFIG_SYS_NUM_FM2_10GEC       1
 #define CONFIG_NUM_DDR_CONTROLLERS     2
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_4
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
 #define CONFIG_SYS_FM_MURAM_SIZE       0x28000
 #define CONFIG_SYS_FSL_TBCLK_DIV       16
 #define CONFIG_SYS_P4080_ERRATUM_PCIE_A003
 #define CONFIG_SYS_FSL_ERRATUM_A005812
 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_ERRATUM_A007075
 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
 
 #elif defined(CONFIG_PPC_P5020) /* also supports P5010 */
 #define CONFIG_SYS_NUM_FM1_DTSEC       5
 #define CONFIG_SYS_NUM_FM1_10GEC       1
 #define CONFIG_NUM_DDR_CONTROLLERS     2
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_4
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
 #define CONFIG_SYS_FM_MURAM_SIZE       0x28000
 #define CONFIG_SYS_FSL_TBCLK_DIV       32
 #define CONFIG_SYS_NUM_FM2_DTSEC       5
 #define CONFIG_SYS_NUM_FM2_10GEC       1
 #define CONFIG_NUM_DDR_CONTROLLERS     2
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_4
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
 #define CONFIG_SYS_FM_MURAM_SIZE       0x28000
 #define CONFIG_SYS_FSL_TBCLK_DIV       16
 #define CONFIG_TSECV2
 #define CONFIG_SYS_FSL_SEC_COMPAT      4
 #define CONFIG_NUM_DDR_CONTROLLERS     1
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_4
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        1
 #define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000
 #define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT     0xff600000
 #define CONFIG_TSECV2
 #define CONFIG_SYS_FSL_SEC_COMPAT      4
 #define CONFIG_NUM_DDR_CONTROLLERS     2
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_6
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        1
 #define CONFIG_SYS_FSL_DSP_DDR_ADDR    0x40000000
 #define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000
 #define CONFIG_SYS_FSL_ERRATUM_A005871
 #define CONFIG_SYS_FSL_ERRATUM_A006379
 #define CONFIG_SYS_FSL_ERRATUM_A006593
+#define CONFIG_SYS_FSL_ERRATUM_A007075
 #define CONFIG_SYS_FSL_ERRATUM_A006475
 #define CONFIG_SYS_FSL_ERRATUM_A006384
+#define CONFIG_SYS_FSL_ERRATUM_A007212
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xfe000000
 
 #ifdef CONFIG_PPC_B4860
@@ -704,6 +714,9 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #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 */
+#ifdef CONFIG_SYS_FSL_DDR4
+#define CONFIG_SYS_FSL_DDRC_GEN4
+#endif
 #if defined(CONFIG_PPC_T1040) || defined(CONFIG_PPC_T1042)
 #define CONFIG_MAX_CPUS                        4
 #elif defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
@@ -736,6 +749,9 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #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
 
 #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)
 #define CONFIG_E6500
@@ -777,6 +793,7 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define CONFIG_SYS_FSL_PCIE_COMPAT     "fsl,qoriq-pcie-v3.0"
 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
+#define CONFIG_SYS_FSL_ERRATUM_A007212
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xfe000000
 #define CONFIG_SYS_FSL_SFP_VER_3_0
 #define CONFIG_SYS_FSL_ISBC_VER                2
@@ -793,10 +810,15 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define CONFIG_SYS_FSL_SEC_COMPAT      6
 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
 #define CONFIG_NUM_DDR_CONTROLLERS     1
+#define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_6
 #define CONFIG_SYS_FSL_IFC_BANK_COUNT  8
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xff700000
 #define CONFIG_SYS_FSL_ERRATUM_A005125
 
+#elif defined(CONFIG_QEMU_E500)
+#define CONFIG_MAX_CPUS                        1
+#define CONFIG_SYS_CCSRBAR_DEFAULT     0xe0000000
+
 #else
 #error Processor type not defined for this platform
 #endif
@@ -813,7 +835,8 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 
 #if !defined(CONFIG_SYS_FSL_DDRC_GEN1) && \
        !defined(CONFIG_SYS_FSL_DDRC_GEN2) && \
-       !defined(CONFIG_SYS_FSL_DDRC_GEN3)
+       !defined(CONFIG_SYS_FSL_DDRC_GEN3) && \
+       !defined(CONFIG_SYS_FSL_DDRC_GEN4)
 #define CONFIG_SYS_FSL_DDRC_GEN3
 #endif
 
index c9982cc8ec49486cf14c3ed786cac48f46d4c17f..4eba85cc3475b9fabca873981e9b1a81eafd95f3 100644 (file)
@@ -60,4 +60,20 @@ static inline bool has_erratum_a006261(void)
 }
 #endif
 
+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;
+}
 #endif
index 44bc88dcecd0ddd8cc20e1b8614888080050ce27..f658bcbc66ae07396f9bf8adf9bb3e1d20ef42c0 100644 (file)
@@ -99,6 +99,10 @@ extern void fdt_fixup_liodn(void *blob);
        SET_GUTS_LIODN("fsl,esdhc", liodn, sdmmc##sdhcNum##liodnr,\
                CONFIG_SYS_MPC85xx_ESDHC_OFFSET)
 
+#define SET_QE_LIODN(liodn) \
+       SET_GUTS_LIODN("fsl,qe", liodn, qeliodnr,\
+               CONFIG_SYS_MPC85xx_QE_OFFSET)
+
 #define SET_QMAN_LIODN(liodn) \
        SET_LIODN_ENTRY_1("fsl,qman", liodn, offsetof(ccsr_qman_t, liodnr) + \
                CONFIG_SYS_FSL_QMAN_OFFSET, \
index 4c7f0b1caeea36432e87a266d2b698202beac685..29bef910ed67f71fb23c709f0a0a50b2662c53d4 100644 (file)
 #ifdef CONFIG_SECURE_BOOT
 #if defined(CONFIG_FSL_CORENET)
 #define CONFIG_SYS_PBI_FLASH_BASE              0xc0000000
+#elif defined(CONFIG_BSC9132QDS)
+#define CONFIG_SYS_PBI_FLASH_BASE              0xc8000000
 #else
 #define CONFIG_SYS_PBI_FLASH_BASE              0xce000000
 #endif
 #define CONFIG_SYS_PBI_FLASH_WINDOW            0xcff80000
 
+#if defined(CONFIG_B4860QDS) || \
+       defined(CONFIG_T4240QDS) || \
+       defined(CONFIG_T2080QDS) || \
+       defined(CONFIG_T1040QDS) || \
+       defined(CONFIG_T1040RDB)
+#define CONFIG_SYS_CPC_REINIT_F
+#undef CONFIG_SYS_INIT_L3_ADDR
+#define CONFIG_SYS_INIT_L3_ADDR                        0xbff00000
+#endif
+
 #endif
 #endif
index bed80aa93328712e32b375026121b1480d8bb8cb..6086a73ba95598cc3b35f2ecf00aa60c7268160d 100644 (file)
@@ -59,7 +59,6 @@ typedef struct sysconf512x {
        u8 res2[0x28];
        law512x_t ddrlaw;       /* DDR Local Access Window */
        u8 res3[0x18];
-       u32 mbxbar;             /* MBX Base Address */
        u32 srambar;            /* SRAM Base Address */
        u32 nfcbar;             /* NFC Base Address */
        u8 res4[0x34];
index 4b6f9d018e97a8b7516cd7b6fe22ecad847c567f..741b8618d11fbd25ffd99e6658b95e122f5e72cf 100644 (file)
@@ -1583,6 +1583,12 @@ typedef struct cpc_corenet {
 typedef struct ccsr_gur {
        u32     porsr1;         /* POR status 1 */
        u32     porsr2;         /* POR status 2 */
+#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+#define        FSL_DCFG_PORSR1_SYSCLK_SHIFT    15
+#define        FSL_DCFG_PORSR1_SYSCLK_MASK     0x1
+#define        FSL_DCFG_PORSR1_SYSCLK_SINGLE_ENDED     0x1
+#define        FSL_DCFG_PORSR1_SYSCLK_DIFF     0x0
+#endif
        u8      res_008[0x20-0x8];
        u32     gpporcr1;       /* General-purpose POR configuration */
        u32     gpporcr2;       /* General-purpose POR configuration 2 */
@@ -1739,6 +1745,8 @@ typedef struct ccsr_gur {
 
 #ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
 #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_SHIFT   16
+/* use reserved bits 18~23 as scratch space to host DDR PLL ratio */
+#define FSL_CORENET_RCWSR0_MEM_PLL_RAT_RESV_SHIFT      8
 #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK    0x3f
 #if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL                0xfc000000
@@ -1889,7 +1897,9 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
        u32     sata2liodnr;    /* SATA 2 LIODN */
        u32     sata3liodnr;    /* SATA 3 LIODN */
        u32     sata4liodnr;    /* SATA 4 LIODN */
-       u8      res22[32];
+       u8      res22[24];
+       u32     qeliodnr;       /* QE LIODN */
+       u8      res_57c[4];
        u32     dma1liodnr;     /* DMA 1 LIODN */
        u32     dma2liodnr;     /* DMA 2 LIODN */
        u32     dma3liodnr;     /* DMA 3 LIODN */
@@ -2877,6 +2887,7 @@ struct ccsr_pman {
 #define CONFIG_SYS_MPC85xx_LBC_OFFSET          0x124000
 #define CONFIG_SYS_MPC85xx_IFC_OFFSET          0x124000
 #define CONFIG_SYS_MPC85xx_GPIO_OFFSET         0x130000
+#define CONFIG_SYS_MPC85xx_QE_OFFSET           0x140000
 #define CONFIG_SYS_FSL_CORENET_RMAN_OFFSET     0x1e0000
 #if defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2) && !defined(CONFIG_PPC_B4860)\
        && !defined(CONFIG_PPC_B4420)
@@ -3151,4 +3162,26 @@ struct dcsr_dcfg_regs {
 #define        DCSR_DCFG_ECC_DISABLE_USB2      0x00004000
        u8  res_524[0x1000 - 0x524]; /* 0x524 - 0x1000 */
 };
+
+#define CONFIG_SYS_MPC85xx_SCFG \
+       (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_SCFG_OFFSET)
+#define CONFIG_SYS_MPC85xx_SCFG_OFFSET 0xfc000
+/* The supplement configuration unit register */
+struct ccsr_scfg {
+       u32 dpslpcr;    /* 0x000 Deep Sleep Control register */
+       u32 usb1dpslpcsr;/* 0x004 USB1 Deep Sleep Control Status register */
+       u32 usb2dpslpcsr;/* 0x008 USB2 Deep Sleep Control Status register */
+       u32 fmclkdpslpcr;/* 0x00c FM Clock Deep Sleep Control register */
+       u32 res1[4];
+       u32 esgmiiselcr;/* 0x020 Ethernet Switch SGMII Select Control reg */
+       u32 res2;
+       u32 pixclkcr;   /* 0x028 Pixel Clock Control register */
+       u32 res3[245];
+       u32 qeioclkcr;  /* 0x400 QUICC Engine IO Clock Control register */
+       u32 emiiocr;    /* 0x404 EMI MDIO Control Register */
+       u32 sdhciovselcr;/* 0x408 SDHC IO VSEL Control register */
+       u32 qmifrstcr;  /* 0x40c QMAN Interface Reset Control register */
+       u32 res4[60];
+       u32 sparecr[8]; /* 0x500 Spare Control register(0-7) */
+};
 #endif /*__IMMAP_85xx__*/
index cadaeef85a5a170780fb4925a949eb4515a0a85a..5aa916f2e279e4ce54664eb317cf8d712686b8ca 100644 (file)
@@ -509,6 +509,14 @@ extern void print_tlbcam(void);
 extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg);
 extern void clear_ddr_tlbs(unsigned int memsize_in_meg);
 
+enum tlb_map_type {
+       TLB_MAP_RAM,
+       TLB_MAP_IO,
+};
+
+extern uint64_t tlb_map_range(ulong v_addr, phys_addr_t p_addr, uint64_t size,
+                             enum tlb_map_type map_type);
+
 extern void write_tlb(u32 _mas0, u32 _mas1, u32 _mas2, u32 _mas3, u32 _mas7);
 
 #define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \
index 3c2842057487dc0fc562577ff79bbebe214dfbd0..f4d4a6b30033327e74e6c12f5bc7656321e4d3e8 100644 (file)
@@ -106,9 +106,6 @@ typedef struct bd_info {
        unsigned int    bi_opbfreq;             /* OPB clock in Hz */
        int             bi_iic_fast[2];         /* Use fast i2c mode */
 #endif
-#if defined(CONFIG_NX823)
-       unsigned char   bi_sernum[8];
-#endif
 #if defined(CONFIG_4xx)
 #if defined(CONFIG_440GX) || \
     defined(CONFIG_460EX) || defined(CONFIG_460GT)
index f86c6f3e8fa0476e6ee394b3fab91d2bc9186480..8b03d3aa07b1f4b383b58fe2eb0165157026423d 100644 (file)
@@ -343,6 +343,13 @@ void board_init_f(ulong bootflag)
 #ifdef CONFIG_PRAM
        ulong reg;
 #endif
+#ifdef CONFIG_DEEP_SLEEP
+       const ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       struct ccsr_scfg *scfg = (void *)CONFIG_SYS_MPC85xx_SCFG;
+       u32 start_addr;
+       typedef void (*func_t)(void);
+       func_t kernel_resume;
+#endif
 
        /* Pointer is writable since we allocated a register for it */
        gd = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
@@ -360,6 +367,15 @@ void board_init_f(ulong bootflag)
                if ((*init_fnc_ptr) () != 0)
                        hang();
 
+#ifdef CONFIG_DEEP_SLEEP
+       /* Jump to kernel in deep sleep case */
+       if (in_be32(&gur->scrtsr[0]) & (1 << 3)) {
+               start_addr = in_be32(&scfg->sparecr[1]);
+               kernel_resume = (func_t)start_addr;
+               kernel_resume();
+       }
+#endif
+
 #ifdef CONFIG_POST
        post_bootmode_init();
        post_run(NULL, POST_ROM | post_bootmode_get(NULL));
diff --git a/arch/sh/cpu/sh2/cache.c b/arch/sh/cpu/sh2/cache.c
deleted file mode 100644 (file)
index 8093e98..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * (C) Copyright 2007
- * Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
- *
- * Copyright (C) 2007, 2008 Nobobuhiro Iwamatsu <iwamatsu@nigauri.org>
- * Copyright (C) 2008 Renesas Solutions Corp.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-
-/*
- * Jump to P2 area.
- * When handling TLB or caches, we need to do it from P2 area.
- */
-#define jump_to_P2()                   \
-do {                                   \
-       unsigned long __dummy;          \
-       __asm__ __volatile__(           \
-               "mov.l  1f, %0\n\t"     \
-               "or     %1, %0\n\t"     \
-               "jmp    @%0\n\t"        \
-               " nop\n\t"              \
-               ".balign 4\n"           \
-               "1:     .long 2f\n"     \
-               "2:"                    \
-               : "=&r" (__dummy)       \
-               : "r" (0x20000000));    \
-} while (0)
-
-/*
- * Back to P1 area.
- */
-#define back_to_P1()                   \
-do {                                   \
-       unsigned long __dummy;          \
-       __asm__ __volatile__(           \
-               "nop;nop;nop;nop;nop;nop;nop\n\t"       \
-               "mov.l  1f, %0\n\t"     \
-               "jmp    @%0\n\t"        \
-               " nop\n\t"              \
-               ".balign 4\n"           \
-               "1:     .long 2f\n"     \
-               "2:"                    \
-               : "=&r" (__dummy));     \
-} while (0)
-
-#define CACHE_VALID    1
-#define CACHE_UPDATED  2
-
-static inline void cache_wback_all(void)
-{
-       unsigned long addr, data, i, j;
-
-       jump_to_P2();
-       for (i = 0; i < CACHE_OC_NUM_ENTRIES; i++) {
-               for (j = 0; j < CACHE_OC_NUM_WAYS; j++) {
-                       addr = CACHE_OC_ADDRESS_ARRAY
-                               | (j << CACHE_OC_WAY_SHIFT)
-                               | (i << CACHE_OC_ENTRY_SHIFT);
-                       data = inl(addr);
-                       if (data & CACHE_UPDATED) {
-                               data &= ~CACHE_UPDATED;
-                               outl(data, addr);
-                       }
-               }
-       }
-       back_to_P1();
-}
-
-
-#define CACHE_ENABLE   0
-#define CACHE_DISABLE  1
-
-int cache_control(unsigned int cmd)
-{
-       unsigned long ccr;
-
-       jump_to_P2();
-       ccr = inl(CCR);
-
-       if (ccr & CCR_CACHE_ENABLE)
-               cache_wback_all();
-
-       if (cmd == CACHE_DISABLE)
-               outl(CCR_CACHE_STOP, CCR);
-       else
-               outl(CCR_CACHE_INIT, CCR);
-       back_to_P1();
-
-       return 0;
-}
index f9b0d347f784b1a943932ebb4dc2968b6a29311a..c44b0930ec08ecbe08186c73fef95562da090e88 100644 (file)
@@ -7,4 +7,4 @@
 
 PLATFORM_RELFLAGS += -fPIC
 
-PLATFORM_CPPFLAGS += -DCONFIG_LEON
+PLATFORM_CPPFLAGS += -DCONFIG_LEON -DCONFIG_LEON2
index f9b0d347f784b1a943932ebb4dc2968b6a29311a..ca6c9b13ec2120a1869bb863c39e8c3377108646 100644 (file)
@@ -7,4 +7,4 @@
 
 PLATFORM_RELFLAGS += -fPIC
 
-PLATFORM_CPPFLAGS += -DCONFIG_LEON
+PLATFORM_CPPFLAGS += -DCONFIG_LEON -DCONFIG_LEON3
diff --git a/board/Marvell/common/ecctest.c b/board/Marvell/common/ecctest.c
deleted file mode 100644 (file)
index 0a9a2a4..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * (C) Copyright 2001
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifdef ECC_TEST
-static inline void ecc_off (void)
-{
-       *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) &= ~0x00200000;
-}
-
-static inline void ecc_on (void)
-{
-       *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) |= 0x00200000;
-}
-
-static int putshex (const char *buf, int len)
-{
-       int i;
-
-       for (i = 0; i < len; i++) {
-               printf ("%02x", buf[i]);
-       }
-       return 0;
-}
-
-static int char_memcpy (void *d, const void *s, int len)
-{
-       int i;
-       char *cd = d;
-       const char *cs = s;
-
-       for (i = 0; i < len; i++) {
-               *(cd++) = *(cs++);
-       }
-       return 0;
-}
-
-static int memory_test (char *buf)
-{
-       const char src[][16] = {
-               {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-               {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-                0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
-               {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-                0x02, 0x02, 0x02, 0x02, 0x02, 0x02},
-               {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-                0x04, 0x04, 0x04, 0x04, 0x04, 0x04},
-               {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-                0x08, 0x08, 0x08, 0x08, 0x08, 0x08},
-               {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-                0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
-               {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-                0x20, 0x20, 0x20, 0x20, 0x20, 0x20},
-               {0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-                0x40, 0x40, 0x40, 0x40, 0x40, 0x40},
-               {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-                0x80, 0x80, 0x80, 0x80, 0x80, 0x80},
-               {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-                0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
-               {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-                0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa},
-               {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
-       };
-       const int foo[] = { 0 };
-       int i, j, a;
-
-       printf ("\ntest @ %d %p\n", foo[0], buf);
-       for (i = 0; i < 12; i++) {
-               for (a = 0; a < 8; a++) {
-                       const char *s = src[i] + a;
-                       int align = (unsigned) (s) & 0x7;
-
-                       /* ecc_off(); */
-                       memcpy (buf, s, 8);
-                       /* ecc_on(); */
-                       putshex (s, 8);
-                       if (memcmp (buf, s, 8)) {
-                               putc ('\n');
-                               putshex (buf, 8);
-                               printf (" [FAIL] (%p) align=%d\n", s, align);
-                               for (j = 0; j < 8; j++) {
-                                       s[j] == buf[j] ? puts ("  ") :
-                                               printf ("%02x",
-                                                       (s[j]) ^ (buf[j]));
-                               }
-                               putc ('\n');
-                       } else {
-                               printf (" [PASS] (%p) align=%d\n", s, align);
-                       }
-                       /* ecc_off(); */
-                       char_memcpy (buf, s, 8);
-                       /* ecc_on(); */
-                       putshex (s, 8);
-                       if (memcmp (buf, s, 8)) {
-                               putc ('\n');
-                               putshex (buf, 8);
-                               printf (" [FAIL] (%p) align=%d\n", s, align);
-                               for (j = 0; j < 8; j++) {
-                                       s[j] == buf[j] ? puts ("  ") :
-                                               printf ("%02x",
-                                                       (s[j]) ^ (buf[j]));
-                               }
-                               putc ('\n');
-                       } else {
-                               printf (" [PASS] (%p) align=%d\n", s, align);
-                       }
-               }
-       }
-
-       return 0;
-}
-#endif
diff --git a/board/RPXClassic/Makefile b/board/RPXClassic/Makefile
deleted file mode 100644 (file)
index 87db754..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  = RPXClassic.o flash.o eccx.o
diff --git a/board/RPXClassic/README b/board/RPXClassic/README
deleted file mode 100644 (file)
index e03f670..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Porting U-Boot onto RPXClassic LF_BW31 board
-# Written by Pierre AUBERT
-# E-Mail  p.aubert@staubli.com
-# Stäubli Faverges - <www.staubli.com>
-#
-# Sept. 20 2001
-#
-# Cross compile: Montavista Hardhat ported on HP-UX 10.20
-#
-
-Flash memories : AM29DL323B (2 banks flash memories) 16 Mb from 0xff000000
-DRAM : 16 Mb from 0
-NVRAM : 512 kb from 0xfa000000
-
-
-- environment is stored in NVRAM
-- Mac address is read from EEPROM
-- ethernet on SCC1 or fast ethernet on FEC are running (depending on the
-  configuration flag CONFIG_FEC_ENET)
diff --git a/board/RPXClassic/RPXClassic.c b/board/RPXClassic/RPXClassic.c
deleted file mode 100644 (file)
index 15b7232..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT  p.aubert@staubli.com
- * U-Boot port on RPXClassic LF (CLLF_BW31) board
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <i2c.h>
-#include <config.h>
-#include <mpc8xx.h>
-#include <net.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-static unsigned char aschex_to_byte (unsigned char *cp);
-
-/* ------------------------------------------------------------------------- */
-
-#define _NOT_USED_     0xFFFFCC25
-
-const uint sdram_table[] =
-{
-       /*
-        * Single Read. (Offset 00h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0X0CAFCC04, 0X03AFCC08,
-       0x3FBFCC27, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Read. (Offset 08h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0x0CAFCC84, 0x03AFCC88,
-       0x3FBFCC27, /* last */
-       _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 18h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC04, 0x03FFCC00,
-       0x3FFFCC27, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Write. (Offset 20h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC80, 0x03FFCC8C,
-       0x0CFFCC00, 0x33FFCC27, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Refresh. (Offset 30h in UPMA RAM)
-        */
-       0xC0FFCC24, 0x03FFCC24, 0x0FFFCC24, 0x0FFFCC24,
-       0x3FFFCC27, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Exception. (Offset 3Ch in UPMA RAM)
-        */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       puts ("Board: RPXClassic\n");
-       return (0);
-}
-
-/*-----------------------------------------------------------------------------
- * board_get_enetaddr -- Read the MAC Address in the I2C EEPROM
- *-----------------------------------------------------------------------------
- */
-static void board_get_enetaddr(uchar *enet)
-{
-       int i;
-       char buff[256], *cp;
-
-       /* Initialize I2C                                       */
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       /* Read 256 bytes in EEPROM                             */
-       i2c_read (0x54, 0, 1, (uchar *)buff, 128);
-       i2c_read (0x54, 128, 1, (uchar *)buff + 128, 128);
-
-       /* Retrieve MAC address in buffer (key EA)              */
-       for (cp = buff;;) {
-               if (cp[0] == 'E' && cp[1] == 'A') {
-                       cp += 3;
-                       /* Read MAC address                     */
-                       for (i = 0; i < 6; i++, cp += 2) {
-                               enet[i] = aschex_to_byte ((unsigned char *)cp);
-                       }
-               }
-               /* Scan to the end of the record                */
-               while ((*cp != '\n') && (*cp != (char)0xff)) {
-                       cp++;
-               }
-               /* If the next character is a \n, 0 or ff, we are done. */
-               cp++;
-               if ((*cp == '\n') || (*cp == 0) || (*cp == (char)0xff))
-                       break;
-       }
-
-#ifdef CONFIG_FEC_ENET
-       /* The MAC address is the same as normal ethernet except the 3rd byte    */
-       /* (See the E.P. Planet Core Overview manual            */
-       enet[3] |= 0x80;
-#endif
-
-       printf("MAC address = %pM\n", enet);
-}
-
-int misc_init_r(void)
-{
-       uchar enetaddr[6];
-
-       if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
-               board_get_enetaddr(enetaddr);
-               eth_setenv_enetaddr("ethaddr", enetaddr);
-       }
-
-       return 0;
-}
-
-void rpxclassic_init (void)
-{
-       /* Enable NVRAM */
-       *((uchar *) BCSR0) |= BCSR0_ENNVRAM;
-
-#ifdef CONFIG_FEC_ENET
-
-       /* Validate the fast ethernet tranceiver                             */
-       *((volatile uchar *) BCSR2) &= ~BCSR2_MIICTL;
-       *((volatile uchar *) BCSR2) &= ~BCSR2_MIIPWRDWN;
-       *((volatile uchar *) BCSR2) |= BCSR2_MIIRST;
-       *((volatile uchar *) BCSR2) |= BCSR2_MIIPWRDWN;
-#endif
-
-}
-
-/* ------------------------------------------------------------------------- */
-
-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 size10;
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                          sizeof (sdram_table) / sizeof (uint));
-
-       /* Refresh clock prescalar */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-       memctl->memc_mar = 0x00000000;
-
-       /* Map controller banks 1 to the SDRAM bank */
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_10COL & (~(MAMR_PTAE));     /* no refresh yet */
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mcr = 0x80002230;  /* SDRAM bank 0 - refresh twice */
-       udelay (1);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
-       udelay (1000);
-
-       /* Check Bank 0 Memory Size
-        * try 10 column mode
-        */
-
-       size10 = dram_size (CONFIG_SYS_MAMR_10COL, SDRAM_BASE_PRELIM,
-                                               SDRAM_MAX_SIZE);
-
-       return (size10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * 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));
-}
-/*-----------------------------------------------------------------------------
- * aschex_to_byte --
- *-----------------------------------------------------------------------------
- */
-static unsigned char aschex_to_byte (unsigned char *cp)
-{
-       u_char byte, c;
-
-       c = *cp++;
-
-       if ((c >= 'A') && (c <= 'F')) {
-               c -= 'A';
-               c += 10;
-       } else if ((c >= 'a') && (c <= 'f')) {
-               c -= 'a';
-               c += 10;
-       } else {
-               c -= '0';
-       }
-
-       byte = c * 16;
-
-       c = *cp;
-
-       if ((c >= 'A') && (c <= 'F')) {
-               c -= 'A';
-               c += 10;
-       } else if ((c >= 'a') && (c <= 'f')) {
-               c -= 'a';
-               c += 10;
-       } else {
-               c -= '0';
-       }
-
-       byte += c;
-
-       return (byte);
-}
diff --git a/board/RPXClassic/eccx.c b/board/RPXClassic/eccx.c
deleted file mode 100644 (file)
index 766a19e..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * (C) Copyright 2002
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT  p.aubert@staubli.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-/* Video support for the ECCX daughter board                                 */
-
-
-#include <common.h>
-#include <config.h>
-
-#ifdef CONFIG_VIDEO_SED13806
-#include <sed13806.h>
-
-
-/* Screen configurations: the initialization of the SD13806 depends on
-   screen and on display mode. We handle only 8bpp and 16 bpp modes          */
-
-/* ECCX board is supplied with a NEC NL6448BC20 screen                       */
-#ifdef CONFIG_NEC_NL6448BC20
-#define DISPLAY_WIDTH   640
-#define DISPLAY_HEIGHT  480
-
-#ifdef CONFIG_VIDEO_SED13806_8BPP
-static const S1D_REGS init_regs [] =
-{
-    {0x0001,0x00},   /* Miscellaneous Register */
-    {0x01FC,0x00},   /* Display Mode Register */
-    {0x0004,0x1b},   /* General IO Pins Configuration Register 0 */
-    {0x0005,0x00},   /* General IO Pins Configuration Register 1 */
-    {0x0008,0xe5},   /* General IO Pins Control Register 0 */
-    {0x0009,0x1f},   /* General IO Pins Control Register 1 */
-    {0x0010,0x02},   /* Memory Clock Configuration Register */
-    {0x0014,0x10},   /* LCD Pixel Clock Configuration Register */
-    {0x0018,0x02},   /* CRT/TV Pixel Clock Configuration Register */
-    {0x001C,0x02},   /* MediaPlug Clock Configuration Register */
-    {0x001E,0x01},   /* CPU To Memory Wait State Select Register */
-    {0x0021,0x04},   /* DRAM Refresh Rate Register */
-    {0x002A,0x00},   /* DRAM Timings Control Register 0 */
-    {0x002B,0x01},   /* DRAM Timings Control Register 1 */
-    {0x0020,0x80},   /* Memory Configuration Register */
-    {0x0030,0x25},   /* Panel Type Register */
-    {0x0031,0x00},   /* MOD Rate Register */
-    {0x0032,0x4F},   /* LCD Horizontal Display Width Register */
-    {0x0034,0x13},   /* LCD Horizontal Non-Display Period Register */
-    {0x0035,0x01},   /* TFT FPLINE Start Position Register */
-    {0x0036,0x0B},   /* TFT FPLINE Pulse Width Register */
-    {0x0038,0xDF},   /* LCD Vertical Display Height Register 0 */
-    {0x0039,0x01},   /* LCD Vertical Display Height Register 1 */
-    {0x003A,0x2C},   /* LCD Vertical Non-Display Period Register */
-    {0x003B,0x00},   /* TFT FPFRAME Start Position Register */
-    {0x003C,0x01},   /* TFT FPFRAME Pulse Width Register */
-    {0x0040,0x03},   /* LCD Display Mode Register */
-    {0x0041,0x02},   /* LCD Miscellaneous Register */
-    {0x0042,0x00},   /* LCD Display Start Address Register 0 */
-    {0x0043,0x00},   /* LCD Display Start Address Register 1 */
-    {0x0044,0x00},   /* LCD Display Start Address Register 2 */
-    {0x0046,0x40},   /* LCD Memory Address Offset Register 0 */
-    {0x0047,0x01},   /* LCD Memory Address Offset Register 1 */
-    {0x0048,0x00},   /* LCD Pixel Panning Register */
-    {0x004A,0x00},   /* LCD Display FIFO High Threshold Control Register */
-    {0x004B,0x00},   /* LCD Display FIFO Low Threshold Control Register */
-    {0x0050,0x4F},   /* CRT/TV Horizontal Display Width Register */
-    {0x0052,0x13},   /* CRT/TV Horizontal Non-Display Period Register */
-    {0x0053,0x01},   /* CRT/TV HRTC Start Position Register */
-    {0x0054,0x0B},   /* CRT/TV HRTC Pulse Width Register */
-    {0x0056,0xDF},   /* CRT/TV Vertical Display Height Register 0 */
-    {0x0057,0x01},   /* CRT/TV Vertical Display Height Register 1 */
-    {0x0058,0x2B},   /* CRT/TV Vertical Non-Display Period Register */
-    {0x0059,0x09},   /* CRT/TV VRTC Start Position Register */
-    {0x005A,0x01},   /* CRT/TV VRTC Pulse Width Register */
-    {0x005B,0x00},   /* TV Output Control Register */
-    {0x0060,0x03},   /* CRT/TV Display Mode Register */
-    {0x0062,0x00},   /* CRT/TV Display Start Address Register 0 */
-    {0x0063,0x00},   /* CRT/TV Display Start Address Register 1 */
-    {0x0064,0x00},   /* CRT/TV Display Start Address Register 2 */
-    {0x0066,0x40},   /* CRT/TV Memory Address Offset Register 0 */
-    {0x0067,0x01},   /* CRT/TV Memory Address Offset Register 1 */
-    {0x0068,0x00},   /* CRT/TV Pixel Panning Register */
-    {0x006A,0x00},   /* CRT/TV Display FIFO High Threshold Control Register */
-    {0x006B,0x00},   /* CRT/TV Display FIFO Low Threshold Control Register */
-    {0x0070,0x00},   /* LCD Ink/Cursor Control Register */
-    {0x0071,0x00},   /* LCD Ink/Cursor Start Address Register */
-    {0x0072,0x00},   /* LCD Cursor X Position Register 0 */
-    {0x0073,0x00},   /* LCD Cursor X Position Register 1 */
-    {0x0074,0x00},   /* LCD Cursor Y Position Register 0 */
-    {0x0075,0x00},   /* LCD Cursor Y Position Register 1 */
-    {0x0076,0x00},   /* LCD Ink/Cursor Blue Color 0 Register */
-    {0x0077,0x00},   /* LCD Ink/Cursor Green Color 0 Register */
-    {0x0078,0x00},   /* LCD Ink/Cursor Red Color 0 Register */
-    {0x007A,0x1F},   /* LCD Ink/Cursor Blue Color 1 Register */
-    {0x007B,0x3F},   /* LCD Ink/Cursor Green Color 1 Register */
-    {0x007C,0x1F},   /* LCD Ink/Cursor Red Color 1 Register */
-    {0x007E,0x00},   /* LCD Ink/Cursor FIFO Threshold Register */
-    {0x0080,0x00},   /* CRT/TV Ink/Cursor Control Register */
-    {0x0081,0x00},   /* CRT/TV Ink/Cursor Start Address Register */
-    {0x0082,0x00},   /* CRT/TV Cursor X Position Register 0 */
-    {0x0083,0x00},   /* CRT/TV Cursor X Position Register 1 */
-    {0x0084,0x00},   /* CRT/TV Cursor Y Position Register 0 */
-    {0x0085,0x00},   /* CRT/TV Cursor Y Position Register 1 */
-    {0x0086,0x00},   /* CRT/TV Ink/Cursor Blue Color 0 Register */
-    {0x0087,0x00},   /* CRT/TV Ink/Cursor Green Color 0 Register */
-    {0x0088,0x00},   /* CRT/TV Ink/Cursor Red Color 0 Register */
-    {0x008A,0x1F},   /* CRT/TV Ink/Cursor Blue Color 1 Register */
-    {0x008B,0x3F},   /* CRT/TV Ink/Cursor Green Color 1 Register */
-    {0x008C,0x1F},   /* CRT/TV Ink/Cursor Red Color 1 Register */
-    {0x008E,0x00},   /* CRT/TV Ink/Cursor FIFO Threshold Register */
-    {0x0100,0x00},   /* BitBlt Control Register 0 */
-    {0x0101,0x00},   /* BitBlt Control Register 1 */
-    {0x0102,0x00},   /* BitBlt ROP Code/Color Expansion Register */
-    {0x0103,0x00},   /* BitBlt Operation Register */
-    {0x0104,0x00},   /* BitBlt Source Start Address Register 0 */
-    {0x0105,0x00},   /* BitBlt Source Start Address Register 1 */
-    {0x0106,0x00},   /* BitBlt Source Start Address Register 2 */
-    {0x0108,0x00},   /* BitBlt Destination Start Address Register 0 */
-    {0x0109,0x00},   /* BitBlt Destination Start Address Register 1 */
-    {0x010A,0x00},   /* BitBlt Destination Start Address Register 2 */
-    {0x010C,0x00},   /* BitBlt Memory Address Offset Register 0 */
-    {0x010D,0x00},   /* BitBlt Memory Address Offset Register 1 */
-    {0x0110,0x00},   /* BitBlt Width Register 0 */
-    {0x0111,0x00},   /* BitBlt Width Register 1 */
-    {0x0112,0x00},   /* BitBlt Height Register 0 */
-    {0x0113,0x00},   /* BitBlt Height Register 1 */
-    {0x0114,0x00},   /* BitBlt Background Color Register 0 */
-    {0x0115,0x00},   /* BitBlt Background Color Register 1 */
-    {0x0118,0x00},   /* BitBlt Foreground Color Register 0 */
-    {0x0119,0x00},   /* BitBlt Foreground Color Register 1 */
-    {0x01E0,0x00},   /* Look-Up Table Mode Register */
-    {0x01E2,0x00},   /* Look-Up Table Address Register */
-    {0x01E4,0x00},   /* Look-Up Table Data Register */
-    {0x01F0,0x10},   /* Power Save Configuration Register */
-    {0x01F1,0x00},   /* Power Save Status Register */
-    {0x01F4,0x00},   /* CPU-to-Memory Access Watchdog Timer Register */
-    {0x01FC,0x01},   /* Display Mode Register */
-    {0, 0}
-};
-#endif /* CONFIG_VIDEO_SED13806_8BPP */
-
-#ifdef CONFIG_VIDEO_SED13806_16BPP
-
-static const S1D_REGS init_regs [] =
-{
-    {0x0001,0x00},   /* Miscellaneous Register */
-    {0x01FC,0x00},   /* Display Mode Register */
-    {0x0004,0x1b},   /* General IO Pins Configuration Register 0 */
-    {0x0005,0x00},   /* General IO Pins Configuration Register 1 */
-    {0x0008,0xe5},   /* General IO Pins Control Register 0 */
-    {0x0009,0x1f},   /* General IO Pins Control Register 1 */
-    {0x0010,0x02},   /* Memory Clock Configuration Register */
-    {0x0014,0x10},   /* LCD Pixel Clock Configuration Register */
-    {0x0018,0x02},   /* CRT/TV Pixel Clock Configuration Register */
-    {0x001C,0x02},   /* MediaPlug Clock Configuration Register */
-    {0x001E,0x01},   /* CPU To Memory Wait State Select Register */
-    {0x0021,0x04},   /* DRAM Refresh Rate Register */
-    {0x002A,0x00},   /* DRAM Timings Control Register 0 */
-    {0x002B,0x01},   /* DRAM Timings Control Register 1 */
-    {0x0020,0x80},   /* Memory Configuration Register */
-    {0x0030,0x25},   /* Panel Type Register */
-    {0x0031,0x00},   /* MOD Rate Register */
-    {0x0032,0x4F},   /* LCD Horizontal Display Width Register */
-    {0x0034,0x13},   /* LCD Horizontal Non-Display Period Register */
-    {0x0035,0x01},   /* TFT FPLINE Start Position Register */
-    {0x0036,0x0B},   /* TFT FPLINE Pulse Width Register */
-    {0x0038,0xDF},   /* LCD Vertical Display Height Register 0 */
-    {0x0039,0x01},   /* LCD Vertical Display Height Register 1 */
-    {0x003A,0x2C},   /* LCD Vertical Non-Display Period Register */
-    {0x003B,0x00},   /* TFT FPFRAME Start Position Register */
-    {0x003C,0x01},   /* TFT FPFRAME Pulse Width Register */
-    {0x0040,0x05},   /* LCD Display Mode Register */
-    {0x0041,0x02},   /* LCD Miscellaneous Register */
-    {0x0042,0x00},   /* LCD Display Start Address Register 0 */
-    {0x0043,0x00},   /* LCD Display Start Address Register 1 */
-    {0x0044,0x00},   /* LCD Display Start Address Register 2 */
-    {0x0046,0x80},   /* LCD Memory Address Offset Register 0 */
-    {0x0047,0x02},   /* LCD Memory Address Offset Register 1 */
-    {0x0048,0x00},   /* LCD Pixel Panning Register */
-    {0x004A,0x00},   /* LCD Display FIFO High Threshold Control Register */
-    {0x004B,0x00},   /* LCD Display FIFO Low Threshold Control Register */
-    {0x0050,0x4F},   /* CRT/TV Horizontal Display Width Register */
-    {0x0052,0x13},   /* CRT/TV Horizontal Non-Display Period Register */
-    {0x0053,0x01},   /* CRT/TV HRTC Start Position Register */
-    {0x0054,0x0B},   /* CRT/TV HRTC Pulse Width Register */
-    {0x0056,0xDF},   /* CRT/TV Vertical Display Height Register 0 */
-    {0x0057,0x01},   /* CRT/TV Vertical Display Height Register 1 */
-    {0x0058,0x2B},   /* CRT/TV Vertical Non-Display Period Register */
-    {0x0059,0x09},   /* CRT/TV VRTC Start Position Register */
-    {0x005A,0x01},   /* CRT/TV VRTC Pulse Width Register */
-    {0x005B,0x00},   /* TV Output Control Register */
-    {0x0060,0x05},   /* CRT/TV Display Mode Register */
-    {0x0062,0x00},   /* CRT/TV Display Start Address Register 0 */
-    {0x0063,0x00},   /* CRT/TV Display Start Address Register 1 */
-    {0x0064,0x00},   /* CRT/TV Display Start Address Register 2 */
-    {0x0066,0x80},   /* CRT/TV Memory Address Offset Register 0 */
-    {0x0067,0x02},   /* CRT/TV Memory Address Offset Register 1 */
-    {0x0068,0x00},   /* CRT/TV Pixel Panning Register */
-    {0x006A,0x00},   /* CRT/TV Display FIFO High Threshold Control Register */
-    {0x006B,0x00},   /* CRT/TV Display FIFO Low Threshold Control Register */
-    {0x0070,0x00},   /* LCD Ink/Cursor Control Register */
-    {0x0071,0x00},   /* LCD Ink/Cursor Start Address Register */
-    {0x0072,0x00},   /* LCD Cursor X Position Register 0 */
-    {0x0073,0x00},   /* LCD Cursor X Position Register 1 */
-    {0x0074,0x00},   /* LCD Cursor Y Position Register 0 */
-    {0x0075,0x00},   /* LCD Cursor Y Position Register 1 */
-    {0x0076,0x00},   /* LCD Ink/Cursor Blue Color 0 Register */
-    {0x0077,0x00},   /* LCD Ink/Cursor Green Color 0 Register */
-    {0x0078,0x00},   /* LCD Ink/Cursor Red Color 0 Register */
-    {0x007A,0x1F},   /* LCD Ink/Cursor Blue Color 1 Register */
-    {0x007B,0x3F},   /* LCD Ink/Cursor Green Color 1 Register */
-    {0x007C,0x1F},   /* LCD Ink/Cursor Red Color 1 Register */
-    {0x007E,0x00},   /* LCD Ink/Cursor FIFO Threshold Register */
-    {0x0080,0x00},   /* CRT/TV Ink/Cursor Control Register */
-    {0x0081,0x00},   /* CRT/TV Ink/Cursor Start Address Register */
-    {0x0082,0x00},   /* CRT/TV Cursor X Position Register 0 */
-    {0x0083,0x00},   /* CRT/TV Cursor X Position Register 1 */
-    {0x0084,0x00},   /* CRT/TV Cursor Y Position Register 0 */
-    {0x0085,0x00},   /* CRT/TV Cursor Y Position Register 1 */
-    {0x0086,0x00},   /* CRT/TV Ink/Cursor Blue Color 0 Register */
-    {0x0087,0x00},   /* CRT/TV Ink/Cursor Green Color 0 Register */
-    {0x0088,0x00},   /* CRT/TV Ink/Cursor Red Color 0 Register */
-    {0x008A,0x1F},   /* CRT/TV Ink/Cursor Blue Color 1 Register */
-    {0x008B,0x3F},   /* CRT/TV Ink/Cursor Green Color 1 Register */
-    {0x008C,0x1F},   /* CRT/TV Ink/Cursor Red Color 1 Register */
-    {0x008E,0x00},   /* CRT/TV Ink/Cursor FIFO Threshold Register */
-    {0x0100,0x00},   /* BitBlt Control Register 0 */
-    {0x0101,0x00},   /* BitBlt Control Register 1 */
-    {0x0102,0x00},   /* BitBlt ROP Code/Color Expansion Register */
-    {0x0103,0x00},   /* BitBlt Operation Register */
-    {0x0104,0x00},   /* BitBlt Source Start Address Register 0 */
-    {0x0105,0x00},   /* BitBlt Source Start Address Register 1 */
-    {0x0106,0x00},   /* BitBlt Source Start Address Register 2 */
-    {0x0108,0x00},   /* BitBlt Destination Start Address Register 0 */
-    {0x0109,0x00},   /* BitBlt Destination Start Address Register 1 */
-    {0x010A,0x00},   /* BitBlt Destination Start Address Register 2 */
-    {0x010C,0x00},   /* BitBlt Memory Address Offset Register 0 */
-    {0x010D,0x00},   /* BitBlt Memory Address Offset Register 1 */
-    {0x0110,0x00},   /* BitBlt Width Register 0 */
-    {0x0111,0x00},   /* BitBlt Width Register 1 */
-    {0x0112,0x00},   /* BitBlt Height Register 0 */
-    {0x0113,0x00},   /* BitBlt Height Register 1 */
-    {0x0114,0x00},   /* BitBlt Background Color Register 0 */
-    {0x0115,0x00},   /* BitBlt Background Color Register 1 */
-    {0x0118,0x00},   /* BitBlt Foreground Color Register 0 */
-    {0x0119,0x00},   /* BitBlt Foreground Color Register 1 */
-    {0x01E0,0x01},   /* Look-Up Table Mode Register */
-    {0x01E2,0x00},   /* Look-Up Table Address Register */
-    {0x01E4,0x00},   /* Look-Up Table Data Register */
-    {0x01F0,0x10},   /* Power Save Configuration Register */
-    {0x01F1,0x00},   /* Power Save Status Register */
-    {0x01F4,0x00},   /* CPU-to-Memory Access Watchdog Timer Register */
-    {0x01FC,0x01},   /* Display Mode Register */
-    {0, 0}
-};
-
-#endif /* CONFIG_VIDEO_SED13806_16BPP */
-#endif /* CONFIG_NEC_NL6448BC20 */
-
-
-#ifdef CONFIG_CONSOLE_EXTRA_INFO
-
-/*-----------------------------------------------------------------------------
- * video_get_info_str -- setup a board string: type, speed, etc.
- * line_number= location to place info string beside logo
- * info= buffer for info string
- *-----------------------------------------------------------------------------
- */
-void video_get_info_str (int line_number, char *info)
-{
-    if (line_number == 1) {
-       strcpy (info, " RPXClassic board");
-    }
-    else {
-       info [0] = '\0';
-    }
-
-}
-#endif
-
-/*-----------------------------------------------------------------------------
- * board_video_init -- init de l'EPSON, config du CS
- *-----------------------------------------------------------------------------
- */
-unsigned int board_video_init (void)
-{
-    volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
-    volatile memctl8xx_t *memctl = &immap->im_memctl;
-
-    /* Program ECCX registers                                                */
-    *(ECCX_CSR12) |= ECCX_860;
-    *(ECCX_CSR8) |= ECCX_BE | ECCX_CS2;
-    *(ECCX_CSR8) |= ECCX_ENEPSON;
-
-    memctl->memc_or2 = SED13806_OR;
-    memctl->memc_br2 = SED13806_REG_ADDR | SED13806_ACCES;
-
-    return (SED13806_REG_ADDR);
-}
-
-/*-----------------------------------------------------------------------------
- * board_validate_screen --
- *-----------------------------------------------------------------------------
- */
-void board_validate_screen (unsigned int base)
-{
-    /* Activate the panel bias power                                         */
-    *(volatile unsigned char *)(base + REG_GPIO_CTRL) = 0x80;
-}
-/*-----------------------------------------------------------------------------
- * board_get_regs --
- *-----------------------------------------------------------------------------
- */
-const S1D_REGS *board_get_regs (void)
-{
-    return (init_regs);
-}
-/*-----------------------------------------------------------------------------
- * board_get_width --
- *-----------------------------------------------------------------------------
- */
-int board_get_width (void)
-{
-    return (DISPLAY_WIDTH);
-}
-
-/*-----------------------------------------------------------------------------
- * board_get_height --
- *-----------------------------------------------------------------------------
- */
-int board_get_height (void)
-{
-    return (DISPLAY_HEIGHT);
-}
-
-#endif /* CONFIG_VIDEO_SED13806 */
diff --git a/board/RPXClassic/flash.c b/board/RPXClassic/flash.c
deleted file mode 100644 (file)
index 97ffa68..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * (C)  Copyright 2001
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT  p.aubert@staubli.com
- * U-Boot port on RPXClassic LF (CLLF_BW31) board
- *
- * RPXClassic uses Am29DL323B flash memory with 2 banks
- *
- *
- * (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_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;
-
-       /* 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_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_b0;
-
-       return (size_b0);
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       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 + 0x00010000;
-               info->start[3] = base + 0x00018000;
-               info->start[4] = base + 0x00020000;
-               info->start[5] = base + 0x00028000;
-               info->start[6] = base + 0x00030000;
-               info->start[7] = base + 0x00038000;
-               for (i = 8; i < info->sector_count; i++) {
-                       info->start[i] = base + ((i-7) * 0x00040000) ;
-               }
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-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;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AMDL323B:
-           printf ("AMDL323DB (16 Mbytes, bottom boot sect)\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;
-
-       /* Reset flash componeny                                             */
-       addr [0] = 0xf0f0f0f0;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0xAAA] = 0xAAAAAAAA ;
-       addr[0x555] = 0x55555555 ;
-       addr[0xAAA] = 0x90909090 ;
-
-       value = addr[0] ;
-
-       switch (value & 0x00FF00FF) {
-       case AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[2] ;               /* device ID            */
-
-       switch (value & 0x00FF00FF) {
-       case (AMD_ID_DL323B & 0x00FF00FF):
-           info->flash_id += FLASH_AMDL323B;
-           info->sector_count = 71;
-           info->size = 0x01000000;            /* 16 Mb                     */
-
-           break;
-       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 + 0x00008000;
-       info->start[2] = base + 0x00010000;
-       info->start[3] = base + 0x00018000;
-       info->start[4] = base + 0x00020000;
-       info->start[5] = base + 0x00028000;
-       info->start[6] = base + 0x00030000;
-       info->start[7] = base + 0x00038000;
-       for (i = 8; i < info->sector_count; i++) {
-           info->start[i] = base + ((i-7) * 0x00040000) ;
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < 23; 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[4] & 1 ;
-       }
-       /* Check for protected sectors in the 2nd bank                       */
-       addr[0x100AAA] = 0xAAAAAAAA ;
-       addr[0x100555] = 0x55555555 ;
-       addr[0x100AAA] = 0x90909090 ;
-
-       for (i = 23; 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[4] & 1 ;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (volatile unsigned long *)info->start[0];
-
-               *addr = 0xF0F0F0F0;     /* reset bank 1                      */
-               addr = (volatile unsigned long *)info->start[23];
-
-               *addr = 0xF0F0F0F0;     /* reset bank 2                      */
-
-       }
-
-       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) {
-                       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[0xAAA] = 0xAAAAAAAA;
-       addr[0x555] = 0x55555555;
-       addr[0xAAA] = 0x80808080;
-       addr[0xAAA] = 0xAAAAAAAA;
-       addr[0x555] = 0x55555555;
-
-       /* 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 */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (vu_long *)info->start[0];
-       addr[0] = 0xF0F0F0F0;   /* 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)
-{
-       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[0xAAA] = 0xAAAAAAAA;
-       addr[0x555] = 0x55555555;
-       addr[0xAAA] = 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);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/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/RPXClassic/u-boot.lds.debug b/board/RPXClassic/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 = .);
-}
diff --git a/board/RPXlite/Makefile b/board/RPXlite/Makefile
deleted file mode 100644 (file)
index c17cbac..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  = RPXlite.o flash.o
diff --git a/board/RPXlite/README b/board/RPXlite/README
deleted file mode 100644 (file)
index 3ca6711..0000000
+++ /dev/null
@@ -1,877 +0,0 @@
-# Porting U-Boot onto RPXlite board
-# Written by Yoo. Jonghoon
-# E-Mail : yooth@ipone.co.kr
-# IP ONE Inc.
-
-# Since 2001. 1. 29
-
-# Shell : bash
-# Cross-compile tools : Montavista Hardhat
-# Debugging tools : Windriver VisionProbe (PowerPC BDM)
-# ppcboot ver. : ppcboot-0.8.1
-
-###############################################################
-#      1. Hardware setting
-###############################################################
-
-1.1. Board, BDM settings
-       Install board, BDM, connect each other
-
-1.2. Save Register value
-       Boot with board-on monitor program and save the
-       register values with BDM.
-
-1.3. Configure flash programmer
-       Check flash memory area in the memory map.
-       0xFFC00000 - 0xFFFFFFFF
-
-       Boot monitor program is at
-       0xFFF00000
-
-       You can program on-board flash memory with VisionClick
-       flash programmer. Set the target flash device as:
-
-       29DL800B
-
-       (?) The flash memory device in the board *is* 29LV800B,
-               but I cannot program it with '29LV800B' option.
-               (in VisionClick flash programming tools)
-               I don't know why...
-
-1.4. Save boot monitor program *IMPORTANT*
-       Upload boot monitor program from board to file.
-       boot monitor program starts at 0xFFF00000
-
-1.5. Test flash memory programming
-       Try to erase boot program in the flash memory,
-       and re-write them.
-       *WARNING* YOU MUST SAVE BOOT PROGRAM TO FILE
-               BEFORE ERASING FLASH
-
-###############################################################
-#      2. U-Boot setting
-###############################################################
-
-2.1. Download U-Boot tarball at
-       ftp://ftp.denx.de
-       (The latest version is ppcboot-0.8.1.tar.bz2)
-
-       To extract the archive use the following syntax :
-       > bzip2 -cd ppcboot-0.8.1.tar.bz2 | tar xf -
-
-2.2. Add the following lines in '.profile'
-       export PATH=$PATH:/opt/hardhat/devkit/ppc/8xx/bin
-
-2.3. Make board specific config, for example:
-       > cd ppcboot-0.8.1
-       > make TQM860L_config
-
-       Now we can build ppcboot bin files.
-       After make all, you must see these files in your
-       ppcboot root directory.
-
-       ppcboot
-       ppcboot.bin
-       ppcboot.srec
-       ppcboot.map
-
-2.4. Make your own board directory into the
-       ppcboot-0.8.1/board
-       and make your board-specific files here.
-
-       For exmanple, tqm8xx files are composed of
-       .depend : Nothing
-       Makefile : To make config file
-       config.mk : Sets base address
-       flash.c : Flash memory control files
-       ppcboot.lds : linker(ld) script? (I don't know this yet)
-       tqm8xx.c : DRAM control and board check routines
-
-       And, add your board config lines in the
-       ppcboot-0.8.1/Makefile
-
-       Finally, add config_(your board).h file in the
-       ppcboot-0.8.1/include/
-
-       I've made board/rpxlite directory, and just copied
-       tqm8xx settings for now.
-
-       Rebuild ppcboot for rpxlite board:
-       > make rpxlite_config
-       > make
-
-###############################################################
-#      3. U-Boot porting
-###############################################################
-
-3.1. My RPXlite files are based on tqm8xx board files.
-       > cd board
-       > cp -r tqm8xx RPXLITE
-       > cd RPXLITE
-       > mv tqm8xx.c RPXLITE.c
-       > cd ../../include
-       > cp config_tqm8xx.h config_RPXLITE.h
-
-3.2. Modified files are:
-       board/RPXLITE/RPXLITE.c         /* DRAM-related routines */
-       board/RPXLITE/flash.c           /* flash-related routines */
-       board/RPXLITE/config.mk         /* set text base address */
-       arch/powerpc/cpu/mpc8xx/serial.c /* board specific register setting */
-       include/config_RPXLITE.h        /* board specific registers */
-
-       See 'reg_config.txt' for register values in detail.
-
-###############################################################
-#      4. Running Linux
-###############################################################
-
-
-###############################################################
-#      Misc Information
-###############################################################
-
-mem_config.txt:
-===============
-
-Flash memory device : AM29LV800BB (1Mx8Bit) x 4 device
-manufacturer id : 01     (AMD)
-device id       : 5B     (AM29LV800B)
-size            : 4Mbyte
-sector #        : 19
-
-Sector information :
-
-number   start addr.     size
-00       FFC0_0000       64
-01       FFC1_0000       32
-02       FFC1_8000       32
-03       FFC2_0000       128
-04       FFC4_0000       256
-05       FFC8_0000       256
-06       FFCC_0000       256
-07       FFD0_0000       256
-08       FFD4_0000       256
-09       FFD8_0000       256
-10       FFDC_0000       256
-11       FFE0_0000       256
-12       FFE4_0000       256
-13       FFE8_0000       256
-14       FFEC_0000       256
-15       FFF0_0000       256
-16       FFF4_0000       256
-17       FFF8_0000       256
-18       FFFC_0000       256
-
-
-reg_config.txt:
-===============
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     SIU (System Interface Unit) */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-
-
-/*### IMMR */
-/*### Internal Memory Map Register */
-/*### Chap. 11.4.1 */
-
-       ISB             = 0xFA20                /* Set the Immap base = 0xFA20 0000 */
-       PARTNUM = 0x21
-       MASKNUM = 0x00
-
-       => 0xFA20 2100
-
----------------------------------------------------------------------
-
-/*### SIUMCR */
-/*### SIU Module Configuration Register */
-/*### Chap. 11.4.2 */
-/*### Offset : 0x0000 0000 */
-
-       EARB    = 0
-       EARP    = 0
-       DSHW    = 0
-       DBGC    = 0
-       DBPC    = 0
-       FRC             = 0
-       DLK             = 0
-       OPAR    = 0
-       PNCS    = 0
-       DPC             = 0
-       MPRE    = 0
-       MLRC    = 10            /* ~KR/~RETRY/~IRQ4/SPKROUT functions as ~KR/~TRTRY */
-       AEME    = 0
-       SEME    = 0
-       BSC             = 0
-       GB5E    = 0
-       B2DD    = 0
-       B3DD    = 0
-
-       => 0x0000 0800
-
----------------------------------------------------------------------
-
-/*### SYPCR */
-/*### System Protection Control Register */
-/*### Chap. 11.4.3 */
-/*### Offset : 0x0000 0004 */
-
-       SWTC    = 0xFFFF        /* SW watchdog timer count = 0xFFFF */
-       BMT             = 0x06          /* BUS monitoring timing */
-       BME             = 1                     /* BUS monitor enable */
-       SWF             = 1
-       SWE             = 0                     /* SW watchdog disable */
-       SWRI    = 0
-       SWP             = 1
-
-       => 0xFFFF 0689
-
----------------------------------------------------------------------
-
-/*### TESR */
-/*### Transfer Error Status Register */
-/*### Chap. 11.4.4 */
-/*### Offset : 0x0000 0020 */
-
-       IEXT    = 0
-       ITMT    = 0
-       IPB             = 0000
-       DEXT    = 0
-       DTMT    = 0
-       DPB             = 0000
-
-       => 0x0000 0000
-
----------------------------------------------------------------------
-
-/*### SIPEND */
-/*### SIU Interrupt Pending Register */
-/*### Chap. 11.5.4.1 */
-/*### Offset : 0x0000 0010 */
-
-       IRQ0~IRQ7 = 0
-       LVL0~LVL7 = 0
-
-       => 0x0000 0000
-
----------------------------------------------------------------------
-
-/*### SIMASK */
-/*### SIU Interrupt Mask Register */
-/*### Chap. 11.5.4.2 */
-/*### Offset : 0x0000 0014 */
-
-       IRM0~IRM7 = 0           /* Mask all interrupts */
-       LVL0~LVL7 = 0
-
-       => 0x0000 0000
-
----------------------------------------------------------------------
-
-/*### SIEL */
-/*### SIU Interrupt Edge/Level Register */
-/*### Chap. 11.5.4.3 */
-/*### Offset : 0x0000 0018 */
-
-       ED0~ED7 = 0                     /* Low level triggered */
-       WMn0~WMn7 = 0           /* Not allowed to exit from low-power mode */
-
-       => 0x0000 0000
-
----------------------------------------------------------------------
-
-/*### SIVEC */
-/*### SIU Interrupt Vector Register */
-/*### Chap. 11.5.4.4 */
-/*### Offset : 0x0000 001C */
-
-       INTC = 3C               /* The lowest interrupt is pending..(?) */
-
-       => 0x3C00 0000
-
----------------------------------------------------------------------
-
-/*### SWSR */
-/*### Software Service Register */
-/*### Chap. 11.7.1 */
-/*### Offset : 0x0000 001E */
-
-       SEQ = 0
-
-       => 0x0000
-
----------------------------------------------------------------------
-
-/*### SDCR */
-/*### SDMA Configuration Register */
-/*### Chap. 20.2.1 */
-/*### Offset : 0x0000 0032 */
-
-       FRZ = 0
-       RAID = 01       /* Priority level 5 (BR5) (normal operation) */
-
-       => 0x0000 0001
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     UPMA (User Programmable Machine A) */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-
-/*### Chap. 16.6.4.1 */
-/*### Offset = 0x0000 017c */
-
-       T0  = CFFF CC24         /* Single Read */
-       T1  = 0FFF CC04
-       T2  = 0CAF CC04
-       T3  = 03AF CC08
-       T4  = 3FBF CC27         /* last */
-       T5  = FFFF CC25
-       T6  = FFFF CC25
-       T7  = FFFF CC25
-       T8  = CFFF CC24         /* Burst Read */
-       T9  = 0FFF CC04
-       T10 = 0CAF CC84
-       T11 = 03AF CC88
-       T12 = 3FBF CC27         /* last */
-       T13 = FFFF CC25
-       T14 = FFFF CC25
-       T15 = FFFF CC25
-       T16 = FFFF CC25
-       T17 = FFFF CC25
-       T18 = FFFF CC25
-       T19 = FFFF CC25
-       T20 = FFFF CC25
-       T21 = FFFF CC25
-       T22 = FFFF CC25
-       T23 = FFFF CC25
-       T24 = CFFF CC24         /* Single Write */
-       T25 = 0FFF CC04
-       T26 = 0CFF CC04
-       T27 = 03FF CC00
-       T28 = 3FFF CC27         /* last */
-       T29 = FFFF CC25
-       T30 = FFFF CC25
-       T31 = FFFF CC25
-       T32 = CFFF CC24         /* Burst Write */
-       T33 = 0FFF CC04
-       T34 = 0CFF CC80
-       T35 = 03FF CC8C
-       T36 = 0CFF CC00
-       T37 = 33FF CC27         /* last */
-       T38 = FFFF CC25
-       T39 = FFFF CC25
-       T40 = FFFF CC25
-       T41 = FFFF CC25
-       T42 = FFFF CC25
-       T43 = FFFF CC25
-       T44 = FFFF CC25
-       T45 = FFFF CC25
-       T46 = FFFF CC25
-       T47 = FFFF CC25
-       T48 = C0FF CC24         /* Refresh */
-       T49 = 03FF CC24
-       T50 = 0FFF CC24
-       T51 = 0FFF CC24
-       T52 = 3FFF CC27         /* last */
-       T53 = FFFF CC25
-       T54 = FFFF CC25
-       T55 = FFFF CC25
-       T56 = FFFF CC25
-       T57 = FFFF CC25
-       T58 = FFFF CC25
-       T59 = FFFF CC25
-       T60 = FFFF CC25         /* Exception */
-       T61 = FFFF CC25
-       T62 = FFFF CC25
-       T63 = FFFF CC25
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     UPMB */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
----------------------------------------------------------------------
-
-/*### Chap. 16.6.4.1 */
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     MEMC */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
----------------------------------------------------------------------
-
-/*### BR0 & OR0 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR0(0x0000 0100) & OR0(0x0000 0104) */
-/*### Flash memory */
-
-       BA   = 1111 1110 0000 0000 0    /* Base addr = 0xFE00 0000 */
-       AT   = 000
-       PS   = 00
-       PARE = 0
-       WP   = 0
-       MS   = 0                                /* GPCM */
-       V    = 1                                /* Valid */
-
-       => 0xFE00 0001
-
-       AM            = 1111 1110 0000 0000 0   /* 32MBytes */
-       ATM           = 000
-       CSNT/SAM      = 0
-       ACS/G5LA,G5LS = 00
-       BIH           = 1                       /* Burst inhibited */
-       SCY           = 0100            /* cycle length = 4 */
-       SETA          = 0
-       TRLX          = 0
-       EHTR          = 0
-
-       => 0xFE00 0140
-
-/*### BR1 & OR1 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR1(0x0000 0108) & OR1(0x0000 010C) */
-/*### SDRAM */
-
-       BA   = 0000 0000 0000 0000 0    /* Base addr = 0x0000 0000 */
-       AT   = 000
-       PS   = 00
-       PARE = 0
-       WP   = 0
-       MS   = 1                                /* UPMA */
-       V    = 1                                /* Valid */
-
-       => 0x0000 0081
-
-       AM            = 1111 1110 0000 0000     /* 32MBytes */
-       ATM           = 000
-       CSNT/SAM      = 1
-       ACS/G5LA,G5LS = 11
-       BIH           = 0
-       SCY           = 0000            /* cycle length = 0 */
-       SETA          = 0
-       TRLX          = 0
-       EHTR          = 0
-
-       => 0xFE00 0E00
-
-/*### BR2 & OR2 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR2(0x0000 0110) & OR2(0x0000 0114) */
-
-       BR2 & OR2 = 0x0000 0000         /* Not used */
-
-/*### BR3 & OR3 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR3(0x0000 0118) & OR3(0x0000 011C) */
-/*### BCSR */
-
-       BA   = 1111 1010 0100 0000 0    /* Base addr = 0xFA40 0000 */
-       AT   = 000
-       PS   = 00
-       PARE = 0
-       WP   = 0
-       MS   = 0                                /* GPCM */
-       V    = 1                                /* Valid */
-
-       => 0xFA40 0001
-
-       AM            = 1111 1111 0111 1111 1   /* (?) */
-       ATM           = 000
-       CSNT/SAM      = 1
-       ACS/G5LA,G5LS = 00
-       BIH           = 1                       /* Burst inhibited */
-       SCY           = 0001            /* cycle length = 1 */
-       SETA          = 0
-       TRLX          = 0
-
-       => 0xFF7F 8910
-
-/*### BR4 & OR4 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR4(0x0000 0120) & OR4(0x0000 0124) */
-/*### NVRAM & SRAM */
-
-       BA   = 1111 1010 0000 0000 0    /* Base addr = 0xFA00 0000 */
-       AT   = 000
-       PS   = 01
-       PARE = 0
-       WP   = 0
-       MS   = 0                                /* GPCM */
-       V    = 1                                /* Valid */
-
-       => 0xFA00 0401
-
-       AM            = 1111 1111 1111 1000 0   /* 8MByte */
-       ATM           = 000
-       CSNT/SAM      = 1
-       ACS/G5LA,G5LS = 00
-       BIH           = 1                       /* Burst inhibited */
-       SCY           = 0111            /* cycle length = 7 */
-       SETA          = 0
-       TRLX          = 0
-
-       => 0xFFF8 0970
-
-/*### BR5 & OR5 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR2(0x0000 0128) & OR2(0x0000 012C) */
-
-       BR5 & OR5 = 0x0000 0000         /* Not used */
-
-/*### BR6 & OR6 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR2(0x0000 0130) & OR2(0x0000 0134) */
-
-       BR6 & OR6 = 0x0000 0000         /* Not used */
-
-/*### BR7 & OR7 */
-/*### Base Registers & Option Registers */
-/*### Chap. 16.4.1 & 16.4.2 */
-/*### Offset : BR7(0x0000 0138) & OR7(0x0000 013C) */
-
-       BR7 & OR7 = 0x0000 0000         /* Not used */
-
-/*### MAR */
-/*### Memory Address Register */
-/*### Chap. 16.4.7 */
-/*### Offset : 0x0000 0164 */
-
-       MA = External memory address
-
-/*### MCR */
-/*### Memory Command Register */
-/*### Chap. 16.4.5 */
-/*### Offset : 0x0000 0168 */
-
-       OP   = xx                       /* Command op code */
-       UM   = 1                        /* Select UPMA */
-       MB   = 001                      /* Select CS1 */
-       MCLF = xxxx                     /* Loop times */
-       MAD  = xx xxxx          /* Memory array index */
-
-/*### MAMR */
-/*### Machine A Mode Register */
-/*### Chap. 16.4.4 */
-/*### Offset : 0x0000 0170 */
-
-       PTA = 0101 1000
-       PTAE = 1                        /* Periodic timer A enabled */
-       AMA = 010
-       DSA = 00
-       G0CLA = 000
-       GPLA4DIS = 1
-       RLFA = 0100
-       WLFA = 0011
-       TLFA = 0000
-
-       => 0x58A0 1430
-
-/*### MBMR */
-/*### Machine B Mode Register */
-/*### Chap. 16.4.4 */
-/*### Offset : 0x0000 0174 */
-
-       PTA = 0100 1110
-       PTAE = 0                        /* Periodic timer B disabled */
-       AMA = 000
-       DSA = 00
-       G0CLA = 000
-       GPLA4DIS = 1
-       RLFA = 0000
-       WLFA = 0000
-       TLFA = 0000
-
-       => 0x4E00 1000
-
-/*### MSTAT */
-/*### Memory Status Register */
-/*### Chap. 16.4.3 */
-/*### Offset : 0x0000 0178 */
-
-       PER0~PER7 = Parity error
-       WPER      = Write protection error
-
-       => 0x0000
-
-/*### MPTPR */
-/*### Memory Periodic Timer Prescaler Register */
-/*### Chap. 16.4.8 */
-/*### Offset : 0x0000 017A */
-
-       PTP = 0000 1000         /* Divide by 8 */
-
-       => 0x0800
-
-/*### MDR */
-/*### Memory Data Register */
-/*### Chap. 16.4.6 */
-/*### Offset : 0x0000 017C */
-
-       MD = Memory data contains the RAM array word
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     TIMERS */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
----------------------------------------------------------------------
-
-/*### TBREFx */
-/*### Timebase Reference Registers */
-/*### Chap. 11.9.2 */
-/*### Offset : TBREFF0(0x0000 0204)/TBREFF1(0x0000 0208) */
-/*### (Locked) */
-
-       TBREFF0 = 0xFFFF FFFF
-       TBREFF1 = 0xFFFF FFFF
-
----------------------------------------------------------------------
-
-/*### TBSCR */
-/*### Timebase Status and Control Registers */
-/*### Chap. 11.9.3 */
-/*### Offset : 0x0000 0200 */
-/*### (Locked) */
-
-       TBIRQ = 00000000
-       REF0  = 0
-       REF1  = 0
-       REFE0 = 0                       /* Reference interrupt disable */
-       REFE1 = 0
-       TBF   = 1
-       TBE   = 1                       /* Timebase enable */
-
-       => 0x0003
-
----------------------------------------------------------------------
-
-/*### RTCSC */
-/*### Real-Time Clock Status and Control Registers */
-/*### Chap. 11.10.1 */
-/*### Offset : 0x0000 0220 */
-/*### (Locked) */
-
-       RTCIRQ = 00000000
-       SEC = 1
-       ALR = 0
-       38K = 0                         /* PITRTCLK is driven by 32.768KHz */
-       SIE = 0
-       ALE = 0
-       RTF = 0
-       RTE = 1                         /* Real-Time clock enabled */
-
-       => 0x0081
-
----------------------------------------------------------------------
-
-/*### RTC */
-/*### Real-Time Clock Registers */
-/*### Chap. 11.10.2 */
-/*### Offset : 0x0000 0224 */
-/*### (Locked) */
-
-       RTC = Real time clock measured in second
-
----------------------------------------------------------------------
-
-/*### RTCAL */
-/*### Real-Time Clock Alarm Registers */
-/*### Chap. 11.10.3 */
-/*### Offset : 0x0000 022C */
-/*### (Locked) */
-
-       ALARM = 0xFFFF FFFF
-
----------------------------------------------------------------------
-
-/*### RTSEC */
-/*### Real-Time Clock Alarm Second Registers */
-/*### Chap. 11.10.4 */
-/*### Offset : 0x0000 0228 */
-/*### (Locked) */
-
-       COUNTER = Counter bits(fraction of a second)
-
----------------------------------------------------------------------
-
-/*### PISCR */
-/*### Periodic Interrupt Status and Control Register */
-/*### Chap. 11.11.1 */
-/*### Offset : 0x0000 0240 */
-/*### (Locked) */
-
-       PIRQ = 0
-       PS   = 0                /* Write 1 to clear */
-       PIE  = 0
-       PITF = 1
-       PTE  = 0                /* PIT disabled */
-
----------------------------------------------------------------------
-
-/*### PITC */
-/*### PIT Count Register */
-/*### Chap. 11.11.2 */
-/*### Offset : 0x0000 0244 */
-/*### (Locked) */
-
-       PITC = PIT count
-
----------------------------------------------------------------------
-
-/*### PITR */
-/*### PIT Register */
-/*### Chap. 11.11.3 */
-/*### Offset : 0x0000 0248 */
-/*### (Locked) */
-
-       PIT = PIT count         /* Read only */
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     CLOCKS */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
----------------------------------------------------------------------
-
-
----------------------------------------------------------------------
-
-/*### SCCR */
-/*### System Clock and Reset Control Register */
-/*### Chap. 15.6.1 */
-/*### Offset : 0x0000 0280 */
-/*### (Locked) */
-
-       COM    = 11             /* Clock output disabled */
-       TBS    = 1              /* Timebase frequency source is GCLK2 divided by 16 */
-       RTDIV  = 0              /* The clock is divided by 4 */
-       RTSEL  = 0              /* OSCM(Crystal oscillator) is selected */
-       CRQEN  = 0
-       PRQEN  = 0
-       EBDF   = 00             /* CLKOUT is GCLK2 divided by 1 */
-       DFSYNC = 00             /* Divided by 1 (normal operation) */
-       DFBRG  = 00             /* Divided by 1 (normal operation) */
-       DFNL   = 000
-       DFNH   = 000
-
-       => 0x6200 0000
-
----------------------------------------------------------------------
-
-/*### PLPRCR */
-/*### PLL, Low-Power, and Reset Control Register */
-/*### Chap. 15.6.2 */
-/*### Offset : 0x0000 0284 */
-/*### (Locked) */
-
-       MF    = 0x005   /* 48MHz (?) (  = 8MHz * (MF+1) ) */
-       SPLSS = 0
-       TEXPS = 0
-       TMIST = 0
-       CSRC  = 0               /* The general system clock is generated by the DFNH field */
-       LPM   = 00              /* Normal high/normal low mode */
-       CSR   = 0
-       LOLRE = 0
-       FIOPD = 0
-
-       => 0x0050 0000
-
----------------------------------------------------------------------
-
-/*### RSR */
-/*### Reset Status Register */
-/*### Chap. 12.2 */
-/*### Offset : 0x0000 0288 */
-/*### (Locked) */
-
-       EHRS  = External hard reset
-       ESRS  = External soft reset
-       LLRS  = Loss-of-lock reset
-       SWRS  = Software watchdog reset
-       CSRS  = Check stop reset
-       DBHRS = Debug port hard reset
-       DBSRS = Debug port soft reset
-       JTRS  = JTAG reset
-
-
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
-/*     DMA */
-/* */
-/*------------------------------------------------------------------- */
-/*------------------------------------------------------------------- */
----------------------------------------------------------------------
-
-/*### SDSR */
-/*### SDMA Status Register */
-/*### Chap. 20.2.2 */
-/*### Offset : 0x0000 0908 */
-
-       SBER = 0        /* SDMA channel bus error */
-       DSP2 = 0        /* DSP chain2 (Tx) interrupt */
-       DSP1 = 0        /* DSP chain1 (Rx) interrupt */
-
-       => 0x00
-
-/*### SDMR */
-/*### SDMA Mask Register */
-/*### Chap. 20.2.3 */
-/*### Offset : 0x0000 090C */
-
-       SBER = 0
-       DSP2 = 0
-       DSP1 = 0        /* All interrupts are masked */
-
-       => 0x00
-
-/*### SDAR */
-/*### SDMA Address Register */
-/*### Chap. 20.2.4 */
-/*### Offset : 0x0000 0904 */
-
-       AR = 0xxxxx xxxx        /* current system address */
-
-       => 0xFA20 23AC
-
-/*### IDSRx */
-/*### IDMA Status Register */
-/*### Chap. 20.3.3.2 */
-/*### Offset : IDSR1(0x0000 0910) & IDSR2(0x0000 0918) */
-
-       AD   = 0
-       DONE = 0
-       OB   = 0
-
-       => 0x00
-
-/*### IDMRx */
-/*### IDMA Mask Register */
-/*### Chap. 20.3.3.3 */
-/*### Offset : IDMR1(0x0000 0914) & IDMR2(0x0000 091C) */
-
-       AD   = 0
-       DONE = 0
-       OB   = 0
diff --git a/board/RPXlite/README.PlanetCore b/board/RPXlite/README.PlanetCore
deleted file mode 100644 (file)
index b73c5f5..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-After several heart-struck failure, I got one workable way to program
-each other in FLASH between PlanetCore and U-Boot.
-
-Hardware Platform : RPXlite DW(EP 823 H1 DW)
-
-1. From U-Boot to PlanetCore
-
-Utilities : PlanetCore Boot Loader - PCL200.mot
-
-[root@sam tftpboot]# ppc_8xx-objcopy -O ppcboot
-PCL200.mot pcl200.bin
-
-[Target Operation]
-u-boot>t 100000 pcl200.bin
-u-boot>go 0x100000
-## Starting application at 0x00100000 ...
-
-MPC8xx PlanetCore Flash Burner v2.00
-Copyright 2001 Embedded Planet.  All rights reserved.
-
-Construct Flash Device.....done.
-
-
-Program MPC8xx PlanetCore Boot Loader v2.00
-Built Sep 19, 2001 at 14:34:42
-Image located from FC000000 to FC01B5D1.
-(Skipping an image, only loading low boot image)
-
-Low boot board detected, skipping high boot image.
-Erasing, programming and verifying will start in 20
-seconds
-Press P to start immediately or ESC to cancel
-Press Space or Enter for more options.
-..............
-
-Erasing
-Programming
-FLASH programmed successfully!
-Press R to induce a hard reset
-
-MPC8xx PlanetCore Boot Loader v2.00
-Copyright 2001 Embedded Planet.  All rights reserved.
-DRAM available size = 64 MB
-wvCV
-DRAM OK
->
-
-2. From PlanetCore to U-Boot
-
-Utilities : PlanetCore FLASH Burner - PCB200.mot
-
-Use Flash Burner to finish the work:
-
-First, TFTP the U-Boot image file to RAM; For example,
-RPXlite_DW.bin to 0x400000
-Second, TFTP FLASH Burner to RAM; For example,
-0x100000
-Third, run the FLASH Burner and Program the U-Boot
-image into the correct location in FLASH.
-
-[Target Operation]
-MPC8xx PlanetCore Boot Loader v2.00
-Copyright 2001 Embedded Planet.  All rights reserved.
-DRAM available size = 64 MB
-wvCV
-DRAM OK
->t
-Load using tftp via Ethernet
-Enter server IP address <172.16.115.6> :
-Enter server filename   <PCL200.mot> : RPXlite_DW.bin
-Enter (B)inary or (S)record input mode <S> : B
-Enter address offset  : <00400000 hex> :
-
-Total bytes = 120096 in 232184 uSecs
-Loaded addresses 00400000 through 0041D51F.
-Start address = 00400000
->t
-Load using tftp via Ethernet
-Enter server IP address <172.16.115.6> :
-Enter server filename   <RPXlite_DW.bin> : PCB200.mot
-Enter (B)inary or (S)record input mode <B> : S
-Enter address offset  : <00000000 hex> :
-.512.1024..2048....4096.....
-Total bytes = 326280 in 2570249 uSecs
-Loaded addresses 00100000 through 0011BB51.
-Start address = 00100000
->go
-[Go 00100000]
-
-MPC8xx PlanetCore Flash Burner v2.00
-Copyright 2001 Embedded Planet.  All rights reserved.
-
-Construct Flash Device.....done.
-
-Bad start address
-Start = 0xFFFFFFFF, target = 0xFFFFFFFF, length =
-0xFFFFFFFF
-Forcing Menu Interface
-
-h[elp]     Show commands.
-c[ode]     Show information on code to be loaded.
-di[splay]  Display all flash sections.
-du[mp]     Dump memory. d ? for more info.
-e[rase]    Erase flash sections.
-f[ill]     Fill flash sections.
-im[age]    Toggle load high, low, or both flash
-images.
-in[fo]     Show flash information.
-ma[p]      Show memory map.
-mo[dify]   Modify memory.  m ? for more info.
-p[rogram]  Erase, program, and verify now.
-reset      Restart the loader.
-s[how]     Show flash sections to erase and program.
-t[est]     Test flash sections.
-q[uit]     Quit without programming.
-#program 400000 ff000000 1D51F
-doProgram( 400000 ff000000 1D51F )
-
-Start = 0x00400000, target = 0xFF000000, length =
-0x0001D51F
-Erasing sector 0xFF000000, length 0x008000.
-Erasing sector 0xFF008000, length 0x008000.
-Erasing sector 0xFF010000, length 0x008000.
-Erasing sector 0xFF018000, length 0x008000.
-Programming FF000000 through FF01D51E
-FLASH programmed successfully!
-Press R to induce a hard reset
-
-Forcing Hard Reset by MachineCheck and
-ResetOnCheckstop...
-
-U-Boot 1.1.2 (Aug 29 2004 - 15:11:27)
-
-CPU:   PPC823EZTnnB2 at 48 MHz: 16 kB I-Cache 8 kB
-D-Cache
-Board: RPXlite_DW
-DRAM:  64 MB
-FLASH: 16 MB
-*** Warning - bad CRC, using default environment
-
-In:    serial
-Out:   serial
-Err:   serial
-Net:   SCC ETHERNET
-u-boot>
-
--------------------------------------------------
-
-Well, sometimes network function of PlanetCore couldn't work when
-switching from U-Boot to PlanetCore. For example, you couldn't
-download a file from HOST PC via TFTP. Don't worry, just restart your
-HOST PC and everything would work as smooth as clockwork. I don't
-know the reason WHY:-)
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Merry Christmas and Happy New Year!
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-=====
-Best regards,
-
-Sam
diff --git a/board/RPXlite/RPXlite.c b/board/RPXlite/RPXlite.c
deleted file mode 100644 (file)
index 08575a4..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * DRAM related UPMA register values are modified.
- * See RPXLite engineering note : 50MHz/60ns - UPM RAM WORDS
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFCC25
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 00h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0X0CAFCC04, 0X03AFCC08,
-       0x3FBFCC27,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Read. (Offset 08h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0x0CAFCC84, 0x03AFCC88,
-       0x3FBFCC27,             /* last */
-       _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 18h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC04, 0x03FFCC00,
-       0x3FFFCC27,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Write. (Offset 20h in UPMA RAM)
-        */
-       0xCFFFCC24, 0x0FFFCC04, 0x0CFFCC80, 0x03FFCC8C,
-       0x0CFFCC00, 0x33FFCC27, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Refresh. (Offset 30h in UPMA RAM)
-        */
-       0xC0FFCC24, 0x03FFCC24, 0x0FFFCC24, 0x0FFFCC24,
-       0x3FFFCC27,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Exception. (Offset 3Ch in UPMA RAM)
-        */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       puts ("Board: RPXlite\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 size10;
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       /* Refresh clock prescalar */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-       memctl->memc_mar = 0x00000000;
-
-       /* Map controller banks 1 to the SDRAM bank */
-       memctl->memc_or1 = CONFIG_SYS_OR1_PRELIM;
-       memctl->memc_br1 = CONFIG_SYS_BR1_PRELIM;
-
-       memctl->memc_mamr = CONFIG_SYS_MAMR_10COL & (~(MAMR_PTAE));     /* no refresh yet */
-
-       udelay (200);
-
-       /* perform SDRAM initializsation sequence */
-
-       memctl->memc_mcr = 0x80002230;  /* SDRAM bank 0 - refresh twice */
-       udelay (1);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-
-       udelay (1000);
-
-       /* Check Bank 0 Memory Size
-        * try 10 column mode
-        */
-
-       size10 = dram_size (CONFIG_SYS_MAMR_10COL, SDRAM_BASE_PRELIM,
-                           SDRAM_MAX_SIZE);
-
-       return (size10);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * 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/RPXlite/flash.c b/board/RPXlite/flash.c
deleted file mode 100644 (file)
index 21b11d4..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- *
- * Some of flash control words are modified. (from 2x16bit device
- * to 4x8bit device)
- * RPXLite board I tested has only 4 AM29LV800BB devices. Other devices
- * are not tested.
- *
- * (?) Does an RPXLite board which
- *     does not use AM29LV800 flash memory exist ?
- *     I don't know...
- */
-
-#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_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; */
-       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_BASE_DEBUG, &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_MS_GPCM | 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]);
-
-#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_b0;
-
-       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) {
-               /* set sector offsets for bottom boot block type        */
-               info->start[0] = base + 0x00000000;
-               info->start[1] = base + 0x00010000;
-               info->start[2] = base + 0x00018000;
-               info->start[3] = base + 0x00020000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + ((i-3) * 0x00040000) ;
-               }
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00010000;
-               info->start[i--] = base + info->size - 0x00018000;
-               info->start[i--] = base + info->size - 0x00020000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00040000;
-               }
-       }
-
-}
-
-/*-----------------------------------------------------------------------
- */
-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 */
-       addr[0xAAA] = 0x00AA00AA ;
-       addr[0x555] = 0x00550055 ;
-       addr[0xAAA] = 0x00900090 ;
-
-       value = addr[0] ;
-
-       switch (value & 0x00FF00FF) {
-       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[2] ;               /* device ID            */
-
-       switch (value & 0x00FF00FF) {
-       case (AMD_ID_LV400T & 0x00FF00FF):
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (AMD_ID_LV400B & 0x00FF00FF):
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (AMD_ID_LV800T & 0x00FF00FF):
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case (AMD_ID_LV800B & 0x00FF00FF):
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00400000;        /*%%% Size doubled by yooth */
-               break;                          /* => 4 MB              */
-
-       case (AMD_ID_LV160T & 0x00FF00FF):
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB              */
-
-       case (AMD_ID_LV160B & 0x00FF00FF):
-               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:
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 67;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-
-       case AMD_ID_LV320B:
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 67;
-               info->size = 0x00800000;
-               break;                          /* => 8 MB              */
-#endif
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-       /*%%% sector start address modified */
-       /* 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 + 0x00010000;
-               info->start[2] = base + 0x00018000;
-               info->start[3] = base + 0x00020000;
-               for (i = 4; i < info->sector_count; i++) {
-                       info->start[i] = base + ((i-3) * 0x00040000) ;
-               }
-       } else {
-               /* set sector offsets for top boot block type           */
-               i = info->sector_count - 1;
-               info->start[i--] = base + info->size - 0x00010000;
-               info->start[i--] = base + info->size - 0x00018000;
-               info->start[i--] = base + info->size - 0x00020000;
-               for (; i >= 0; i--) {
-                       info->start[i] = base + i * 0x00040000;
-               }
-       }
-
-       /* 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[4] & 1 ;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (volatile unsigned long *)info->start[0];
-
-               *addr = 0xF0F0F0F0;     /* 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) {
-                       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[0xAAA] = 0xAAAAAAAA;
-       addr[0x555] = 0x55555555;
-       addr[0xAAA] = 0x80808080;
-       addr[0xAAA] = 0xAAAAAAAA;
-       addr[0x555] = 0x55555555;
-
-       /* 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 */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (vu_long *)info->start[0];
-       addr[0] = 0xF0F0F0F0;   /* 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)
-{
-       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[0xAAA] = 0xAAAAAAAA;
-       addr[0x555] = 0x55555555;
-       addr[0xAAA] = 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);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/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/RPXlite/u-boot.lds.debug b/board/RPXlite/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 = .);
-}
diff --git a/board/altera/common/AMDLV065D.c b/board/altera/common/AMDLV065D.c
deleted file mode 100644 (file)
index eaa6b98..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#if defined(CONFIG_NIOS)
-#include <nios.h>
-#else
-#include <asm/io.h>
-#endif
-
-#define SECTSZ         (64 * 1024)
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*----------------------------------------------------------------------*/
-unsigned long flash_init (void)
-{
-       int i;
-       unsigned long addr;
-       flash_info_t *fli = &flash_info[0];
-
-       fli->size = CONFIG_SYS_FLASH_SIZE;
-       fli->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       fli->flash_id = FLASH_MAN_AMD + FLASH_AMDLV065D;
-
-       addr = CONFIG_SYS_FLASH_BASE;
-       for (i = 0; i < fli->sector_count; ++i) {
-               fli->start[i] = addr;
-               addr += SECTSZ;
-               fli->protect[i] = 1;
-       }
-
-       return (CONFIG_SYS_FLASH_SIZE);
-}
-/*--------------------------------------------------------------------*/
-void flash_print_info (flash_info_t * info)
-{
-       int i, k;
-       int erased;
-       unsigned long *addr;
-
-       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) {
-
-               /* Check if whole sector is erased */
-               erased = 1;
-               addr = (unsigned long *) info->start[i];
-               for (k = 0; k < SECTSZ/sizeof(unsigned long); k++) {
-                       if ( readl(addr++) != (unsigned long)-1) {
-                               erased = 0;
-                               break;
-                       }
-               }
-
-               /* Print the info */
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s%s",
-                       info->start[i],
-                       erased ? " E" : "  ",
-                       info->protect[i] ? "RO " : "   ");
-       }
-       printf ("\n");
-}
-
-/*-------------------------------------------------------------------*/
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       unsigned char *addr = (unsigned char *) info->start[0];
-       unsigned char *addr2;
-       int prot, sect;
-       ulong start;
-
-       /* Some sanity checking */
-       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");
-       }
-
-       /* It's ok to erase multiple sectors provided we don't delay more
-        * than 50 usec between cmds ... at which point the erase time-out
-        * occurs. So don't go and put printf() calls in the loop ... it
-        * won't be very helpful ;-)
-        */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr2 = (unsigned char *) info->start[sect];
-                       writeb (0xaa, addr);
-                       writeb (0x55, addr);
-                       writeb (0x80, addr);
-                       writeb (0xaa, addr);
-                       writeb (0x55, addr);
-                       writeb (0x30, addr2);
-                       /* Now just wait for 0xff & provide some user
-                        * feedback while we wait.
-                        */
-                       start = get_timer (0);
-                       while ( readb (addr2) != 0xff) {
-                               udelay (1000 * 1000);
-                               putc ('.');
-                               if (get_timer (start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("timeout\n");
-                                       return 1;
-                               }
-                       }
-               }
-       }
-       printf ("\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)
-{
-
-       vu_char *cmd = (vu_char *) info->start[0];
-       vu_char *dst = (vu_char *) addr;
-       unsigned char b;
-       ulong start;
-
-       while (cnt) {
-               /* Check for sufficient erase */
-               b = *src;
-               if ((readb (dst) & b) != b) {
-                       printf ("%02x : %02x\n", readb (dst), b);
-                       return (2);
-               }
-
-               writeb (0xaa, cmd);
-               writeb (0x55, cmd);
-               writeb (0xa0, cmd);
-               writeb (b, dst);
-
-               /* Verify write */
-               start = get_timer (0);
-               while (readb (dst) != b) {
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               return 1;
-                       }
-               }
-               dst++;
-               src++;
-               cnt--;
-       }
-
-       return (0);
-}
diff --git a/board/altera/common/flash.c b/board/altera/common/flash.c
deleted file mode 100644 (file)
index 8f56a30..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * (C) Copyright 2000-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#include <nios.h>
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*--------------------------------------------------------------------*/
-void flash_print_info (flash_info_t * info)
-{
-       int i, k;
-       unsigned long size;
-       int erased;
-       volatile unsigned char *flash;
-
-       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) {
-
-               /* 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 char *) info->start[i];
-               for (k = 0; k < size; k++) {
-                       if (*flash++ != 0xff) {
-                               erased = 0;
-                               break;
-                       }
-               }
-
-               /* Print the info */
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s%s", info->start[i], erased ? " E" : "  ",
-                       info->protect[i] ? "RO " : "   ");
-       }
-       printf ("\n");
-}
-
-/*-------------------------------------------------------------------*/
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr = (CONFIG_SYS_FLASH_WORD_SIZE *) (info->start[0]);
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr2;
-       int prot, sect;
-       unsigned oldpri;
-       ulong start;
-
-       /* Some sanity checking */
-       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");
-       }
-
-#ifdef DEBUG
-       for (sect = s_first; sect <= s_last; sect++) {
-               printf("- Erase: Sect: %i @ 0x%08x\n", sect,  info->start[sect]);
-       }
-#endif
-
-       /* NOTE: disabling interrupts on Nios can be very bad since it
-        * also disables the LO_LIMIT exception. It's better here to
-        * set the interrupt priority to 3 & restore it when we're done.
-        */
-       oldpri = ipri (3);
-
-       /* It's ok to erase multiple sectors provided we don't delay more
-        * than 50 usec between cmds ... at which point the erase time-out
-        * occurs. So don't go and put printf() calls in the loop ... it
-        * won't be very helpful ;-)
-        */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *) (info->start[sect]);
-                       *addr = 0xaa;
-                       *addr = 0x55;
-                       *addr = 0x80;
-                       *addr = 0xaa;
-                       *addr = 0x55;
-                       *addr2 = 0x30;
-                       /* Now just wait for 0xff & provide some user
-                        * feedback while we wait. Here we have to grant
-                        * timer interrupts. Otherwise get_timer() can't
-                        * work right. */
-                       ipri(oldpri);
-                       start = get_timer (0);
-                       while (*addr2 != 0xff) {
-                               udelay (1000 * 1000);
-                               putc ('.');
-                               if (get_timer (start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("timeout\n");
-                                       return 1;
-                               }
-                       }
-                       oldpri = ipri (3); /* disallow non important irqs again */
-               }
-       }
-
-       printf ("\n");
-
-       /* Restore interrupt priority */
-       ipri (oldpri);
-
-       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)
-{
-
-       vu_char *cmd = (vu_char *) info->start[0];
-       vu_char *dst = (vu_char *) addr;
-       unsigned char b;
-       unsigned oldpri;
-       ulong start;
-
-       while (cnt) {
-               /* Check for sufficient erase */
-               b = *src;
-               if ((*dst & b) != b) {
-                       printf ("%02x : %02x\n", *dst, b);
-                       return (2);
-               }
-
-               /* Disable interrupts other than window underflow
-                * (interrupt priority 2)
-                */
-               oldpri = ipri (3);
-               *cmd = 0xaa;
-               *cmd = 0x55;
-               *cmd = 0xa0;
-               *dst = b;
-
-               /* Verify write */
-               start = get_timer (0);
-               while (*dst != b) {
-                       if (get_timer (start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                               ipri (oldpri);
-                               return 1;
-                       }
-               }
-               dst++;
-               src++;
-               cnt--;
-               ipri (oldpri);
-       }
-
-       return (0);
-}
index b18785a078699c91a5019456f270c62ca23d56db..4bb9e70823953f9a44b514d96deef296151ac604 100644 (file)
@@ -4,4 +4,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y  += $(BOARD).o
+obj-y  += bcm28155_ap.o
index 0e6e96e039d0711cb7a6251e9370b45e3a8f1864..b405caaa5cb7af2704d7a52a4c9dd730954d9d77 100644 (file)
@@ -6,5 +6,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y  += $(BOARD).o
+obj-y  += cm_t335.o
 obj-$(CONFIG_SPL_BUILD) += mux.o spl.o
index 0984dfe6ea495bbc076b05ce11c35db20d088019..c8ab716ceaa7fea0416277ecc39314b047230bcf 100644 (file)
@@ -18,6 +18,7 @@ SECTIONS
        .text :
        {
                *(.__image_copy_start)
+               *(.vectors)
                CPUDIR/start.o (.text*)
                board/compulab/cm_t335/built-in.o (.text*)
                *(.text*)
diff --git a/board/dave/PPChameleonEVB/fpgadata.c b/board/dave/PPChameleonEVB/fpgadata.c
deleted file mode 100644 (file)
index a1b230a..0000000
+++ /dev/null
@@ -1,2277 +0,0 @@
-0x1f, 0x8b, 0x08, 0x08, 0x80, 0xb0, 0xc0, 0x3e,
-0x00, 0x03, 0x61, 0x73, 0x68, 0x34, 0x30, 0x35,
-0x5f, 0x31, 0x5f, 0x30, 0x30, 0x2e, 0x62, 0x69,
-0x74, 0x00, 0x94, 0x9b, 0x7f, 0x70, 0x14, 0x65,
-0x9a, 0xc7, 0x9f, 0xe9, 0xee, 0x24, 0x9d, 0x99,
-0x4e, 0xa6, 0x0d, 0x84, 0x42, 0xe5, 0x47, 0xe7,
-0xc7, 0xba, 0xa3, 0x37, 0x0c, 0x63, 0x82, 0x9a,
-0x05, 0x32, 0x69, 0x03, 0x7f, 0xe4, 0x84, 0x2d,
-0xd9, 0xbd, 0xba, 0xaa, 0xdb, 0x5a, 0x6b, 0x1d,
-0x5d, 0xbc, 0xe2, 0xb6, 0xd0, 0xca, 0xea, 0x55,
-0x1d, 0x67, 0x6d, 0xdd, 0xbd, 0x24, 0x39, 0x08,
-0x07, 0x2b, 0x01, 0xb9, 0x23, 0xee, 0x51, 0x5c,
-0xf3, 0x63, 0xcb, 0xa8, 0xa9, 0xad, 0x11, 0x76,
-0x0d, 0x0a, 0xa5, 0x4d, 0x2e, 0x8b, 0x21, 0x44,
-0xc8, 0xb1, 0xd6, 0x6e, 0x44, 0x97, 0x1d, 0x34,
-0xab, 0x23, 0x72, 0x18, 0xd1, 0x92, 0x44, 0x20,
-0xb9, 0xf7, 0xed, 0xee, 0xf7, 0xed, 0x9f, 0x33,
-0xc9, 0x8e, 0x7f, 0xf8, 0xe4, 0x9d, 0xd7, 0xf6,
-0x7d, 0x9e, 0x79, 0xfb, 0x79, 0x3e, 0xfd, 0x7d,
-0xde, 0x86, 0xd2, 0xe8, 0xb8, 0xf9, 0x0f, 0x40,
-0xe8, 0x31, 0x90, 0x1f, 0x7b, 0x66, 0xc3, 0xb2,
-0xe4, 0x7d, 0x8f, 0xde, 0xfb, 0x68, 0x32, 0x99,
-0x78, 0xea, 0xc7, 0xeb, 0xe1, 0x71, 0x88, 0xd4,
-0x3d, 0x73, 0x5f, 0xf2, 0x89, 0x7f, 0xfc, 0xe9,
-0xbd, 0xcb, 0x96, 0xc1, 0x8f, 0xf1, 0x5f, 0xc9,
-0x64, 0xfd, 0xd2, 0xe4, 0x7d, 0x4b, 0xef, 0xad,
-0x87, 0xf5, 0x50, 0x7a, 0x6f, 0x72, 0xf9, 0xb2,
-0x65, 0xcb, 0x97, 0x35, 0xc0, 0x13, 0x10, 0xaa,
-0x3f, 0x3c, 0x8d, 0x3f, 0x2f, 0xbf, 0xf0, 0xb7,
-0x7f, 0x9f, 0x04, 0x14, 0x02, 0x80, 0x92, 0x64,
-0x28, 0x4d, 0xfe, 0x1d, 0x49, 0x86, 0x94, 0x10,
-0xa0, 0xa6, 0x25, 0x49, 0xd0, 0xc9, 0xdf, 0x60,
-0x7d, 0x5f, 0x9a, 0x04, 0xc5, 0xf9, 0x77, 0x28,
-0x09, 0x2a, 0xac, 0x03, 0x75, 0x07, 0x54, 0x24,
-0x61, 0xe6, 0x8f, 0x2a, 0x20, 0x6a, 0xfe, 0x85,
-0xf3, 0xa7, 0x87, 0x50, 0xde, 0x59, 0xf6, 0xa7,
-0xe9, 0x9a, 0x46, 0x4d, 0x6e, 0x16, 0xd7, 0x0f,
-0xa9, 0xc0, 0xae, 0x7f, 0x61, 0x56, 0xd7, 0xff,
-0x9a, 0x5e, 0xff, 0x2f, 0x9d, 0x0f, 0x15, 0xb3,
-0x98, 0x0e, 0x20, 0xb0, 0xf5, 0x58, 0xf3, 0x11,
-0xc4, 0x20, 0x0c, 0x1c, 0x02, 0x0d, 0x14, 0x6c,
-0x78, 0xaf, 0x3f, 0x40, 0xad, 0x93, 0x45, 0x53,
-0x70, 0x03, 0x35, 0x65, 0xa3, 0xa3, 0xfc, 0x3c,
-0x38, 0x87, 0x9a, 0x40, 0x9a, 0xe0, 0x53, 0x30,
-0x4d, 0x46, 0x8e, 0xf1, 0x57, 0x4d, 0x63, 0x82,
-0x1f, 0x87, 0x56, 0x6b, 0x7e, 0xff, 0xfc, 0x5f,
-0xc1, 0x71, 0x94, 0xc8, 0x46, 0xba, 0x9a, 0x13,
-0xdc, 0x76, 0x94, 0x80, 0xb2, 0x4c, 0x38, 0x61,
-0x8e, 0x1c, 0xe3, 0xae, 0x52, 0x23, 0x2b, 0xd0,
-0x28, 0x0e, 0x0a, 0x3b, 0xe0, 0x28, 0xc4, 0xf5,
-0x88, 0x1c, 0xae, 0x85, 0x76, 0x88, 0x83, 0x98,
-0xe4, 0x24, 0x73, 0x24, 0xc9, 0x0d, 0x53, 0xa3,
-0x1f, 0x2f, 0xd2, 0xfc, 0xe8, 0xd0, 0x0b, 0xc7,
-0x21, 0xa1, 0x47, 0xba, 0xfb, 0x13, 0xb0, 0x1d,
-0x12, 0x70, 0x7b, 0x92, 0x8b, 0x9b, 0x23, 0x19,
-0xee, 0x0a, 0x35, 0xc6, 0x05, 0xba, 0x9e, 0xef,
-0x55, 0x5e, 0x81, 0x1b, 0x90, 0xd2, 0xa3, 0xfb,
-0xf8, 0xa5, 0xca, 0x19, 0x58, 0x19, 0x93, 0x32,
-0x35, 0x71, 0x73, 0x24, 0xc3, 0x5f, 0xa1, 0xc6,
-0xc8, 0x6a, 0x3a, 0x5f, 0x0b, 0x9d, 0x80, 0x69,
-0x68, 0xd2, 0xa3, 0x23, 0xfc, 0x4d, 0x62, 0x24,
-0xa3, 0xe3, 0xa6, 0xa1, 0x3b, 0x8d, 0x1c, 0xa4,
-0xe9, 0x7a, 0xe4, 0x5e, 0x7a, 0xfd, 0x8d, 0xf0,
-0x19, 0xa4, 0xa0, 0xdc, 0x71, 0x59, 0x66, 0x8c,
-0x0b, 0x74, 0xfd, 0xa3, 0x45, 0x71, 0xd9, 0x5c,
-0xff, 0x3d, 0x12, 0xbc, 0x8f, 0xd7, 0xdf, 0xf9,
-0x1b, 0x7b, 0xd9, 0xcc, 0xb8, 0x86, 0x77, 0xbf,
-0x75, 0x7d, 0x61, 0xad, 0x19, 0x04, 0xc4, 0x7d,
-0xb7, 0xe3, 0x10, 0x17, 0xd7, 0xee, 0x74, 0x84,
-0x85, 0x19, 0x13, 0xf8, 0x5e, 0x31, 0x3f, 0xe3,
-0xf0, 0x23, 0xe8, 0x43, 0x4b, 0xb2, 0x91, 0x1f,
-0x84, 0x53, 0xf2, 0x5e, 0xb4, 0xf4, 0xc3, 0xd2,
-0x4d, 0xdc, 0x45, 0x73, 0x04, 0x1b, 0xc8, 0x32,
-0x46, 0xd9, 0xf5, 0x5b, 0xc4, 0xb5, 0xf0, 0x25,
-0x5a, 0xa9, 0x47, 0x77, 0xf1, 0x6b, 0x95, 0x8f,
-0x60, 0x25, 0x8a, 0x26, 0xf9, 0x61, 0xf8, 0x12,
-0xf0, 0x48, 0x03, 0x7f, 0x16, 0x61, 0x23, 0x8b,
-0x47, 0xce, 0x73, 0x74, 0x3f, 0xa8, 0x0b, 0x7b,
-0xcd, 0x20, 0x7c, 0x61, 0x44, 0xa3, 0x51, 0x2f,
-0x67, 0x61, 0xf9, 0x82, 0xbf, 0xa2, 0x5a, 0xf1,
-0x19, 0x29, 0xa6, 0xf1, 0x11, 0x8b, 0x7a, 0xa5,
-0x1b, 0x02, 0x0e, 0x02, 0x8a, 0xc4, 0xe1, 0x0c,
-0x8e, 0x8f, 0xe4, 0x89, 0xcf, 0xca, 0x2c, 0x1e,
-0x19, 0x62, 0xbf, 0xef, 0xe0, 0xed, 0xfb, 0xa0,
-0x0f, 0x96, 0xe8, 0x91, 0x75, 0xdc, 0x02, 0xd8,
-0x8a, 0x0d, 0xb1, 0x95, 0xfb, 0xc0, 0x1c, 0xa1,
-0x06, 0x1e, 0xb9, 0xc6, 0xe2, 0xa9, 0xc0, 0x7e,
-0xa1, 0x0f, 0x3d, 0x99, 0x8d, 0xfc, 0x1d, 0xb7,
-0xbc, 0x7a, 0x2b, 0x8a, 0x6b, 0x2e, 0x7f, 0x0d,
-0x43, 0xdc, 0xc4, 0xe9, 0xec, 0xfa, 0x1b, 0xe8,
-0x7e, 0xcb, 0xe0, 0x6d, 0xd6, 0x0e, 0x92, 0x7e,
-0xb7, 0x2f, 0x9e, 0x78, 0x07, 0x9e, 0x67, 0xd7,
-0xcf, 0x56, 0xe6, 0xe0, 0x1b, 0x48, 0xa1, 0x68,
-0x96, 0x5f, 0x21, 0x0c, 0x71, 0x4d, 0x07, 0xcb,
-0x34, 0xde, 0x1a, 0x31, 0x0c, 0x21, 0x85, 0xff,
-0x9f, 0xfc, 0x84, 0x40, 0xfd, 0x6d, 0x09, 0x69,
-0xa1, 0x09, 0xec, 0x66, 0x14, 0xf1, 0x97, 0x14,
-0x6c, 0xc8, 0xe5, 0x88, 0xcf, 0x82, 0x35, 0xc2,
-0x8c, 0xf3, 0x40, 0xf7, 0xbf, 0x28, 0x1f, 0x86,
-0x49, 0x48, 0xa9, 0xd1, 0x2e, 0xfe, 0x09, 0x38,
-0x0d, 0x2b, 0x55, 0xa9, 0x8b, 0xaf, 0xa5, 0x23,
-0x63, 0xd4, 0xe8, 0x67, 0xf7, 0x0b, 0x12, 0xd6,
-0xc3, 0xeb, 0x90, 0x50, 0x23, 0xbb, 0xda, 0x8a,
-0xdb, 0x4a, 0x21, 0xb1, 0x21, 0xb6, 0x8f, 0xab,
-0x35, 0x47, 0xba, 0xb8, 0x31, 0x6a, 0x64, 0x41,
-0xb6, 0xe6, 0x37, 0x14, 0xb1, 0x6f, 0xd7, 0xc3,
-0x36, 0x48, 0xb4, 0x88, 0xf3, 0x9c, 0xf3, 0x6f,
-0x37, 0x8d, 0x53, 0x6c, 0x3f, 0xc4, 0xe6, 0x0a,
-0xf0, 0x2a, 0xc4, 0xd5, 0x88, 0xcc, 0x09, 0xe2,
-0x66, 0x88, 0x3f, 0x34, 0x1f, 0x1b, 0x74, 0x64,
-0x80, 0x1a, 0xfd, 0x21, 0xba, 0x1f, 0x36, 0x95,
-0xa5, 0xa9, 0x53, 0x69, 0x18, 0x84, 0x94, 0x28,
-0xa1, 0x88, 0xe2, 0xf3, 0xf7, 0x22, 0x4f, 0xf7,
-0x67, 0x77, 0xa5, 0xe9, 0xd4, 0xc3, 0x4f, 0xb7,
-0x7f, 0x80, 0x8d, 0xa6, 0x87, 0xa2, 0xbb, 0xdb,
-0xc7, 0x7c, 0xfe, 0x7e, 0x5c, 0x4c, 0xef, 0xc7,
-0xf9, 0x45, 0xd6, 0xe0, 0x3a, 0x7e, 0x0f, 0x8e,
-0x4f, 0x53, 0x4b, 0xf9, 0x3a, 0xde, 0x35, 0xbf,
-0x89, 0x18, 0xa7, 0x58, 0xfe, 0x69, 0x98, 0x9f,
-0x85, 0x63, 0xf8, 0xb6, 0x8a, 0xb4, 0xb5, 0x29,
-0x30, 0x2a, 0x24, 0xe6, 0x85, 0xdb, 0x38, 0x6b,
-0x04, 0xd9, 0xc6, 0x59, 0x16, 0xcf, 0x16, 0xe8,
-0x30, 0x9d, 0xda, 0x1d, 0xee, 0x80, 0xcd, 0x5c,
-0x62, 0x30, 0x2c, 0xb7, 0x61, 0x37, 0x05, 0xe2,
-0x66, 0x05, 0xf3, 0xf7, 0x7c, 0x88, 0x5e, 0xbf,
-0x5b, 0x38, 0x6c, 0x46, 0x6f, 0x37, 0x0e, 0xe3,
-0x0b, 0xd8, 0x08, 0x3b, 0xc2, 0xce, 0x8c, 0x8f,
-0xd9, 0x7e, 0xd0, 0x0c, 0x7f, 0x13, 0x6a, 0x74,
-0x01, 0xdf, 0x81, 0xd7, 0x9f, 0x4a, 0x97, 0x77,
-0xf1, 0x7e, 0x7f, 0x73, 0x2c, 0x5f, 0x0d, 0x86,
-0xac, 0xfd, 0xd0, 0xcd, 0x8f, 0x55, 0x63, 0x63,
-0xc3, 0xd2, 0xa0, 0xf9, 0xdf, 0xb0, 0xfc, 0x23,
-0xca, 0x1a, 0x09, 0x3b, 0x44, 0xb7, 0xf0, 0x9a,
-0x38, 0x28, 0x18, 0xd1, 0xd6, 0x7c, 0xf1, 0x1f,
-0x62, 0xfb, 0x39, 0x56, 0x14, 0x83, 0x37, 0x20,
-0x81, 0x22, 0x63, 0xdc, 0xeb, 0xf0, 0x32, 0x2c,
-0xe9, 0xe2, 0x3f, 0xe4, 0x62, 0x22, 0x19, 0xd9,
-0xae, 0x71, 0x39, 0xf3, 0x2b, 0x8d, 0x1b, 0xb2,
-0xf7, 0x83, 0xb0, 0x56, 0xa8, 0x11, 0xf0, 0xdd,
-0x51, 0xcb, 0x89, 0xd0, 0x2e, 0xc4, 0xcf, 0xe3,
-0xdb, 0x64, 0x87, 0xeb, 0x7e, 0x39, 0x89, 0x8d,
-0x21, 0xb6, 0xdf, 0x90, 0xfc, 0x88, 0x79, 0xb7,
-0x66, 0xe7, 0x65, 0x62, 0x2f, 0xc2, 0x12, 0x15,
-0xdf, 0x86, 0x0b, 0xd8, 0xfd, 0x2b, 0x3f, 0xc0,
-0x19, 0x46, 0x8e, 0xcd, 0xef, 0xec, 0xfc, 0x11,
-0x7c, 0x82, 0x1a, 0xb3, 0xd1, 0x0d, 0xdf, 0xae,
-0x80, 0xb7, 0xdb, 0x1a, 0xb5, 0xe8, 0x06, 0x7e,
-0x3f, 0x5c, 0x47, 0x0b, 0xb3, 0xd1, 0x4d, 0xfc,
-0x45, 0xf8, 0xa7, 0x8e, 0x46, 0x62, 0x5c, 0xae,
-0xa6, 0xf3, 0xc5, 0x4a, 0x9c, 0x6f, 0x43, 0x38,
-0x7b, 0x68, 0xd8, 0xbb, 0x1b, 0xf0, 0x2f, 0x10,
-0xfd, 0xb5, 0x37, 0xdf, 0x2e, 0xce, 0xf0, 0xfd,
-0x6d, 0x34, 0x3e, 0x20, 0xbc, 0xa9, 0x4e, 0xa3,
-0xd4, 0x58, 0x34, 0x17, 0x99, 0x07, 0x67, 0x3a,
-0x9a, 0xc6, 0xe2, 0x37, 0xad, 0xfa, 0xb5, 0x73,
-0x82, 0x9f, 0x82, 0xe9, 0xb6, 0xa6, 0x4b, 0xb8,
-0x7e, 0xe9, 0x1a, 0x8d, 0xff, 0xcb, 0xf3, 0xf7,
-0xc1, 0x75, 0x58, 0x92, 0x8b, 0xa4, 0x39, 0xb9,
-0x65, 0x6b, 0xe6, 0xdb, 0xab, 0xc5, 0x71, 0x7b,
-0xfd, 0x17, 0xd5, 0xbe, 0x8a, 0x38, 0x31, 0x2e,
-0xb3, 0xdf, 0x17, 0x60, 0x5f, 0x08, 0x7f, 0x3b,
-0x78, 0x67, 0x2b, 0xd7, 0x4a, 0xf2, 0xd5, 0x40,
-0x77, 0xda, 0xe1, 0xaf, 0x68, 0x19, 0x76, 0xfe,
-0x51, 0x84, 0x1d, 0xa5, 0x35, 0x46, 0xf4, 0xda,
-0x1e, 0x44, 0x3c, 0xd4, 0x7e, 0x3f, 0x46, 0x12,
-0xd1, 0xd1, 0xd0, 0x46, 0x23, 0x9e, 0x45, 0x56,
-0x60, 0x07, 0xd9, 0xfe, 0xec, 0xa9, 0x24, 0x45,
-0x01, 0x7b, 0x27, 0xf2, 0x0f, 0x92, 0xfc, 0x99,
-0x5e, 0x90, 0xf9, 0x2b, 0x7f, 0xfd, 0xb2, 0xd7,
-0x83, 0x42, 0xbd, 0x82, 0x31, 0x78, 0x60, 0xce,
-0x21, 0x6c, 0x2c, 0x4a, 0x47, 0x83, 0xea, 0x51,
-0x96, 0xdd, 0x2f, 0x55, 0xb2, 0x55, 0xef, 0xb2,
-0x7c, 0x12, 0xce, 0xe1, 0x7c, 0x2e, 0x65, 0xf9,
-0x95, 0xac, 0xde, 0x85, 0x2c, 0x43, 0x5f, 0x4d,
-0xd7, 0x7f, 0x40, 0xd8, 0x68, 0x16, 0x29, 0x8d,
-0xab, 0x41, 0xaf, 0x40, 0xe2, 0xf1, 0x58, 0x26,
-0xec, 0xaf, 0xbf, 0xd9, 0x07, 0xd9, 0x7e, 0x28,
-0x8a, 0xc3, 0x2b, 0x64, 0xb0, 0x93, 0xab, 0x26,
-0xf5, 0x3a, 0x1b, 0xeb, 0x36, 0xea, 0xf5, 0x3d,
-0xee, 0xf9, 0x6c, 0xbf, 0x89, 0x73, 0x25, 0x78,
-0x5e, 0x8e, 0x0f, 0x46, 0xb4, 0x62, 0x80, 0x43,
-0x62, 0x5c, 0x15, 0x65, 0x9b, 0x07, 0xde, 0xd1,
-0x28, 0x0f, 0xb0, 0xfc, 0x03, 0x65, 0x1b, 0x43,
-0xb8, 0xec, 0x0e, 0x62, 0xa7, 0x14, 0x38, 0xa3,
-0xa4, 0xc8, 0xfa, 0x49, 0x7c, 0x96, 0xeb, 0xe7,
-0x7e, 0xc3, 0xff, 0x1f, 0xc2, 0xa1, 0x7b, 0x17,
-0x7f, 0xa5, 0xb3, 0xfc, 0x73, 0xb0, 0xf2, 0xa6,
-0x3c, 0xad, 0x34, 0x0d, 0x44, 0x5a, 0x31, 0xb4,
-0x4c, 0x93, 0xec, 0xc1, 0xea, 0xd7, 0x35, 0x1c,
-0x1f, 0x5a, 0xdf, 0x59, 0xfe, 0xd1, 0xcb, 0x18,
-0xe4, 0x5c, 0x80, 0x3f, 0x75, 0x19, 0x06, 0xde,
-0x36, 0x28, 0x75, 0xe9, 0x39, 0xcb, 0x70, 0xf3,
-0x0f, 0x02, 0x06, 0x39, 0x39, 0x91, 0xf8, 0xeb,
-0xc4, 0x9e, 0x00, 0xfe, 0x11, 0x8b, 0x58, 0xf5,
-0xc9, 0xc1, 0xf3, 0x8a, 0xbb, 0xac, 0xb3, 0xfb,
-0xab, 0x9f, 0xe5, 0x1f, 0xfd, 0xb6, 0x5e, 0x1a,
-0xb4, 0xcb, 0x24, 0x9e, 0xae, 0x30, 0x3a, 0xf8,
-0x87, 0xed, 0xcf, 0xb9, 0xbd, 0xf4, 0x47, 0x1f,
-0xc2, 0xbc, 0xe1, 0xd8, 0x06, 0x4e, 0x50, 0xd1,
-0x59, 0x7e, 0xb8, 0x04, 0x27, 0x68, 0x10, 0x26,
-0xb8, 0x69, 0x58, 0xaa, 0x07, 0xf2, 0xcf, 0x84,
-0x4a, 0xe7, 0x33, 0xfe, 0xc9, 0xe0, 0x6a, 0xf8,
-0xbe, 0x67, 0x9b, 0x05, 0xf0, 0xcf, 0xa0, 0xc0,
-0x76, 0x4b, 0x4e, 0x7c, 0xdf, 0xbf, 0x7e, 0xce,
-0xe2, 0x1f, 0xfa, 0xf9, 0xb0, 0x68, 0x2d, 0x8d,
-0x86, 0x0e, 0xcf, 0x43, 0x40, 0x7c, 0xdc, 0xfc,
-0xf3, 0x58, 0x68, 0x11, 0xad, 0xfe, 0xdf, 0xc0,
-0x5e, 0xc3, 0x28, 0x36, 0x30, 0x20, 0x17, 0x71,
-0x80, 0x81, 0x83, 0x7f, 0xa0, 0x1c, 0xbe, 0xcc,
-0x18, 0x90, 0x73, 0x12, 0x7e, 0x47, 0x40, 0xc8,
-0xe2, 0x9f, 0x1c, 0x35, 0x3c, 0xfc, 0x53, 0x69,
-0xc7, 0x07, 0xa6, 0x65, 0x16, 0x96, 0xd4, 0x00,
-0x21, 0x22, 0xcc, 0x3f, 0x29, 0x02, 0x42, 0x36,
-0xff, 0xf4, 0x54, 0x9e, 0xc5, 0xb7, 0xad, 0x01,
-0x39, 0xd9, 0xfc, 0xf1, 0xb9, 0x6c, 0xe7, 0xff,
-0xdb, 0xf6, 0xc1, 0xdb, 0x26, 0xe4, 0x8c, 0x1a,
-0xfc, 0x13, 0xf1, 0xf1, 0x4f, 0x84, 0xf0, 0x0f,
-0xbd, 0xbe, 0x0e, 0xfb, 0x61, 0xab, 0x09, 0x39,
-0xd7, 0x2c, 0x7f, 0xbd, 0xfc, 0x83, 0x8d, 0x71,
-0x96, 0x7f, 0x5a, 0x30, 0x4f, 0xb6, 0x9b, 0x90,
-0x33, 0x8c, 0xb6, 0xdb, 0x61, 0x94, 0x5c, 0xf1,
-0xb4, 0xf9, 0x24, 0x57, 0xd4, 0x53, 0x31, 0x04,
-0x06, 0xe4, 0xbc, 0x07, 0x17, 0x38, 0x8a, 0x3d,
-0xe0, 0x36, 0xec, 0x7a, 0xd4, 0xa2, 0x66, 0x21,
-0xe7, 0xa9, 0x3e, 0xd4, 0x28, 0x09, 0xe2, 0x1f,
-0x30, 0x8b, 0x5a, 0x84, 0x54, 0xb7, 0xd3, 0x70,
-0xbf, 0xb3, 0xcc, 0xd5, 0x5b, 0xa8, 0xd0, 0x35,
-0xa7, 0x1f, 0x7c, 0xfc, 0x43, 0xaa, 0xed, 0x4b,
-0x50, 0xed, 0x2c, 0xbb, 0x15, 0x36, 0xff, 0xc8,
-0x34, 0xff, 0xcc, 0x9f, 0x6b, 0xd3, 0x0e, 0xb7,
-0x0d, 0xee, 0x72, 0x95, 0x69, 0x66, 0x9c, 0x12,
-0xe8, 0xef, 0x2b, 0x0a, 0x8c, 0x76, 0xc6, 0x60,
-0x33, 0xfe, 0xbd, 0x9d, 0xd8, 0x63, 0xf3, 0x0f,
-0xdb, 0x9f, 0xc7, 0x44, 0xca, 0x3f, 0xf5, 0x59,
-0x5c, 0x88, 0xef, 0x77, 0x3b, 0x2e, 0x5a, 0xc6,
-0x59, 0x8e, 0xae, 0xa7, 0xbb, 0x8c, 0xf1, 0xde,
-0xbb, 0xda, 0x64, 0xcc, 0x5d, 0xd6, 0x03, 0xf8,
-0xa7, 0xbb, 0xe8, 0x2b, 0x0a, 0x39, 0x7f, 0xe6,
-0x4e, 0xc3, 0x11, 0xf7, 0x7c, 0x71, 0x92, 0x4b,
-0x79, 0xf8, 0x07, 0x1c, 0xb4, 0xd3, 0x09, 0x07,
-0x61, 0x0d, 0x2a, 0xc8, 0x3f, 0x62, 0xe5, 0x80,
-0xf0, 0x2a, 0x47, 0xfd, 0x8d, 0x29, 0x5e, 0x7f,
-0x43, 0x16, 0xef, 0x31, 0x1e, 0xab, 0x3c, 0xcc,
-0xa2, 0xa7, 0x6c, 0x73, 0xc6, 0xbf, 0xd4, 0x15,
-0x4f, 0xba, 0x1f, 0x0e, 0x56, 0x92, 0x41, 0xb2,
-0xc8, 0x92, 0xdf, 0xc2, 0x49, 0xa8, 0x0b, 0xf6,
-0x37, 0xd7, 0x41, 0xaf, 0xdf, 0x03, 0x34, 0x3e,
-0x35, 0xfe, 0x69, 0xcc, 0xb8, 0x8c, 0xe8, 0xfd,
-0x1b, 0x93, 0x4d, 0xda, 0x91, 0x30, 0x6f, 0xc3,
-0x44, 0x28, 0x05, 0x3b, 0x83, 0x78, 0x7b, 0xa8,
-0x83, 0xee, 0x7f, 0x45, 0x30, 0xf9, 0x27, 0x46,
-0x68, 0xe7, 0x4d, 0x93, 0x76, 0x30, 0xf6, 0x70,
-0xa6, 0x31, 0xdf, 0xe2, 0x9f, 0x41, 0x9b, 0x7f,
-0xac, 0xfc, 0x23, 0x06, 0xa5, 0x1d, 0x66, 0x0c,
-0xb1, 0xfc, 0x53, 0x15, 0x32, 0xaa, 0x7f, 0x56,
-0x6c, 0xad, 0xc0, 0x77, 0x6b, 0x32, 0xcf, 0xfd,
-0x3b, 0xa8, 0xb2, 0xeb, 0xc3, 0x22, 0x4c, 0x3b,
-0x8d, 0x59, 0x89, 0xd0, 0xce, 0x75, 0xad, 0xd1,
-0xc4, 0x1e, 0x32, 0xe2, 0x34, 0x86, 0x58, 0xfe,
-0x31, 0xf8, 0x87, 0x3c, 0x9d, 0xe1, 0xec, 0xa1,
-0x98, 0xd9, 0x23, 0xe4, 0xcf, 0x27, 0xfd, 0x2c,
-0xff, 0xa8, 0x95, 0x53, 0xaa, 0x55, 0xbf, 0xa6,
-0xd2, 0xe7, 0xd0, 0x0a, 0x5a, 0xbf, 0xf0, 0xc8,
-0xeb, 0xf8, 0xf9, 0xfd, 0x86, 0xf9, 0xd5, 0x08,
-0xdb, 0x3f, 0x3d, 0x38, 0xff, 0x18, 0x4e, 0xb5,
-0x72, 0x37, 0xe1, 0x77, 0x98, 0x67, 0xec, 0x65,
-0xb3, 0x7c, 0xe2, 0xe4, 0x9f, 0x17, 0x60, 0x1f,
-0x85, 0x9c, 0x0f, 0x42, 0xee, 0x7c, 0xf5, 0xb4,
-0xc1, 0x3f, 0x4f, 0x9e, 0xc4, 0x23, 0x59, 0x96,
-0x7f, 0xd2, 0x02, 0x0b, 0xda, 0x39, 0x35, 0x6f,
-0x3e, 0x1f, 0x65, 0xfb, 0xb3, 0xa1, 0xa8, 0x57,
-0xb4, 0x9c, 0xba, 0xa5, 0x9e, 0x83, 0x67, 0x83,
-0xf3, 0xe7, 0x90, 0x60, 0xd7, 0x5f, 0x3a, 0xb8,
-0xca, 0x8f, 0x85, 0x0e, 0xfe, 0xa1, 0xeb, 0xd9,
-0x0c, 0x8e, 0xea, 0xf6, 0x27, 0x77, 0x99, 0xab,
-0x71, 0xf0, 0x0f, 0x5d, 0xcf, 0x49, 0xca, 0x3f,
-0x99, 0xea, 0x2b, 0x26, 0xd8, 0x04, 0xd6, 0x5f,
-0x9b, 0x7f, 0x2a, 0xe9, 0x7c, 0x8c, 0xcd, 0x79,
-0xeb, 0xb5, 0x83, 0x7f, 0x84, 0x32, 0x38, 0x2a,
-0x5b, 0xd1, 0x38, 0x84, 0x0d, 0xfa, 0xbc, 0x3f,
-0x82, 0x89, 0x71, 0x58, 0x39, 0xaa, 0xc4, 0x47,
-0xd7, 0x38, 0xf9, 0x47, 0x2f, 0x7d, 0x92, 0xc4,
-0x67, 0x00, 0x3b, 0x75, 0xc2, 0x55, 0x5f, 0x46,
-0x0c, 0x03, 0xf3, 0xcf, 0x05, 0x17, 0xff, 0x68,
-0x0b, 0xb1, 0x77, 0x4a, 0xd3, 0xa0, 0xe9, 0xa6,
-0xd2, 0xe4, 0xad, 0xef, 0x6a, 0xca, 0xc3, 0x3f,
-0x45, 0x53, 0x94, 0x7f, 0xbe, 0x16, 0xc7, 0xd1,
-0x7d, 0x9a, 0x34, 0x42, 0xf5, 0x1f, 0x22, 0x04,
-0x9d, 0xf3, 0xea, 0x3f, 0xba, 0x6c, 0x41, 0x4e,
-0x92, 0xfb, 0x18, 0x3a, 0x95, 0x7b, 0x50, 0x67,
-0xb6, 0x22, 0x4e, 0xb1, 0xe7, 0x57, 0xb0, 0xdd,
-0xa7, 0xff, 0xd8, 0xfc, 0x33, 0x86, 0x93, 0xe9,
-0x5d, 0xa8, 0x34, 0x79, 0x87, 0xe4, 0x7c, 0x42,
-0xf7, 0xea, 0x3f, 0x95, 0x8c, 0x7f, 0x3e, 0x81,
-0x4e, 0x54, 0xad, 0x95, 0xf6, 0xd8, 0xfc, 0xd9,
-0x4b, 0x23, 0x6c, 0xeb, 0x3f, 0x3a, 0xd5, 0x7f,
-0x32, 0x7f, 0x73, 0x0e, 0xc6, 0xf5, 0xfb, 0xb3,
-0x65, 0xdd, 0xed, 0x8c, 0x9f, 0x0d, 0x45, 0x22,
-0x8f, 0xfe, 0x33, 0xde, 0x7c, 0x13, 0x6f, 0x8d,
-0x26, 0x3d, 0xe1, 0x8c, 0x0f, 0x97, 0x5f, 0xff,
-0xc9, 0xe0, 0xc7, 0xf6, 0x41, 0x75, 0xb9, 0x26,
-0xa5, 0x22, 0x7e, 0x3e, 0x77, 0xf0, 0x4f, 0xc8,
-0x5c, 0x6d, 0xf9, 0x09, 0xfc, 0xfc, 0xd8, 0xa9,
-0x28, 0x7b, 0x36, 0x1c, 0xb3, 0xf5, 0xab, 0x61,
-0xbf, 0xfe, 0x93, 0xa5, 0xfc, 0xf3, 0x00, 0x7e,
-0x0c, 0x47, 0x10, 0x43, 0xe2, 0x32, 0x8e, 0x29,
-0x18, 0x01, 0xfc, 0x93, 0xc5, 0xfc, 0xf3, 0x00,
-0xbe, 0x49, 0xc3, 0x9b, 0x9e, 0x7e, 0x40, 0xed,
-0x38, 0x50, 0x73, 0xb8, 0x65, 0x82, 0xdb, 0x6f,
-0xdc, 0xb6, 0x7c, 0x20, 0xff, 0x3c, 0x24, 0x4a,
-0xa6, 0xda, 0x93, 0xe4, 0x05, 0xd0, 0xb5, 0x06,
-0x41, 0xaa, 0xe3, 0x77, 0xd0, 0x91, 0xb3, 0xd4,
-0x70, 0xf0, 0x4f, 0xd9, 0x09, 0xec, 0x94, 0x11,
-0x84, 0x77, 0xe1, 0xa6, 0xdc, 0x24, 0x44, 0x5b,
-0xf9, 0x9f, 0x99, 0xb2, 0x4f, 0xc6, 0x0e, 0x94,
-0xcd, 0x3f, 0x2f, 0x17, 0x59, 0x41, 0x38, 0x16,
-0x11, 0xa0, 0x1a, 0x8e, 0xe8, 0xf1, 0xd7, 0x22,
-0x09, 0x1a, 0xf6, 0xb3, 0xd4, 0x70, 0xe8, 0x3f,
-0xbb, 0x8c, 0xe7, 0x29, 0x92, 0x46, 0xe6, 0xc2,
-0xef, 0xa1, 0x46, 0x17, 0xc7, 0xdb, 0x56, 0xc2,
-0x1f, 0x68, 0x62, 0xd9, 0x4a, 0xf9, 0x87, 0xce,
-0x47, 0xb0, 0x9f, 0x3a, 0xf5, 0x7d, 0x65, 0xef,
-0xb6, 0xaa, 0x2a, 0x0c, 0x42, 0x8b, 0x0c, 0x22,
-0x32, 0xf2, 0x95, 0x65, 0xd8, 0xcf, 0x5f, 0x2d,
-0x73, 0x69, 0xd0, 0x9a, 0x57, 0xc3, 0xee, 0x74,
-0x35, 0x32, 0xf4, 0x46, 0x96, 0x88, 0xac, 0xfd,
-0xe6, 0xd4, 0x7f, 0x7a, 0x28, 0xe4, 0xfc, 0x40,
-0xf8, 0x7d, 0x73, 0xfd, 0x9e, 0x05, 0x63, 0x7c,
-0x0c, 0x86, 0x2c, 0xfe, 0xe1, 0x2c, 0xc3, 0xa1,
-0xff, 0x80, 0x55, 0x74, 0x3a, 0xf8, 0x03, 0x44,
-0xff, 0x81, 0x47, 0x3b, 0xda, 0x0b, 0xeb, 0x3f,
-0x63, 0xf0, 0x29, 0xad, 0x6e, 0x9f, 0xd6, 0xd4,
-0xb5, 0x0e, 0xef, 0x5a, 0x5e, 0x2b, 0xce, 0x42,
-0xff, 0xd9, 0xd3, 0x36, 0x26, 0x6c, 0x53, 0xaa,
-0x5b, 0x36, 0xec, 0x8b, 0xac, 0x2f, 0xa0, 0xff,
-0xcc, 0xa7, 0xfa, 0x4f, 0x77, 0xf1, 0x98, 0xf8,
-0x0a, 0xae, 0xd7, 0x2d, 0x72, 0xf3, 0x61, 0x3f,
-0xff, 0x38, 0xf2, 0x0f, 0xe5, 0x9f, 0xe6, 0xe1,
-0xd0, 0x36, 0x50, 0x54, 0xb1, 0xae, 0x6d, 0x00,
-0x76, 0xe5, 0xd5, 0x7f, 0x1a, 0xca, 0xd2, 0x98,
-0xf7, 0x12, 0x10, 0x05, 0x9e, 0x80, 0x5f, 0x1d,
-0x48, 0x6d, 0x35, 0x7e, 0xfd, 0xc1, 0xd6, 0x7f,
-0x46, 0x17, 0x5a, 0x4e, 0xed, 0x6e, 0xff, 0x0a,
-0x6e, 0xc5, 0xde, 0x7a, 0x28, 0x7a, 0xbe, 0x7d,
-0xbd, 0x36, 0x0b, 0xfd, 0x67, 0x17, 0xde, 0x6f,
-0xef, 0x40, 0xbd, 0x2e, 0x9d, 0x6f, 0x67, 0xfa,
-0xd8, 0x57, 0xd4, 0xb0, 0xf9, 0x67, 0x93, 0x6c,
-0x41, 0x0e, 0xe0, 0xb2, 0x8e, 0xef, 0x2f, 0xf1,
-0x9e, 0x2d, 0x61, 0x05, 0x15, 0xe0, 0x9f, 0x22,
-0xcb, 0xa9, 0x0a, 0xc2, 0x3f, 0xa2, 0xd6, 0x2c,
-0xca, 0x6d, 0x82, 0xe2, 0xe5, 0x3d, 0x5b, 0xff,
-0x99, 0x7f, 0xdb, 0x61, 0x07, 0x4f, 0xaa, 0xca,
-0xea, 0xb0, 0xdc, 0xec, 0xd7, 0xdf, 0xbc, 0xfa,
-0x8f, 0xb5, 0xc8, 0xd3, 0xea, 0x91, 0xa7, 0x03,
-0xf5, 0x3d, 0x5b, 0xff, 0xc9, 0x51, 0xfd, 0x27,
-0xc3, 0x8f, 0xa1, 0x49, 0x31, 0xd5, 0x1c, 0xfd,
-0x45, 0x41, 0xfd, 0x87, 0xf2, 0x0f, 0x0e, 0xb2,
-0x82, 0xf3, 0x4f, 0x4a, 0x8e, 0x13, 0x63, 0x16,
-0xfa, 0xcf, 0x2f, 0x9b, 0xbf, 0x03, 0x53, 0xb0,
-0x74, 0x77, 0x4f, 0x36, 0x1c, 0xa3, 0xb2, 0x4f,
-0x90, 0xfe, 0x43, 0xf3, 0x4f, 0x03, 0x17, 0x49,
-0x6f, 0x23, 0x20, 0xd4, 0x10, 0xa0, 0xcf, 0xdb,
-0xfa, 0x8f, 0x66, 0xf0, 0xcf, 0x93, 0x7a, 0x64,
-0x23, 0xb7, 0x12, 0xfa, 0xc4, 0x25, 0x80, 0xf3,
-0xd5, 0x02, 0xdd, 0xcb, 0x3f, 0xb6, 0xfe, 0xd3,
-0x23, 0x9a, 0xfc, 0x13, 0xfd, 0x87, 0xc8, 0x1d,
-0xf0, 0x5b, 0xd4, 0x78, 0x69, 0xed, 0x86, 0x55,
-0x8b, 0x74, 0x2f, 0xff, 0x38, 0xf4, 0x9f, 0x85,
-0x56, 0xbe, 0x3d, 0x18, 0xca, 0x09, 0x37, 0x30,
-0xef, 0x2d, 0xc5, 0x69, 0x16, 0xe5, 0xe7, 0x1f,
-0xf8, 0xb7, 0x29, 0xf8, 0x57, 0x52, 0xa4, 0x72,
-0xf8, 0xa6, 0x7b, 0xa7, 0xab, 0xfe, 0x70, 0x74,
-0xb2, 0x86, 0x95, 0x2d, 0x86, 0x46, 0xb6, 0xfe,
-0x43, 0xf8, 0xa7, 0x4f, 0xc3, 0x8b, 0x4c, 0x57,
-0x8c, 0x70, 0x3b, 0xa1, 0x4a, 0x5a, 0xf3, 0x25,
-0xb7, 0x80, 0xe6, 0x9f, 0xb3, 0xa8, 0x0f, 0xbe,
-0x63, 0xe8, 0x3f, 0x2c, 0xfe, 0x00, 0x78, 0xbe,
-0x82, 0xbf, 0x55, 0xb9, 0xff, 0x85, 0x2d, 0xa1,
-0xaa, 0x93, 0x3f, 0x54, 0xdb, 0x1e, 0xf1, 0x3d,
-0xb8, 0x39, 0xf4, 0x1f, 0x9a, 0x7f, 0x80, 0xd3,
-0xe5, 0x36, 0x55, 0x51, 0x7e, 0xb8, 0x92, 0x5b,
-0xeb, 0x7c, 0xb0, 0x8d, 0x79, 0xf5, 0x1f, 0xcb,
-0x5f, 0x8d, 0xd7, 0xb9, 0xc1, 0x75, 0x75, 0xe9,
-0x48, 0x27, 0xff, 0x33, 0x23, 0x6d, 0x2e, 0xce,
-0xcc, 0x09, 0x78, 0x7e, 0xc4, 0xfc, 0x63, 0xf2,
-0x92, 0x8e, 0x79, 0xf8, 0x1b, 0x35, 0x25, 0x44,
-0xb9, 0x39, 0xbd, 0xbe, 0x7a, 0x94, 0x65, 0xeb,
-0x0f, 0xc9, 0x56, 0xd2, 0xce, 0xcd, 0x19, 0x87,
-0x0f, 0x60, 0x85, 0x2e, 0xe9, 0x0e, 0xfd, 0x07,
-0xa6, 0x05, 0x8f, 0xfe, 0x83, 0x28, 0xff, 0x74,
-0x54, 0x7c, 0x04, 0xe7, 0x1f, 0xac, 0x56, 0xd6,
-0xfe, 0xbc, 0x39, 0x40, 0xff, 0x51, 0x19, 0xff,
-0x90, 0x7a, 0x47, 0x1e, 0xea, 0x7f, 0x59, 0xfc,
-0xa1, 0xd2, 0x2d, 0xc6, 0x3a, 0xc4, 0x0e, 0xab,
-0xde, 0x85, 0xf3, 0xf0, 0x0f, 0xde, 0x5d, 0xca,
-0x46, 0x23, 0x3e, 0xf0, 0x0b, 0x55, 0x81, 0x6d,
-0x60, 0xe6, 0x67, 0x22, 0x83, 0x0c, 0xa7, 0x8f,
-0xc2, 0x46, 0x9f, 0xfe, 0x03, 0xc7, 0x63, 0xa4,
-0xbf, 0xc0, 0x67, 0x85, 0x0b, 0xea, 0x72, 0x7d,
-0x01, 0xe2, 0x17, 0x30, 0x7f, 0xe9, 0xc6, 0xd0,
-0x4b, 0x9c, 0xfc, 0x43, 0xea, 0xd7, 0xc3, 0x3a,
-0x86, 0x96, 0x29, 0x68, 0x82, 0x72, 0xdd, 0x2e,
-0x5b, 0x57, 0x90, 0x5f, 0xff, 0xb1, 0xf9, 0x67,
-0xaa, 0x85, 0x18, 0xe5, 0x13, 0xfc, 0x4d, 0x64,
-0xc9, 0x3e, 0xec, 0x2b, 0x87, 0xfe, 0x23, 0x7f,
-0x4c, 0x69, 0xe7, 0x0a, 0x3a, 0x8e, 0xee, 0x22,
-0xc6, 0xf4, 0xec, 0xf4, 0x9f, 0x61, 0x44, 0x8c,
-0x30, 0x36, 0x54, 0x5f, 0xff, 0xcb, 0xd6, 0x7f,
-0xf0, 0xf3, 0x97, 0x23, 0xda, 0x77, 0xcd, 0xa4,
-0xff, 0xa8, 0x95, 0x57, 0x55, 0xd7, 0xaf, 0x1f,
-0xd8, 0x9f, 0x1a, 0x61, 0xfb, 0x27, 0x1b, 0x7a,
-0xcd, 0xa7, 0xf6, 0x04, 0xe8, 0x3f, 0x41, 0xfc,
-0xe3, 0xbf, 0x6c, 0x10, 0xff, 0xe0, 0x7a, 0xe4,
-0x5d, 0xed, 0xcd, 0x02, 0xfd, 0xaf, 0x6c, 0xd1,
-0xea, 0xfc, 0x8f, 0x5d, 0x01, 0xfc, 0x93, 0x0e,
-0xcd, 0xf3, 0xa9, 0x1f, 0x7e, 0xc3, 0xd9, 0xff,
-0x12, 0x28, 0xe4, 0x0c, 0xbb, 0x8c, 0x6c, 0x34,
-0x59, 0x33, 0x1c, 0xc0, 0x3f, 0x0b, 0x7f, 0x4d,
-0xd4, 0x1e, 0xbd, 0x04, 0xd3, 0x8e, 0x6a, 0x81,
-0xd0, 0x4d, 0xd5, 0x21, 0x04, 0x79, 0xf8, 0xa7,
-0x07, 0xd7, 0x2f, 0x6f, 0x34, 0xa6, 0xf4, 0x33,
-0x5e, 0xfd, 0x87, 0xed, 0x9f, 0xc1, 0xdb, 0xf6,
-0xf8, 0x9e, 0x16, 0x87, 0x15, 0x6f, 0x3e, 0x71,
-0xea, 0x3f, 0xff, 0x19, 0xe0, 0xe6, 0x56, 0xcf,
-0x88, 0x43, 0xff, 0x99, 0x3b, 0x10, 0x10, 0xc6,
-0x76, 0xcf, 0xc8, 0x79, 0xb6, 0x3f, 0x73, 0x36,
-0xff, 0xd8, 0xb2, 0x0f, 0xc5, 0x1e, 0x5b, 0xff,
-0xf1, 0xf3, 0x4f, 0xd0, 0x63, 0x78, 0x1e, 0xfe,
-0xb1, 0xd5, 0x0c, 0xcb, 0x10, 0x26, 0x43, 0x33,
-0xf2, 0x4f, 0x90, 0x8c, 0x53, 0x88, 0x7f, 0x0a,
-0xce, 0x0f, 0xe2, 0x1f, 0x87, 0x0c, 0xa2, 0xe5,
-0xef, 0x7f, 0x35, 0xd8, 0xfd, 0x2f, 0xdb, 0x4d,
-0xe4, 0x1d, 0x39, 0x6b, 0xf7, 0xbf, 0xca, 0x28,
-0xb4, 0xcc, 0x19, 0xd3, 0xde, 0xcb, 0xa7, 0x6f,
-0x04, 0xf0, 0x4f, 0x17, 0xff, 0x67, 0xc3, 0xd8,
-0x19, 0x34, 0xff, 0x14, 0xbb, 0x7f, 0x1b, 0x64,
-0x06, 0x39, 0xba, 0x85, 0x3d, 0xcd, 0x97, 0xd4,
-0x59, 0xf0, 0x4f, 0x90, 0xcc, 0xe5, 0xf0, 0x37,
-0x48, 0xff, 0x29, 0x14, 0x4f, 0xba, 0x1f, 0xb4,
-0xca, 0xf5, 0xf9, 0x65, 0x1c, 0xd3, 0x58, 0x8c,
-0xf9, 0xc7, 0xd6, 0x1f, 0x42, 0x87, 0x67, 0x9a,
-0x4f, 0xf4, 0x9f, 0x20, 0xfe, 0xc9, 0x9a, 0x8d,
-0x30, 0x62, 0x8c, 0x7a, 0xf9, 0x87, 0xed, 0x7f,
-0xc6, 0x3f, 0x84, 0x76, 0xfe, 0x1d, 0x1b, 0x51,
-0x6a, 0xcc, 0xc0, 0x3f, 0xc9, 0x62, 0xc7, 0x6d,
-0xe2, 0x15, 0x2e, 0x86, 0x04, 0x56, 0x5f, 0x42,
-0x76, 0xb7, 0x08, 0x59, 0xb7, 0xed, 0x59, 0x1f,
-0x0f, 0xe4, 0xd8, 0xf5, 0x09, 0xff, 0xf4, 0x59,
-0xb4, 0xa3, 0xbc, 0x4d, 0xb1, 0xe7, 0x0f, 0x5e,
-0xfe, 0xb1, 0xf5, 0x9f, 0x85, 0x76, 0xbe, 0xed,
-0x37, 0xf3, 0xb9, 0x57, 0xe8, 0x70, 0xf3, 0x8f,
-0x59, 0xbf, 0xc6, 0x8c, 0x6a, 0x75, 0xae, 0xcd,
-0x90, 0x7d, 0x58, 0xd9, 0xba, 0xca, 0xf8, 0xc7,
-0xa5, 0xff, 0xf4, 0x91, 0xfe, 0x17, 0xd1, 0x7f,
-0xb6, 0x12, 0x10, 0x7a, 0xd6, 0x5e, 0xf6, 0x45,
-0x6a, 0xb8, 0xfa, 0x5f, 0x76, 0xbe, 0xda, 0xaa,
-0x98, 0xb2, 0x0f, 0x1b, 0x41, 0xf9, 0xf9, 0x27,
-0x28, 0xed, 0x30, 0x23, 0x80, 0x7f, 0x70, 0xbe,
-0xe5, 0xbc, 0x69, 0x33, 0xa8, 0xff, 0x05, 0x57,
-0xac, 0x7a, 0xb7, 0x8a, 0x14, 0xfa, 0x44, 0xc0,
-0xfc, 0x9d, 0x84, 0x7f, 0xe8, 0xf5, 0x09, 0xff,
-0x9c, 0x33, 0x92, 0xf6, 0x1c, 0xbb, 0xcc, 0xc9,
-0xc4, 0x58, 0x8c, 0x0d, 0xd1, 0xa7, 0xff, 0x6c,
-0x16, 0xd6, 0xba, 0x65, 0x9f, 0x35, 0x81, 0x7a,
-0x8e, 0xcd, 0x3f, 0x45, 0x71, 0x26, 0xfb, 0x08,
-0xde, 0x69, 0xd4, 0x68, 0x76, 0xf2, 0x4f, 0x1c,
-0x0e, 0x59, 0xd1, 0x10, 0x8e, 0x8a, 0x76, 0x58,
-0x06, 0x18, 0x21, 0xac, 0xf1, 0xf2, 0x0f, 0x0e,
-0xcb, 0x69, 0xe3, 0xe9, 0xdb, 0x70, 0xf3, 0x88,
-0xa5, 0xff, 0x44, 0xb0, 0xbf, 0x1a, 0xe5, 0x1f,
-0x9e, 0x4e, 0x37, 0xf4, 0x1f, 0xa2, 0x17, 0x91,
-0x6a, 0x75, 0x23, 0x44, 0x8e, 0x6d, 0xd4, 0x50,
-0xc7, 0xed, 0x08, 0xe4, 0x4a, 0x02, 0xf8, 0xe7,
-0x26, 0xd9, 0x8d, 0x8a, 0xe4, 0x68, 0x7b, 0x05,
-0xf5, 0xbf, 0x64, 0x06, 0x39, 0x53, 0xc4, 0x50,
-0x62, 0x81, 0xfd, 0x2f, 0x08, 0xe2, 0x1f, 0x62,
-0x00, 0x7e, 0xbe, 0xf0, 0xef, 0x07, 0x27, 0xff,
-0xb8, 0x69, 0x53, 0x15, 0x8f, 0xcd, 0xb6, 0xff,
-0x65, 0x9c, 0x36, 0xf1, 0x9d, 0x3f, 0xc9, 0xdf,
-0xff, 0x32, 0xa2, 0x51, 0x31, 0xfb, 0xfe, 0xd7,
-0x15, 0x74, 0x06, 0xd5, 0xc1, 0xda, 0x37, 0x0a,
-0xeb, 0x3f, 0xac, 0xff, 0x55, 0x3d, 0xa5, 0x6c,
-0x87, 0xea, 0xe6, 0xb2, 0x13, 0x01, 0xe7, 0x97,
-0xec, 0xfe, 0x57, 0xd6, 0xee, 0x7f, 0x9d, 0x83,
-0x76, 0x01, 0x32, 0xf8, 0x79, 0xca, 0xff, 0xfc,
-0xe5, 0xe4, 0x9f, 0x45, 0x0e, 0x0c, 0x18, 0xa8,
-0x39, 0x5c, 0x4a, 0xf4, 0x10, 0x1f, 0xff, 0x08,
-0x74, 0xbf, 0xb5, 0x88, 0xf8, 0x6a, 0xb4, 0xed,
-0xf5, 0x3f, 0x4a, 0xd7, 0xe6, 0x1d, 0xd5, 0xbc,
-0x44, 0x8f, 0xfd, 0xd8, 0xfd, 0xaf, 0x62, 0xba,
-0x1e, 0x75, 0xa1, 0x15, 0x9f, 0x0c, 0xff, 0x47,
-0x62, 0x9c, 0x8c, 0xa6, 0x03, 0xe2, 0x33, 0xc2,
-0xe2, 0xdf, 0x53, 0x74, 0x05, 0x3e, 0x42, 0x75,
-0x64, 0xfe, 0x55, 0x79, 0x0d, 0xac, 0x44, 0xd2,
-0x31, 0xa3, 0x3f, 0x6b, 0x74, 0xc4, 0xd8, 0xf9,
-0x1f, 0x27, 0xff, 0x90, 0xfc, 0x59, 0x45, 0x92,
-0xc6, 0x1f, 0xbb, 0xf1, 0x63, 0x17, 0x2a, 0x6b,
-0xb5, 0xfa, 0xe9, 0xec, 0x20, 0x90, 0xe8, 0xed,
-0x7f, 0xf5, 0xa1, 0x2a, 0xe2, 0xd4, 0x59, 0x78,
-0x11, 0x2d, 0x4d, 0x8a, 0x39, 0xcb, 0x5f, 0xd1,
-0x71, 0xfe, 0x67, 0xdc, 0xa3, 0xff, 0x28, 0x38,
-0x68, 0xd5, 0xc4, 0xd8, 0x78, 0xf2, 0x6e, 0x08,
-0x4b, 0x6e, 0x85, 0x5f, 0x74, 0xf3, 0x0f, 0x81,
-0x9c, 0x23, 0xb8, 0x4c, 0x94, 0xe4, 0xe0, 0x32,
-0x34, 0x6a, 0x52, 0x96, 0x8f, 0x19, 0xd8, 0x13,
-0xa7, 0xfc, 0x13, 0x77, 0xf3, 0x8f, 0xa3, 0x1e,
-0x75, 0xab, 0x29, 0x58, 0xdc, 0x31, 0x6b, 0xfe,
-0x81, 0xc9, 0x8a, 0x94, 0x2a, 0x75, 0xcf, 0x19,
-0x93, 0x67, 0xa1, 0xff, 0x18, 0xd5, 0x56, 0xc5,
-0xfb, 0xff, 0x85, 0xfe, 0x82, 0xfc, 0x23, 0xd4,
-0xc2, 0x4b, 0xb4, 0x5f, 0x43, 0xbe, 0x15, 0x83,
-0xeb, 0x35, 0xfd, 0x88, 0x60, 0xf3, 0x8f, 0x56,
-0x2f, 0x24, 0x1e, 0x8b, 0x15, 0xee, 0x7f, 0x35,
-0x88, 0x69, 0xd6, 0xef, 0x43, 0x66, 0x23, 0x66,
-0x95, 0xdf, 0x5f, 0x47, 0xff, 0x6b, 0xa1, 0xab,
-0x9a, 0x37, 0x91, 0x83, 0x3d, 0x33, 0xf1, 0xcf,
-0x2d, 0x4b, 0xed, 0x41, 0xb7, 0xf0, 0x7c, 0xa9,
-0xd5, 0xd0, 0x4f, 0x9a, 0xf2, 0x9d, 0xff, 0xb1,
-0xf9, 0xe7, 0x92, 0x61, 0x7c, 0x57, 0xab, 0x50,
-0x0a, 0xf5, 0xbf, 0x2c, 0xfe, 0xd9, 0x8e, 0xbd,
-0x5b, 0xfd, 0x2a, 0x24, 0xd2, 0xa2, 0xdc, 0x1c,
-0x74, 0xde, 0x29, 0x1f, 0xff, 0xb4, 0x94, 0x76,
-0x05, 0x9c, 0xbf, 0xb2, 0xfb, 0x5f, 0xda, 0x5c,
-0x0f, 0xcf, 0xc4, 0x77, 0x45, 0x0a, 0xe9, 0x3f,
-0x76, 0xff, 0x8b, 0x7c, 0x2b, 0xe6, 0xed, 0x7f,
-0xd1, 0xeb, 0xfb, 0xf8, 0x47, 0xda, 0x12, 0xa4,
-0xff, 0xd8, 0xfd, 0xaf, 0x0e, 0xcc, 0x3f, 0x21,
-0x02, 0x39, 0x15, 0x37, 0x76, 0x3f, 0x27, 0x2e,
-0x41, 0x3d, 0x1b, 0xda, 0x7a, 0x18, 0x11, 0xc9,
-0x79, 0xfb, 0x5f, 0xa4, 0xff, 0x8e, 0xda, 0x70,
-0x34, 0x44, 0x25, 0x48, 0xff, 0x51, 0x3c, 0xfd,
-0x2f, 0x93, 0x16, 0xb6, 0xc0, 0x92, 0x36, 0x71,
-0x9c, 0xdb, 0x57, 0xa8, 0xff, 0x45, 0xf5, 0x9f,
-0x4d, 0x7c, 0x3f, 0xbc, 0x4d, 0xea, 0xcb, 0x26,
-0x7e, 0x51, 0xa1, 0xfe, 0x97, 0xcd, 0x3f, 0x39,
-0x92, 0x3d, 0xd0, 0xc3, 0x41, 0xf9, 0xdc, 0xd1,
-0xff, 0x2a, 0xba, 0xda, 0x72, 0x1d, 0xd5, 0x93,
-0x22, 0xf5, 0x06, 0x5c, 0xc4, 0x86, 0xf4, 0xcf,
-0x76, 0xff, 0x82, 0xd4, 0xaf, 0x15, 0xde, 0xfe,
-0xd7, 0x7e, 0x5c, 0x64, 0x0f, 0x90, 0x45, 0x8e,
-0x76, 0xec, 0x44, 0x77, 0x6f, 0x11, 0x9f, 0xa9,
-0x58, 0xe0, 0x5b, 0xbf, 0x93, 0x37, 0x88, 0x77,
-0xdf, 0x32, 0xe6, 0x4b, 0x27, 0xa0, 0xaa, 0xab,
-0xb4, 0xb5, 0xda, 0x35, 0xff, 0x6e, 0xdd, 0xdd,
-0xff, 0x32, 0xf2, 0x4f, 0xad, 0x01, 0x39, 0x70,
-0x00, 0x62, 0x9b, 0x4b, 0x83, 0xf4, 0x34, 0xbb,
-0xff, 0x15, 0x33, 0xfa, 0x17, 0xaf, 0x61, 0xa7,
-0x4a, 0x7a, 0x8a, 0xbe, 0x80, 0x24, 0x2a, 0x33,
-0xf3, 0x27, 0xf3, 0x77, 0xb9, 0xd9, 0xff, 0xb2,
-0xd7, 0xd3, 0x4b, 0x07, 0x3f, 0x85, 0xff, 0xe2,
-0x52, 0x5d, 0xe5, 0xff, 0x11, 0x78, 0xfe, 0xc7,
-0xc9, 0x3f, 0xec, 0xa1, 0xfe, 0xd6, 0xe1, 0x7a,
-0x24, 0x8d, 0xbb, 0xf4, 0x9f, 0x7c, 0xfd, 0xaf,
-0xd2, 0x0c, 0xf7, 0x19, 0x1c, 0x4f, 0x57, 0x1f,
-0x09, 0x2f, 0x0f, 0x3a, 0x7f, 0xeb, 0xe2, 0x1f,
-0x6b, 0xb0, 0x27, 0xfd, 0x86, 0x50, 0xad, 0x89,
-0xc7, 0x02, 0xe6, 0x7b, 0xf4, 0x1f, 0x1c, 0x84,
-0xd2, 0x64, 0xf3, 0x20, 0x1c, 0x55, 0x0e, 0x6e,
-0x7e, 0xd6, 0x3a, 0x0f, 0x3c, 0x60, 0xc6, 0x87,
-0xf7, 0x9e, 0xff, 0x91, 0xe2, 0xe8, 0xc6, 0x3a,
-0x6b, 0x3f, 0x4c, 0x40, 0x1d, 0x92, 0x32, 0x56,
-0x7c, 0x22, 0x8e, 0x46, 0x98, 0x93, 0x7f, 0x6e,
-0x19, 0x4e, 0x95, 0x8d, 0xf3, 0xa3, 0x30, 0xa9,
-0x36, 0x22, 0xea, 0xe6, 0x20, 0x35, 0x86, 0x02,
-0xf8, 0x27, 0x65, 0x62, 0xb3, 0xd9, 0x2d, 0x5d,
-0xe3, 0xda, 0x3f, 0xf5, 0xfe, 0xfe, 0xd7, 0x0a,
-0x02, 0x39, 0x47, 0x2c, 0xda, 0x91, 0x8e, 0x71,
-0xae, 0xf3, 0xcf, 0xd5, 0xbe, 0xfe, 0x97, 0x70,
-0x34, 0x14, 0xd7, 0xb7, 0x3b, 0x7e, 0x7d, 0xd7,
-0x7e, 0x50, 0xf2, 0xf6, 0xbf, 0xcc, 0xe8, 0x89,
-0x19, 0x77, 0x3c, 0xab, 0xf3, 0xf5, 0xbf, 0xec,
-0x5f, 0xdf, 0xb5, 0x7f, 0xea, 0xf2, 0xf5, 0xbf,
-0xf2, 0xe8, 0x3f, 0x6f, 0xe5, 0xed, 0x7f, 0xcd,
-0x4a, 0xff, 0x19, 0x2d, 0xf2, 0xfc, 0xfa, 0x7c,
-0xd2, 0xc9, 0x6f, 0x47, 0xbd, 0xfa, 0x4f, 0xce,
-0xce, 0x3f, 0xb3, 0xd2, 0x7f, 0xc6, 0x43, 0x8b,
-0xcc, 0x43, 0xce, 0xcf, 0x92, 0xea, 0xaf, 0x99,
-0xd8, 0x23, 0xe4, 0xd7, 0x7f, 0xfe, 0x5a, 0x2c,
-0x27, 0x90, 0x33, 0x16, 0x5d, 0x4e, 0x68, 0x47,
-0x33, 0x8e, 0x3d, 0x0f, 0xfb, 0x14, 0x21, 0xa7,
-0xfe, 0x63, 0xf4, 0xbf, 0x06, 0x02, 0xe2, 0x63,
-0xfa, 0xeb, 0xd3, 0x7f, 0xf0, 0xa0, 0xc9, 0x3f,
-0x56, 0x34, 0x1a, 0x78, 0x3f, 0x1f, 0xba, 0xfa,
-0x5f, 0xf0, 0x16, 0xdc, 0xe7, 0xca, 0x36, 0xfe,
-0xfc, 0xe3, 0xea, 0x7f, 0xc9, 0x6f, 0x99, 0xfc,
-0xc3, 0xbc, 0xf3, 0xf3, 0x9e, 0xb7, 0xff, 0x55,
-0xeb, 0xea, 0x1e, 0xfa, 0xf3, 0x8f, 0xb7, 0xff,
-0x55, 0xe7, 0x54, 0x7b, 0x22, 0x31, 0x9f, 0x22,
-0x14, 0xd0, 0xff, 0xb2, 0xab, 0xcf, 0x9c, 0xac,
-0x30, 0x2b, 0xfe, 0xf1, 0x97, 0xc5, 0xc2, 0xfc,
-0x53, 0x40, 0xd8, 0xf1, 0xe8, 0x3f, 0xa1, 0x84,
-0xba, 0xa6, 0xe0, 0xfc, 0x20, 0xfd, 0x27, 0x1c,
-0x20, 0x04, 0x15, 0xd4, 0x7f, 0xfc, 0x65, 0x37,
-0xa8, 0xff, 0x55, 0xc6, 0xfa, 0x5f, 0x05, 0xf4,
-0x0d, 0x37, 0xff, 0x7c, 0xea, 0xfa, 0x76, 0x84,
-0x77, 0xf0, 0xa1, 0x85, 0x46, 0xa7, 0x38, 0x67,
-0xff, 0x2b, 0x67, 0x9e, 0x7f, 0xf6, 0x1f, 0xfb,
-0xb1, 0xf9, 0x07, 0x9c, 0xfc, 0x73, 0xc0, 0xec,
-0x7f, 0x51, 0xef, 0x2a, 0x06, 0xe4, 0x02, 0xfd,
-0x2f, 0xcc, 0x3f, 0x2f, 0xc1, 0x53, 0x33, 0xe8,
-0x3f, 0xee, 0xfe, 0x17, 0x5e, 0xff, 0x83, 0x85,
-0xf5, 0x9c, 0x80, 0xfe, 0x97, 0x43, 0x1d, 0x9a,
-0xa9, 0xff, 0x95, 0xef, 0xbc, 0x59, 0xbe, 0xfe,
-0xd7, 0x4f, 0x0c, 0xc8, 0x01, 0xaa, 0xf6, 0x30,
-0xc3, 0xa9, 0xff, 0xb0, 0xeb, 0xb3, 0xfc, 0x23,
-0x14, 0xc8, 0x3f, 0xde, 0xfe, 0x17, 0xbe, 0x49,
-0x7f, 0x5a, 0xec, 0x3f, 0xf6, 0x13, 0xd4, 0xff,
-0xea, 0xf4, 0xd0, 0xce, 0x7f, 0x07, 0x9d, 0xff,
-0xb9, 0xac, 0xb0, 0xfe, 0xd7, 0xed, 0xbd, 0xe4,
-0x35, 0x13, 0x3d, 0x10, 0x7b, 0x4c, 0xa3, 0x24,
-0x53, 0xd3, 0xcf, 0xe2, 0xcf, 0x59, 0xcf, 0xef,
-0x8b, 0x27, 0xf9, 0x29, 0xf5, 0x2d, 0xfb, 0xfc,
-0xaa, 0xd5, 0xff, 0xba, 0x8e, 0x8e, 0x8c, 0x95,
-0xbb, 0xf5, 0x9f, 0x1d, 0x45, 0x9f, 0xe0, 0x45,
-0x6e, 0x67, 0xab, 0x4d, 0x52, 0xe3, 0x59, 0xb8,
-0xb8, 0xb9, 0x4f, 0xab, 0x22, 0xd2, 0xd0, 0xe5,
-0x0e, 0x7a, 0x7d, 0x40, 0xfb, 0xe0, 0x45, 0xcb,
-0x3b, 0x89, 0xb9, 0xb9, 0x17, 0xa8, 0x10, 0xa4,
-0x54, 0x0d, 0x86, 0xbd, 0xfa, 0xcf, 0xa1, 0x42,
-0xf9, 0x5c, 0x31, 0xf5, 0x1f, 0x16, 0x9f, 0x4a,
-0xd3, 0x5f, 0xd2, 0x9d, 0x31, 0xbc, 0x33, 0x1c,
-0xb7, 0x0f, 0xba, 0x84, 0x8e, 0x90, 0x8e, 0x86,
-0xab, 0xff, 0x65, 0xce, 0x2f, 0x58, 0x8f, 0xdc,
-0xfd, 0xaf, 0xcf, 0xf3, 0xd4, 0x3b, 0xee, 0x84,
-0xcd, 0x3f, 0x74, 0xfd, 0xac, 0xff, 0x15, 0x24,
-0xfb, 0xe4, 0xd1, 0x7f, 0xcc, 0xc1, 0x62, 0xf2,
-0x6d, 0xf1, 0xcc, 0xe7, 0x7f, 0x24, 0xeb, 0xb4,
-0x0f, 0xd1, 0x7f, 0xbc, 0xf1, 0x91, 0xb1, 0xd1,
-0x7f, 0xa7, 0x57, 0xff, 0xb1, 0xfd, 0x95, 0xb1,
-0xc1, 0xce, 0xc3, 0x1f, 0x99, 0xd3, 0x9b, 0xbc,
-0x61, 0x1e, 0x8d, 0x76, 0x9d, 0xff, 0x51, 0x4c,
-0xa7, 0xda, 0xad, 0xf3, 0x3f, 0xd7, 0xda, 0x2d,
-0x7f, 0x5f, 0x25, 0xff, 0xa1, 0x1a, 0xd0, 0xff,
-0xfa, 0xdc, 0xda, 0x2d, 0xf2, 0x34, 0x79, 0xff,
-0x6b, 0xd4, 0xde, 0x3f, 0x6f, 0x06, 0xf5, 0xbf,
-0xae, 0xc2, 0x67, 0x36, 0xed, 0x2c, 0xcd, 0xb6,
-0x74, 0xcf, 0xf6, 0xfc, 0xb3, 0x61, 0x28, 0xf3,
-0xe5, 0x19, 0xf4, 0x1f, 0x37, 0xff, 0x20, 0xb1,
-0x7b, 0x86, 0xfe, 0x97, 0xfb, 0xd7, 0xaf, 0x8d,
-0xed, 0x69, 0x67, 0x23, 0x0c, 0x5d, 0x9c, 0xfd,
-0xaf, 0x13, 0xce, 0xfd, 0xd0, 0x08, 0xf4, 0x45,
-0xb0, 0x59, 0xf4, 0xbf, 0xd2, 0x37, 0xe0, 0x7e,
-0xb1, 0xcc, 0xf7, 0x3e, 0x82, 0xa7, 0xff, 0x45,
-0xf7, 0x03, 0x18, 0xb4, 0x06, 0xe2, 0xee, 0x82,
-0xef, 0x7f, 0x39, 0xf4, 0x9f, 0xb3, 0x98, 0x87,
-0x6b, 0x47, 0x44, 0x80, 0xc2, 0xfd, 0xaf, 0x45,
-0xe6, 0x69, 0x67, 0x83, 0x7f, 0x90, 0x92, 0x15,
-0xd7, 0xce, 0xd0, 0xff, 0x92, 0xcc, 0xd3, 0xce,
-0x98, 0x7f, 0xd0, 0x97, 0x68, 0x99, 0x2e, 0xc1,
-0x8c, 0xfc, 0x83, 0x83, 0x30, 0xb0, 0x93, 0xbc,
-0xff, 0x75, 0x5d, 0x4e, 0x8d, 0x3c, 0x65, 0xf6,
-0x4f, 0x53, 0x79, 0xfb, 0x5f, 0x34, 0x08, 0x25,
-0x1b, 0x0d, 0x1a, 0x97, 0xba, 0x9c, 0xf1, 0x79,
-0xdf, 0xdf, 0xff, 0xa2, 0x4f, 0x8b, 0x46, 0xfe,
-0x8c, 0xeb, 0x9d, 0xeb, 0x66, 0x3c, 0xff, 0x6c,
-0x3a, 0x55, 0x61, 0xbc, 0xf8, 0xf6, 0x61, 0xcc,
-0xd5, 0x08, 0xdb, 0xeb, 0xef, 0x7f, 0xf9, 0xdf,
-0xf6, 0xf2, 0xc7, 0xd3, 0xdb, 0xff, 0x22, 0x6d,
-0x82, 0x55, 0x2d, 0xf2, 0x37, 0xd0, 0x88, 0xa4,
-0xc7, 0x9d, 0xe7, 0x9f, 0x2f, 0xe4, 0xef, 0x7f,
-0x61, 0xa3, 0x41, 0x4d, 0xc9, 0x0f, 0x77, 0xce,
-0x56, 0xff, 0xf9, 0xb8, 0xf3, 0x34, 0xa4, 0x9a,
-0xc5, 0x00, 0x10, 0xe2, 0xfc, 0xfc, 0xb3, 0xbd,
-0x8b, 0xfb, 0x44, 0xdc, 0x96, 0x36, 0xf4, 0x1c,
-0x7f, 0x47, 0x26, 0x4f, 0xff, 0x6b, 0x1b, 0x24,
-0x9a, 0xc3, 0x81, 0x7a, 0x45, 0x70, 0xff, 0x6b,
-0x33, 0x24, 0x1e, 0x0a, 0xcb, 0x5c, 0xc7, 0xac,
-0xf8, 0x67, 0x55, 0x4e, 0x26, 0xef, 0x7f, 0x3d,
-0xa7, 0x05, 0x80, 0x90, 0xa3, 0xff, 0xc5, 0xf4,
-0x9f, 0x39, 0x63, 0xc5, 0x93, 0x78, 0xb7, 0x2c,
-0x19, 0x99, 0x65, 0xff, 0x8b, 0xfb, 0x0a, 0xd3,
-0x4e, 0xbd, 0x5a, 0x36, 0x12, 0x00, 0x8a, 0x36,
-0xff, 0x38, 0xf4, 0x1f, 0x62, 0xdc, 0x13, 0x0a,
-0x23, 0x3e, 0x3d, 0x03, 0xff, 0x58, 0x4e, 0xad,
-0x0e, 0xbd, 0xca, 0xa5, 0xd7, 0x95, 0x9a, 0xef,
-0xbb, 0xd5, 0x1a, 0x20, 0x24, 0x90, 0xaf, 0xd6,
-0xc8, 0x15, 0x41, 0xfa, 0x4f, 0x31, 0x89, 0xde,
-0x4f, 0xc8, 0x8b, 0x60, 0xfe, 0x8e, 0xe4, 0x29,
-0x17, 0xff, 0x98, 0xe7, 0x9f, 0xf9, 0xf5, 0x0b,
-0x26, 0xa1, 0xee, 0x7b, 0x65, 0x72, 0xc1, 0xf3,
-0x3f, 0xbe, 0xfe, 0x97, 0xe3, 0x7d, 0xb1, 0x92,
-0x3c, 0xfd, 0x2f, 0xab, 0xdb, 0xa5, 0xc1, 0x84,
-0x72, 0x3f, 0x79, 0xdf, 0x70, 0x56, 0xe7, 0x7f,
-0x34, 0x6e, 0xb2, 0xe3, 0x35, 0xa8, 0xea, 0x12,
-0x2f, 0x71, 0xa6, 0xfe, 0xb3, 0x06, 0xf3, 0x8f,
-0x60, 0x7e, 0x55, 0x11, 0xd4, 0xff, 0xe2, 0xda,
-0xd1, 0x11, 0xbd, 0x76, 0x6f, 0x38, 0x48, 0x7f,
-0xb6, 0xcf, 0x3f, 0x3b, 0xfa, 0x5f, 0x23, 0xd0,
-0x27, 0x7e, 0xeb, 0xe4, 0x1d, 0xd9, 0x36, 0x9f,
-0xfe, 0x03, 0xee, 0xfe, 0x97, 0x05, 0x39, 0xbb,
-0xe1, 0x6b, 0xb4, 0x4c, 0x2b, 0x0f, 0xd2, 0x7f,
-0x2e, 0xd3, 0xed, 0xc6, 0xf4, 0x9f, 0x12, 0x5c,
-0xc4, 0xe5, 0x6b, 0xb0, 0x7c, 0xf3, 0xcf, 0x93,
-0x41, 0xfa, 0x8f, 0xad, 0xff, 0x93, 0xf7, 0x97,
-0xbb, 0x8c, 0x63, 0x1b, 0x53, 0xd0, 0x81, 0x56,
-0xd4, 0x2e, 0x7c, 0xcf, 0xd0, 0x7f, 0xac, 0x83,
-0xd0, 0x9f, 0x9b, 0xad, 0x31, 0x4f, 0xff, 0x0b,
-0x19, 0x4e, 0x8d, 0x70, 0x48, 0xa9, 0x92, 0xa4,
-0x67, 0xf8, 0x47, 0x9c, 0xeb, 0x6f, 0xcc, 0xfa,
-0xfb, 0x5f, 0xca, 0x12, 0x3d, 0x4c, 0xfc, 0xed,
-0x08, 0xc5, 0x20, 0x36, 0x62, 0x3c, 0xaf, 0xdd,
-0xcd, 0xfc, 0x1d, 0xcc, 0xd7, 0xff, 0xd2, 0x45,
-0x04, 0x8a, 0x22, 0xde, 0xcb, 0xf9, 0x9f, 0x70,
-0xdd, 0xfd, 0xaf, 0xe3, 0xe6, 0xb1, 0x8d, 0x2c,
-0x4e, 0x76, 0x0d, 0xf3, 0xa4, 0xff, 0x67, 0xef,
-0xfa, 0x63, 0xab, 0xb8, 0xb2, 0xf3, 0x7d, 0xf3,
-0xc6, 0x30, 0xb6, 0x9f, 0xed, 0xb1, 0x81, 0x96,
-0x2c, 0x04, 0x06, 0x03, 0x5b, 0x97, 0xba, 0xe0,
-0xc5, 0x88, 0xb0, 0x0e, 0x31, 0x83, 0x49, 0x54,
-0x16, 0xa2, 0x80, 0x36, 0x6d, 0xb5, 0x2b, 0x45,
-0x91, 0x45, 0xa8, 0x8a, 0x54, 0xb6, 0x62, 0x7f,
-0xfc, 0xe1, 0x25, 0xab, 0xcd, 0x80, 0xc9, 0xc6,
-0x59, 0xd3, 0xae, 0x93, 0xcd, 0x6a, 0x89, 0xb2,
-0xbb, 0x7d, 0x04, 0x54, 0x50, 0x97, 0x56, 0x40,
-0xd2, 0x2c, 0x34, 0x28, 0x79, 0x10, 0x4b, 0x71,
-0x12, 0x27, 0x58, 0xd9, 0x54, 0x9b, 0x1f, 0x94,
-0x7d, 0xd1, 0xd2, 0xc4, 0x0d, 0x0e, 0x71, 0x48,
-0x94, 0x3a, 0xc1, 0xe0, 0xce, 0x9d, 0xb9, 0x3f,
-0xe7, 0x9e, 0x7b, 0x67, 0x1c, 0x36, 0x9b, 0x48,
-0x8d, 0xff, 0x3a, 0x7a, 0x1e, 0x9e, 0xe6, 0x1e,
-0xc6, 0xf7, 0x7e, 0xf3, 0x9d, 0xef, 0x7c, 0x67,
-0x05, 0xe9, 0x6f, 0x8a, 0xd6, 0x7b, 0x1e, 0xa8,
-0x7f, 0xd1, 0x24, 0xbc, 0x8e, 0xc6, 0x56, 0xb7,
-0xa3, 0xda, 0xc4, 0x79, 0xd4, 0xa6, 0xe5, 0x7f,
-0x2e, 0xa2, 0x71, 0x74, 0x3d, 0xaa, 0x19, 0xcf,
-0x7f, 0xcf, 0xc0, 0xff, 0xec, 0xe0, 0xf8, 0x27,
-0xfc, 0x6b, 0x0a, 0x96, 0x7b, 0x35, 0x27, 0x76,
-0x1a, 0xf5, 0x3f, 0xfc, 0x7d, 0xbf, 0x5c, 0x3c,
-0x56, 0x5a, 0xd4, 0x52, 0x79, 0xd8, 0x52, 0x11,
-0x94, 0xca, 0xff, 0x54, 0x2f, 0x9b, 0x52, 0x42,
-0x87, 0xdd, 0x05, 0xe8, 0x2b, 0xf1, 0xfb, 0x29,
-0x96, 0xfd, 0xc4, 0x07, 0xdf, 0x40, 0x52, 0xff,
-0x53, 0xff, 0xb8, 0x43, 0x40, 0xdd, 0x98, 0xdf,
-0x86, 0x7e, 0x7e, 0x38, 0xbf, 0x55, 0xad, 0xef,
-0x70, 0xfc, 0x73, 0x4d, 0xb4, 0xa8, 0x53, 0x75,
-0x17, 0xf3, 0x43, 0x68, 0xdc, 0x5b, 0x85, 0xea,
-0xb6, 0xc9, 0xe7, 0x7b, 0xfb, 0x10, 0xac, 0xff,
-0xf9, 0x50, 0x84, 0xcd, 0x11, 0x22, 0x3a, 0xc6,
-0x18, 0x21, 0xa8, 0xfe, 0x75, 0x98, 0xa3, 0x9d,
-0x91, 0xa0, 0x37, 0x1d, 0xff, 0x2c, 0x6d, 0x18,
-0xcc, 0xb1, 0xc7, 0x80, 0x20, 0xe4, 0xdd, 0xe9,
-0xf8, 0x27, 0x7e, 0x91, 0x4f, 0x0a, 0xcb, 0x25,
-0xfc, 0x93, 0x53, 0x61, 0xf0, 0x79, 0x23, 0xfe,
-0xb9, 0x7a, 0xfd, 0x4f, 0xb2, 0xd1, 0x49, 0xc6,
-0x3f, 0x97, 0x14, 0xd8, 0x9c, 0xbc, 0x7f, 0x10,
-0xff, 0x08, 0xc7, 0x74, 0xb2, 0xfe, 0x0e, 0xd7,
-0xbf, 0x5c, 0x1a, 0x38, 0xf7, 0x24, 0x18, 0x21,
-0x05, 0xff, 0x48, 0x68, 0x67, 0x04, 0xfd, 0x1a,
-0x97, 0xbd, 0x18, 0x23, 0x24, 0xe1, 0x9f, 0xf0,
-0xfd, 0xeb, 0x1d, 0xd2, 0x1d, 0x40, 0x69, 0x1f,
-0xd2, 0xf6, 0x85, 0xdf, 0x50, 0x26, 0xdc, 0xa8,
-0xb4, 0x0a, 0xe0, 0x9f, 0x63, 0xd5, 0x58, 0x08,
-0x17, 0x65, 0xe3, 0x02, 0x7a, 0x0e, 0xcd, 0x91,
-0xf2, 0x03, 0xe1, 0x1f, 0x91, 0xf6, 0x31, 0xe9,
-0x7f, 0x98, 0xfe, 0x79, 0x8e, 0x9d, 0x49, 0xff,
-0x03, 0xd1, 0x3e, 0x99, 0xf4, 0x3f, 0x02, 0xed,
-0x33, 0x29, 0xfd, 0xcf, 0xb4, 0xf2, 0x94, 0xac,
-0xf5, 0xaf, 0x49, 0xf1, 0x3f, 0x7f, 0x38, 0xfd,
-0x4f, 0x16, 0xfc, 0x83, 0xe6, 0xb3, 0xd5, 0x95,
-0xd0, 0x98, 0x95, 0x8a, 0x7f, 0x38, 0xff, 0xd3,
-0x7a, 0xae, 0x48, 0xda, 0xb8, 0xc2, 0x4f, 0xf2,
-0x3a, 0xfc, 0xf3, 0x00, 0xa3, 0x7d, 0xa6, 0x9d,
-0xf3, 0x15, 0xfc, 0x03, 0xd5, 0xbf, 0x4c, 0xfc,
-0x0f, 0x58, 0xff, 0xa2, 0xc2, 0xef, 0xfe, 0xe0,
-0xaa, 0xf5, 0x3f, 0x90, 0xfe, 0xd9, 0xc0, 0xe7,
-0x28, 0xf8, 0x87, 0xf3, 0x45, 0xff, 0x94, 0xae,
-0xff, 0x99, 0x2c, 0xff, 0x13, 0xd7, 0xbf, 0x2c,
-0x95, 0xf6, 0xd1, 0xe8, 0x7f, 0x8c, 0x7c, 0x85,
-0x0e, 0xff, 0x88, 0x32, 0x18, 0x5f, 0xe5, 0x7f,
-0xe8, 0xf7, 0x63, 0xfc, 0x13, 0xf5, 0xbf, 0x6f,
-0xef, 0xe6, 0xb4, 0x4f, 0x51, 0xc1, 0x3f, 0xa0,
-0xfe, 0xc7, 0xd6, 0xf2, 0x1b, 0xb2, 0xfe, 0x07,
-0xe3, 0x9f, 0xba, 0xe3, 0xdd, 0x21, 0xec, 0xe9,
-0x4b, 0x1c, 0x64, 0x08, 0xd6, 0xff, 0x60, 0xd9,
-0xcf, 0x47, 0x74, 0xff, 0xe9, 0xb2, 0xe2, 0x17,
-0x31, 0xb8, 0xfe, 0xc5, 0xf4, 0x3f, 0xdf, 0xb2,
-0x88, 0xf0, 0xfb, 0x5b, 0xc0, 0xfb, 0x1a, 0x88,
-0x7f, 0x54, 0x18, 0x09, 0xe2, 0x1f, 0xc2, 0x96,
-0x8f, 0xfe, 0x1d, 0xa3, 0xcd, 0x89, 0xd0, 0x45,
-0x10, 0x3e, 0x01, 0xf8, 0x67, 0x14, 0x48, 0x8b,
-0xa1, 0xfe, 0xb5, 0x41, 0x7f, 0xde, 0xd5, 0x24,
-0xf0, 0x8f, 0xf3, 0xf1, 0xf8, 0x1f, 0xe3, 0xf5,
-0x2a, 0xfe, 0x69, 0xd9, 0x39, 0x68, 0xb7, 0x46,
-0xc0, 0x40, 0xca, 0x8f, 0x9b, 0xac, 0x7f, 0xd5,
-0x84, 0x68, 0xc7, 0x13, 0xd7, 0x7b, 0xb4, 0x3b,
-0xca, 0xcf, 0x4b, 0x8c, 0x08, 0xaa, 0x51, 0xfa,
-0xbf, 0x24, 0xb5, 0x2a, 0x16, 0x4a, 0xc5, 0xfd,
-0xef, 0x94, 0x11, 0x02, 0xf0, 0xcf, 0xb3, 0x35,
-0x63, 0xf9, 0x76, 0xcc, 0xff, 0x74, 0x4a, 0xfc,
-0x21, 0xcc, 0xff, 0x3c, 0x1e, 0x2c, 0x19, 0x75,
-0x48, 0xd9, 0xab, 0x33, 0x53, 0xff, 0xfb, 0x62,
-0x54, 0x49, 0x9e, 0x87, 0xd5, 0xe0, 0xf3, 0x90,
-0xc0, 0x3f, 0xb9, 0xc5, 0x1d, 0x3d, 0xb8, 0xdb,
-0x2b, 0xcc, 0xde, 0x8d, 0x4a, 0x3e, 0x4f, 0x42,
-0xfc, 0xcf, 0x4b, 0x35, 0xa4, 0xec, 0xd5, 0x39,
-0x15, 0x7a, 0x1e, 0x14, 0xfc, 0x53, 0xae, 0x1b,
-0xad, 0x8e, 0x60, 0x70, 0x27, 0xf8, 0x60, 0x28,
-0xf8, 0xc7, 0xbd, 0x99, 0x7c, 0xdb, 0x4d, 0xa9,
-0xfa, 0x67, 0xfc, 0x3c, 0x34, 0x77, 0x38, 0x2d,
-0x28, 0xea, 0x76, 0xff, 0x0e, 0xf8, 0x3c, 0x28,
-0xf8, 0xa7, 0xb3, 0x89, 0x64, 0x63, 0x63, 0xaa,
-0xfe, 0x19, 0xe3, 0x9f, 0xe6, 0x2d, 0x54, 0xfd,
-0xb2, 0x85, 0xc2, 0x00, 0x5d, 0xff, 0x7b, 0x8c,
-0x7f, 0x4e, 0x16, 0x08, 0xfe, 0xd9, 0xa2, 0xf4,
-0xbf, 0x27, 0xf9, 0x9f, 0xc8, 0xff, 0x67, 0x98,
-0x66, 0xe3, 0x46, 0x1a, 0xe0, 0xfe, 0xf7, 0x11,
-0x2d, 0xff, 0xb3, 0x96, 0xca, 0xae, 0x7c, 0x9c,
-0x16, 0xe7, 0x4e, 0x83, 0xfe, 0x39, 0xda, 0x4f,
-0x3a, 0x54, 0xdb, 0x1f, 0x13, 0xfe, 0x69, 0x8e,
-0xd4, 0x3e, 0xb9, 0x70, 0x75, 0x9d, 0x69, 0xfd,
-0xef, 0x78, 0xff, 0xb1, 0x38, 0xed, 0xe3, 0x83,
-0xf9, 0x4c, 0xe2, 0x9f, 0x55, 0x4c, 0xed, 0xb3,
-0x13, 0xee, 0x7f, 0xd7, 0xe2, 0x1f, 0x97, 0x1d,
-0x43, 0x73, 0x0d, 0xf8, 0x67, 0xe5, 0xe6, 0xc2,
-0x24, 0xf1, 0x0f, 0x95, 0xf1, 0x7c, 0x35, 0x23,
-0xfe, 0x71, 0xe2, 0x7e, 0xf9, 0xac, 0xf8, 0x67,
-0x1d, 0x28, 0xfb, 0xd1, 0xe3, 0x1f, 0xa7, 0x10,
-0xe4, 0xf5, 0x8d, 0xff, 0x0a, 0xfe, 0x91, 0xd5,
-0x3b, 0xe7, 0x92, 0xc2, 0xe6, 0x35, 0x49, 0xfc,
-0xb3, 0x6a, 0x4b, 0x21, 0xa6, 0x7d, 0x6e, 0xf0,
-0xa1, 0x44, 0xdd, 0x21, 0xe1, 0x1f, 0x27, 0x04,
-0x39, 0x7d, 0x4e, 0x60, 0x79, 0x38, 0x40, 0x4e,
-0x26, 0xfc, 0xb3, 0xd1, 0x21, 0x36, 0x47, 0xab,
-0x2b, 0x53, 0xf5, 0xcf, 0x39, 0x2c, 0xfb, 0x71,
-0x28, 0x8d, 0x56, 0x99, 0x09, 0xff, 0x6c, 0x6c,
-0x8e, 0x68, 0xbd, 0xdc, 0xca, 0xce, 0x3f, 0xcf,
-0x84, 0x7f, 0xc2, 0x0f, 0xab, 0xa3, 0xdf, 0xae,
-0x9d, 0x93, 0x05, 0xff, 0xac, 0xc4, 0x6d, 0x5f,
-0x65, 0xda, 0x08, 0x9f, 0x8a, 0x7f, 0x30, 0x6d,
-0xee, 0x45, 0x68, 0x67, 0xc9, 0x03, 0xeb, 0x32,
-0xe1, 0x9f, 0x32, 0xfd, 0x7b, 0xd9, 0x05, 0xf2,
-0xa5, 0x0a, 0xfe, 0x19, 0xa2, 0x7f, 0xbf, 0xa8,
-0x0a, 0xae, 0x7f, 0xd1, 0xef, 0x8f, 0xf1, 0xcf,
-0xca, 0xce, 0x66, 0x8a, 0x76, 0x0a, 0x60, 0xfd,
-0x4b, 0x83, 0x7f, 0x72, 0xe1, 0xea, 0x40, 0xfc,
-0x63, 0xd1, 0xfc, 0x10, 0xfd, 0x73, 0xb9, 0x40,
-0xde, 0xd6, 0x3d, 0xf0, 0xfc, 0x52, 0xf4, 0xcf,
-0xa5, 0xa6, 0x3b, 0xf1, 0xdd, 0x06, 0xcd, 0x0e,
-0x59, 0x48, 0x73, 0xac, 0xe8, 0xd6, 0xe1, 0x1f,
-0x9f, 0x5c, 0xb6, 0x44, 0x5e, 0x2f, 0xac, 0x7f,
-0x6e, 0xc5, 0xcf, 0x1b, 0xd3, 0xbb, 0xa6, 0xe1,
-0x1f, 0xbc, 0xde, 0x95, 0xfd, 0x54, 0x2d, 0xe9,
-0x81, 0xfd, 0x3b, 0x12, 0xfe, 0x71, 0xc4, 0xdf,
-0xda, 0x99, 0xf0, 0x4f, 0xbb, 0x5f, 0x20, 0xdb,
-0x38, 0x2a, 0x40, 0xe7, 0x9d, 0xca, 0xff, 0x34,
-0x11, 0x3d, 0x73, 0x63, 0x55, 0xa2, 0x11, 0xa9,
-0x0d, 0xc0, 0x3f, 0xb9, 0xc5, 0xa5, 0xb5, 0xe4,
-0x74, 0xf3, 0x9c, 0x6c, 0xf8, 0xc7, 0x69, 0x69,
-0x88, 0xb2, 0xe1, 0x56, 0xc5, 0xb2, 0x1f, 0xac,
-0x98, 0x6a, 0x60, 0xfd, 0x71, 0x09, 0xfc, 0x83,
-0xef, 0x3f, 0x5a, 0xdd, 0xbc, 0x76, 0x77, 0x36,
-0xfe, 0x5a, 0x22, 0xfb, 0x11, 0xf4, 0xcf, 0x12,
-0xfe, 0xc1, 0xdb, 0x4e, 0xe4, 0x5f, 0xe7, 0xdf,
-0x80, 0x44, 0xd9, 0x0f, 0x3e, 0xbf, 0xae, 0x4f,
-0xe0, 0x9f, 0x19, 0xcc, 0xff, 0x87, 0x1b, 0x29,
-0xb8, 0xa4, 0x11, 0x0c, 0xc4, 0x3f, 0x7f, 0x4f,
-0x41, 0xce, 0xa0, 0x45, 0x68, 0x9f, 0x91, 0xac,
-0xf5, 0xaf, 0x7d, 0xf1, 0xea, 0x06, 0x89, 0x02,
-0x0a, 0xc4, 0x3f, 0x15, 0x87, 0xf4, 0xb4, 0x09,
-0xc4, 0xff, 0x54, 0xe8, 0x60, 0xb0, 0xf8, 0x20,
-0x19, 0xf9, 0x9f, 0x35, 0x46, 0xfc, 0x83, 0x0e,
-0x71, 0x7e, 0x29, 0x49, 0xfb, 0xe0, 0x60, 0xb9,
-0xae, 0xfe, 0x45, 0xee, 0xbf, 0x36, 0x05, 0xff,
-0xcc, 0x60, 0xfc, 0xcf, 0x08, 0xe8, 0xff, 0xb3,
-0x40, 0xc1, 0x3f, 0x01, 0x3d, 0xfd, 0x0b, 0x98,
-0x06, 0xa9, 0x4a, 0xeb, 0xff, 0xaa, 0xa5, 0xfa,
-0xe7, 0x17, 0xd0, 0xad, 0xe8, 0x7b, 0x4a, 0x23,
-0xd8, 0x32, 0xb0, 0xfe, 0x55, 0x8a, 0xdb, 0xbe,
-0x72, 0x77, 0x31, 0xda, 0x50, 0x0a, 0x64, 0xfc,
-0xf3, 0x1e, 0xd5, 0xff, 0x40, 0xf9, 0x01, 0xf1,
-0xcf, 0x3c, 0x10, 0xf6, 0x34, 0x68, 0xf1, 0xcf,
-0x42, 0xb6, 0xba, 0xd7, 0xd9, 0x32, 0x2b, 0x0d,
-0xfc, 0x4f, 0x94, 0xb4, 0x41, 0x87, 0x25, 0x36,
-0x0d, 0xff, 0x3c, 0x26, 0x55, 0xbb, 0xd2, 0xf1,
-0x4f, 0xdb, 0xc7, 0xea, 0xff, 0x22, 0x42, 0x17,
-0x0b, 0x1b, 0x01, 0xb1, 0xf3, 0xae, 0xd6, 0xc0,
-0xff, 0xbc, 0xc2, 0x8d, 0x80, 0xb4, 0xf8, 0x27,
-0x17, 0x1e, 0xd3, 0x56, 0xf4, 0x61, 0x3f, 0xae,
-0x7f, 0xb1, 0x42, 0x58, 0x18, 0x74, 0x40, 0xf8,
-0x27, 0xd2, 0x3f, 0x6f, 0xf5, 0x67, 0xe1, 0xd3,
-0x9f, 0xb5, 0xbd, 0xef, 0xd5, 0xe3, 0x9f, 0x82,
-0xd0, 0xff, 0xc5, 0xf0, 0x0f, 0x16, 0xe2, 0x4e,
-0x4d, 0xa9, 0x7f, 0xe5, 0xcf, 0x15, 0x95, 0xc0,
-0xa8, 0x7f, 0xfe, 0x6f, 0x3d, 0x3e, 0x84, 0xf9,
-0x9f, 0x60, 0x85, 0x9e, 0xff, 0x61, 0x7a, 0x12,
-0xa8, 0xff, 0x0b, 0xe8, 0x77, 0x33, 0xf0, 0x3f,
-0x8d, 0x26, 0xff, 0x1f, 0x85, 0xff, 0x49, 0xd1,
-0xff, 0x5c, 0x55, 0xff, 0x57, 0x56, 0xfe, 0x27,
-0x02, 0x39, 0x9b, 0x32, 0xf3, 0x3f, 0xe9, 0xfa,
-0x43, 0xb0, 0xfe, 0xa5, 0xc2, 0x00, 0x0d, 0xfe,
-0xd1, 0xd2, 0x3e, 0x10, 0xfe, 0xa9, 0xa1, 0xf8,
-0x67, 0xcd, 0xdb, 0x7d, 0x34, 0xf0, 0x53, 0xfb,
-0xbf, 0xa2, 0x63, 0xcb, 0x23, 0xc1, 0x44, 0x0a,
-0xfe, 0x79, 0x84, 0xb4, 0x9d, 0x46, 0x77, 0x5b,
-0x0b, 0xe1, 0x37, 0x4d, 0xff, 0x97, 0x36, 0x80,
-0xfb, 0xbf, 0x22, 0x7d, 0x4b, 0x15, 0x4f, 0x63,
-0x47, 0x4a, 0xff, 0x57, 0x6c, 0x84, 0xc8, 0xf9,
-0x9f, 0xbf, 0x30, 0xf1, 0x3f, 0x94, 0x1d, 0x02,
-0xf1, 0x12, 0x58, 0xff, 0x1a, 0x27, 0xa7, 0xff,
-0x34, 0xda, 0x11, 0x96, 0x52, 0xff, 0x8a, 0x8d,
-0x19, 0xa3, 0x20, 0x69, 0x04, 0xa4, 0xf2, 0x3f,
-0xb3, 0x84, 0xfe, 0x2f, 0xb5, 0x5e, 0x23, 0xe1,
-0x1f, 0x9f, 0x90, 0x3c, 0xcf, 0x8b, 0xc0, 0x40,
-0x56, 0x08, 0x4b, 0xf8, 0xc7, 0x25, 0x8b, 0xba,
-0x4c, 0xab, 0x7b, 0xe3, 0x28, 0xd9, 0x28, 0x27,
-0xe0, 0x9f, 0xaf, 0x48, 0xb6, 0x3f, 0xd7, 0x97,
-0x36, 0x40, 0xe7, 0x3b, 0x50, 0xff, 0xc2, 0xf8,
-0xf9, 0xb7, 0x89, 0xc7, 0x46, 0xcb, 0xff, 0x48,
-0x68, 0x67, 0x93, 0xf8, 0xc9, 0xce, 0x04, 0xfe,
-0x69, 0xaa, 0x30, 0xfc, 0x59, 0xf1, 0xf5, 0xea,
-0xf5, 0xcf, 0x1a, 0xfc, 0x43, 0xef, 0x07, 0xd9,
-0x69, 0xfa, 0xe4, 0x93, 0x38, 0x3f, 0xdc, 0xdf,
-0xd2, 0xe5, 0xe7, 0xbb, 0xa7, 0xad, 0x7f, 0x0d,
-0x83, 0xfd, 0x5f, 0x14, 0xed, 0x18, 0xf9, 0x1f,
-0xee, 0x7f, 0x78, 0xc1, 0x23, 0x81, 0x5a, 0x0f,
-0xe5, 0xfd, 0x5f, 0x25, 0xc6, 0x07, 0x8a, 0xcf,
-0x83, 0x81, 0xff, 0x41, 0xaa, 0xfa, 0xf7, 0x76,
-0x19, 0x18, 0xc0, 0xf5, 0xaf, 0x15, 0xf9, 0x41,
-0xe7, 0xbd, 0xdc, 0xb2, 0x93, 0x62, 0xdb, 0x3b,
-0xc4, 0xff, 0xcc, 0x8e, 0xf3, 0x33, 0x37, 0xc2,
-0x3f, 0x98, 0xf6, 0x39, 0x4c, 0x69, 0x1f, 0xd0,
-0xff, 0xc7, 0x91, 0xf1, 0x67, 0x9b, 0x98, 0x96,
-0xf9, 0x80, 0xfe, 0x79, 0x38, 0x07, 0xec, 0x27,
-0xb6, 0x5e, 0xff, 0x8c, 0x78, 0xfd, 0xcb, 0xd0,
-0xef, 0x2f, 0xea, 0x9f, 0xf9, 0x7e, 0x1e, 0xd5,
-0x5b, 0x99, 0x9f, 0x76, 0xa5, 0x84, 0x7f, 0xd8,
-0xfd, 0xd8, 0x58, 0x1d, 0xc1, 0xd0, 0xce, 0x76,
-0x18, 0xff, 0x7c, 0xc8, 0xf1, 0x0f, 0x3b, 0x8f,
-0xfe, 0x04, 0x9f, 0x3e, 0xdf, 0x97, 0xcf, 0x23,
-0x1b, 0xc0, 0x3f, 0xf4, 0xbc, 0x9b, 0x86, 0xf1,
-0x8c, 0x46, 0x28, 0xfb, 0x14, 0xc7, 0x3f, 0x88,
-0xd6, 0xb3, 0xf2, 0x86, 0x42, 0x8c, 0xdc, 0xff,
-0xc5, 0xfc, 0xfa, 0x0c, 0xf5, 0x2f, 0xba, 0x5e,
-0xa1, 0xfe, 0xa5, 0xca, 0x7e, 0xa0, 0xfe, 0xaf,
-0x6b, 0xc4, 0xfe, 0x77, 0x4b, 0x73, 0xfe, 0x9e,
-0x65, 0xfd, 0x5f, 0xc7, 0x6a, 0xb2, 0xe0, 0x81,
-0x37, 0xb8, 0x9e, 0x07, 0xf3, 0x3f, 0x76, 0x94,
-0x9f, 0xf7, 0x13, 0x97, 0x0d, 0x31, 0xff, 0x1f,
-0x81, 0xff, 0x99, 0x69, 0xac, 0x7f, 0xb9, 0x7a,
-0xff, 0x67, 0xba, 0xba, 0x59, 0xd0, 0x7a, 0x05,
-0xfd, 0xf3, 0x74, 0x96, 0xf6, 0x91, 0x4c, 0xfa,
-0x67, 0xdb, 0xbc, 0xde, 0x1c, 0xf6, 0xb7, 0x9c,
-0x2f, 0xe8, 0x9f, 0xdd, 0xfd, 0x0e, 0x65, 0xc3,
-0x3c, 0xed, 0x3f, 0x04, 0xfd, 0x7f, 0x32, 0xe1,
-0x1f, 0x64, 0x33, 0xfd, 0xcf, 0x58, 0x40, 0x6d,
-0x0f, 0xf1, 0x27, 0x3b, 0x44, 0xfc, 0x33, 0xe0,
-0xd1, 0xfd, 0xc1, 0xb9, 0x9b, 0xfd, 0xbd, 0x9c,
-0x34, 0xe1, 0x1f, 0xfa, 0x33, 0xaf, 0x5e, 0xd4,
-0xff, 0x68, 0xf0, 0x40, 0xc7, 0x00, 0xfd, 0x7a,
-0xdc, 0xff, 0xe5, 0x12, 0x90, 0xf3, 0xa2, 0x02,
-0x7b, 0x78, 0xff, 0x57, 0x23, 0xbd, 0xde, 0xe1,
-0x78, 0xa0, 0xac, 0xdf, 0xd8, 0x4f, 0xfd, 0x80,
-0xe6, 0xa7, 0xd3, 0x66, 0x22, 0xd5, 0xb3, 0x91,
-0xed, 0xcf, 0x3d, 0xa4, 0x6d, 0xf9, 0x5c, 0xdd,
-0x77, 0xf3, 0x73, 0xa8, 0x11, 0xd0, 0x50, 0xc0,
-0xf0, 0x0f, 0xfa, 0x19, 0xad, 0xd6, 0x0d, 0xf9,
-0xbf, 0x11, 0x6e, 0x1b, 0x2b, 0x2a, 0x67, 0x5b,
-0x51, 0x21, 0xfe, 0x9b, 0x82, 0xfe, 0x39, 0xe0,
-0xf8, 0x47, 0xf5, 0x6b, 0x9d, 0x4d, 0x3f, 0xe1,
-0xfd, 0x5f, 0xfe, 0x74, 0x26, 0xea, 0x50, 0xfd,
-0x6c, 0x99, 0xdf, 0x9d, 0xd0, 0xff, 0x55, 0x21,
-0xac, 0xb7, 0x57, 0x5e, 0x66, 0x75, 0x33, 0xed,
-0x88, 0xe7, 0xff, 0xbf, 0x45, 0x77, 0x24, 0x43,
-0x7e, 0xf8, 0xfd, 0x08, 0xf8, 0xe7, 0x3d, 0xad,
-0x10, 0x5a, 0x38, 0x1f, 0xb9, 0xff, 0xa1, 0xf5,
-0x94, 0x81, 0x7f, 0x60, 0xff, 0xbf, 0x01, 0x3f,
-0xef, 0xca, 0xa2, 0x10, 0x5a, 0x8b, 0x7f, 0x50,
-0x81, 0xe7, 0x47, 0x94, 0x25, 0x0c, 0x88, 0x85,
-0x30, 0x01, 0xff, 0xcc, 0x24, 0x6a, 0x9f, 0x7f,
-0x4f, 0xac, 0xf7, 0x59, 0x0d, 0xfe, 0xa9, 0x61,
-0x8b, 0x1a, 0x4d, 0x2c, 0xf3, 0x08, 0x8c, 0x7f,
-0xce, 0x5a, 0xe4, 0x21, 0x19, 0xc7, 0x6a, 0xb1,
-0x52, 0xcd, 0x18, 0xc6, 0x4b, 0xc1, 0xaa, 0xd7,
-0x35, 0xfc, 0xcf, 0xcc, 0x0b, 0xd4, 0xe4, 0xf0,
-0x4c, 0xe9, 0x97, 0xbb, 0x96, 0x8c, 0x56, 0x1f,
-0xeb, 0x98, 0xf0, 0xcd, 0xfc, 0x0f, 0x5d, 0xa6,
-0xb7, 0x8f, 0x08, 0xbf, 0x85, 0xbf, 0x2f, 0x3b,
-0x89, 0x7f, 0x2a, 0x0e, 0xf1, 0xb4, 0xeb, 0xfd,
-0x27, 0x39, 0xfe, 0x99, 0xb1, 0xd5, 0x61, 0x68,
-0xf0, 0x7c, 0x5c, 0x0d, 0xc4, 0x69, 0x99, 0x23,
-0x01, 0x63, 0xfe, 0xff, 0x2b, 0xf4, 0x7f, 0x9d,
-0x89, 0xfc, 0x30, 0x7b, 0xa3, 0xfc, 0x58, 0x26,
-0xfc, 0xc3, 0xf4, 0xe7, 0xaf, 0x91, 0x36, 0x28,
-0x3b, 0x9a, 0xf8, 0xa0, 0xa9, 0x7f, 0x15, 0x82,
-0x5e, 0x6a, 0xfb, 0xd3, 0x6b, 0x2f, 0x09, 0x83,
-0x06, 0xee, 0xff, 0x33, 0x1d, 0xc0, 0x3f, 0x98,
-0x7f, 0x8e, 0xf9, 0x8a, 0x2c, 0xfe, 0xcf, 0x9d,
-0xee, 0xed, 0x8a, 0xfb, 0x9f, 0x80, 0x07, 0xae,
-0x53, 0xf5, 0x3f, 0x37, 0xa3, 0xdf, 0x05, 0xcb,
-0x62, 0xb4, 0x73, 0xab, 0x2b, 0xc0, 0x9e, 0xa9,
-0x2d, 0xf3, 0x5f, 0x88, 0x47, 0x63, 0x24, 0xfd,
-0x9f, 0x71, 0xf6, 0x28, 0x3e, 0x4c, 0x36, 0x82,
-0x59, 0x49, 0xfc, 0x13, 0xbb, 0xb3, 0x96, 0x6b,
-0x48, 0xfe, 0x07, 0xc3, 0xb4, 0x5f, 0x09, 0xce,
-0x47, 0x2f, 0x26, 0xf3, 0x19, 0x23, 0x94, 0x9c,
-0x7f, 0xb1, 0xa4, 0xe4, 0x6c, 0xb3, 0xc6, 0x8b,
-0xf7, 0xd8, 0xcd, 0xa7, 0xc2, 0xe0, 0x79, 0x5f,
-0xd5, 0xff, 0xd0, 0xeb, 0xbd, 0x08, 0xff, 0x2c,
-0x89, 0xd8, 0x9e, 0xe0, 0x00, 0xe1, 0xbb, 0xa2,
-0x80, 0xf1, 0x3f, 0xeb, 0xe5, 0xf9, 0x17, 0x02,
-0xda, 0xa1, 0x46, 0xd0, 0x80, 0xfe, 0x87, 0x5e,
-0x3f, 0x4c, 0xe6, 0x5f, 0x44, 0x63, 0x2f, 0xde,
-0x0a, 0x83, 0x5a, 0x29, 0x78, 0x55, 0xe9, 0xff,
-0xca, 0xed, 0x8d, 0xe6, 0x5f, 0xd4, 0x46, 0x32,
-0x98, 0x24, 0xfe, 0x31, 0xce, 0xbf, 0xc0, 0xf8,
-0x67, 0xe5, 0x6a, 0xa1, 0xbe, 0x63, 0xe1, 0x60,
-0x4e, 0x18, 0xe4, 0x44, 0xfe, 0xe7, 0x6f, 0x11,
-0x9e, 0xa7, 0xb0, 0x9e, 0xd2, 0x38, 0x35, 0xd2,
-0xf9, 0xfb, 0xe5, 0x24, 0xfe, 0x59, 0x51, 0xb1,
-0xd0, 0x67, 0xbf, 0x7d, 0x50, 0xe9, 0x7f, 0x7f,
-0x30, 0x97, 0xe8, 0x7f, 0x6f, 0x72, 0x6d, 0xc6,
-0xf6, 0x14, 0xef, 0x43, 0xcd, 0xeb, 0x2a, 0x21,
-0x3e, 0xe4, 0x29, 0x76, 0xfd, 0xb1, 0x02, 0x56,
-0x17, 0xe3, 0x45, 0xcd, 0x2f, 0x07, 0x2f, 0x93,
-0x42, 0x18, 0xf7, 0xff, 0xe9, 0x4a, 0xe2, 0x9f,
-0x3d, 0x02, 0x1f, 0x52, 0xfc, 0x1f, 0xd9, 0xef,
-0xfa, 0x56, 0xf6, 0xab, 0x37, 0x25, 0xff, 0xe7,
-0x57, 0xe8, 0xf5, 0xcf, 0x27, 0x1b, 0xc1, 0x68,
-0x20, 0xf8, 0xff, 0xcc, 0xc4, 0xb6, 0xcf, 0x6d,
-0xb9, 0xc8, 0xff, 0xe7, 0x20, 0x5a, 0xec, 0x62,
-0xd8, 0xe3, 0x2b, 0xf8, 0x67, 0x8a, 0x88, 0x7f,
-0x28, 0xcd, 0x55, 0xdc, 0x81, 0x9a, 0x6f, 0xac,
-0x76, 0x1b, 0xf1, 0x32, 0x9b, 0x74, 0xf8, 0xc7,
-0xde, 0x1f, 0xa6, 0x7d, 0x51, 0x4c, 0xfb, 0x68,
-0xeb, 0x89, 0x6f, 0x70, 0xff, 0x9f, 0xbf, 0xea,
-0x27, 0xf7, 0x3f, 0xed, 0x9c, 0xfd, 0x0c, 0xb7,
-0x75, 0x6a, 0x93, 0xf1, 0x8f, 0xc7, 0xf8, 0xcf,
-0x88, 0xff, 0x89, 0x7e, 0xbb, 0x99, 0xe8, 0x85,
-0x72, 0x9b, 0x93, 0xf8, 0x67, 0x1a, 0xe7, 0x1b,
-0x1d, 0xb7, 0xd8, 0x49, 0x69, 0x37, 0x6b, 0x20,
-0x0b, 0xff, 0xd3, 0xe6, 0xb0, 0x6e, 0x77, 0x6c,
-0xfb, 0xb3, 0x1e, 0xe2, 0x7f, 0xc4, 0xfe, 0xf7,
-0x0d, 0x44, 0xff, 0x13, 0x1e, 0x5b, 0xdd, 0x31,
-0x5f, 0xa1, 0x32, 0x42, 0x1c, 0xff, 0x04, 0x0c,
-0xff, 0x4c, 0x39, 0xa3, 0xfc, 0xd9, 0x02, 0xf8,
-0xa7, 0xc7, 0xb9, 0x3f, 0xd6, 0xff, 0x84, 0x68,
-0xc7, 0x7f, 0x7a, 0xc7, 0x0d, 0xe5, 0x0d, 0x5d,
-0x6b, 0xcc, 0xf8, 0xa7, 0x18, 0xee, 0x96, 0xb1,
-0x7a, 0x70, 0xf7, 0xf5, 0x48, 0xd3, 0x08, 0x76,
-0x6a, 0x0a, 0x5d, 0xaf, 0x6f, 0x1f, 0x45, 0xa7,
-0xfb, 0x62, 0xff, 0x1f, 0xff, 0xe9, 0xbe, 0xd6,
-0xf8, 0x45, 0x3e, 0xc2, 0x3f, 0x5d, 0x91, 0x10,
-0x3a, 0x0a, 0x5c, 0x96, 0xff, 0x83, 0x33, 0xfb,
-0xd0, 0xaf, 0x8b, 0x91, 0xff, 0x0f, 0xf6, 0x2f,
-0x9a, 0x57, 0xaa, 0xfe, 0x2e, 0xc5, 0x3f, 0xdb,
-0x22, 0x85, 0x46, 0x18, 0x7c, 0xb3, 0x63, 0x91,
-0xc0, 0xff, 0xf4, 0xc5, 0xb6, 0x3f, 0x98, 0x2f,
-0xba, 0x47, 0x90, 0x3d, 0x4b, 0x0a, 0x46, 0x4f,
-0xf0, 0x7f, 0x0e, 0x44, 0xb7, 0xd5, 0x26, 0x31,
-0x8d, 0x1d, 0xec, 0xe8, 0x9f, 0x29, 0xf4, 0xbf,
-0xf7, 0xa0, 0xe7, 0x72, 0x91, 0x69, 0xcf, 0xf8,
-0x94, 0xe7, 0xd0, 0x47, 0xa2, 0x8d, 0x33, 0x56,
-0x54, 0xc6, 0x41, 0x95, 0xd0, 0x0f, 0x1b, 0xc3,
-0x00, 0x92, 0x96, 0xbf, 0x4e, 0xc3, 0x3f, 0x45,
-0xf7, 0xa2, 0xe2, 0x7e, 0x73, 0x26, 0xe2, 0x7f,
-0x6a, 0x40, 0xfc, 0xb3, 0xd7, 0xde, 0xe4, 0xab,
-0xc7, 0x6e, 0xf2, 0x13, 0x01, 0xff, 0xdc, 0xe4,
-0x79, 0xea, 0xf5, 0x06, 0xfe, 0x67, 0x3a, 0x42,
-0xfb, 0xd6, 0x36, 0x9f, 0x8a, 0xf0, 0x00, 0x15,
-0x06, 0xe3, 0x27, 0x70, 0x20, 0x4e, 0x94, 0x9f,
-0xc0, 0x3f, 0x41, 0xb8, 0xff, 0x9c, 0xef, 0x8c,
-0x9a, 0xbc, 0xc6, 0x83, 0x58, 0xff, 0x13, 0x2e,
-0x33, 0x3c, 0xf1, 0x4f, 0x85, 0x27, 0xce, 0xdb,
-0x6b, 0x2f, 0xf9, 0x49, 0xfc, 0x53, 0xd1, 0xc7,
-0xf5, 0x51, 0xbf, 0xb5, 0x56, 0x9d, 0x24, 0x83,
-0x9c, 0xe2, 0xf3, 0x2b, 0xc0, 0xa3, 0x31, 0x24,
-0xfc, 0x83, 0x50, 0xf8, 0x1e, 0xb8, 0x37, 0xdc,
-0x0e, 0xa2, 0x3e, 0x10, 0x5d, 0x80, 0xc4, 0x1f,
-0x1b, 0x85, 0x77, 0xe7, 0x87, 0x3b, 0xb0, 0x21,
-0x10, 0x7f, 0x76, 0xa1, 0x79, 0xc8, 0xf1, 0xc3,
-0x1d, 0xd2, 0x10, 0x5c, 0xcd, 0xf7, 0x07, 0xe1,
-0x7f, 0xb6, 0x83, 0x2c, 0x63, 0x20, 0xfc, 0x98,
-0x2f, 0x8c, 0x83, 0xab, 0xf9, 0xfe, 0xc9, 0xfe,
-0x7c, 0xc6, 0xf2, 0xef, 0xe2, 0x59, 0x7e, 0x83,
-0xe8, 0xdb, 0x68, 0x76, 0xc9, 0x10, 0xd8, 0x1f,
-0xfb, 0xfb, 0x3f, 0xe1, 0xfc, 0xdb, 0x6e, 0x90,
-0x21, 0xe7, 0x39, 0x81, 0x5f, 0x9a, 0xdc, 0xcf,
-0xca, 0x95, 0x59, 0xae, 0xaa, 0xab, 0xfb, 0x98,
-0x5f, 0xff, 0x07, 0xf8, 0x59, 0x35, 0x31, 0x31,
-0x51, 0x4a, 0x09, 0xfe, 0x3f, 0x5f, 0xff, 0x19,
-0xfb, 0x7b, 0xfc, 0x7c, 0x3f, 0xfc, 0x7c, 0x3f,
-0xbc, 0x8a, 0xfc, 0x7f, 0xbe, 0x1f, 0xa6, 0xfd,
-0x7c, 0xd6, 0xf6, 0x9f, 0xcf, 0xd6, 0xf5, 0xa2,
-0x3f, 0x36, 0x7e, 0x9b, 0x50, 0x02, 0x6d, 0x7d,
-0xb0, 0x91, 0x06, 0x0d, 0x46, 0x7d, 0x38, 0xda,
-0x5d, 0xaf, 0xa3, 0x9d, 0x3b, 0xc0, 0xfa, 0xa0,
-0xa1, 0x2c, 0x08, 0xf0, 0x63, 0x39, 0xa1, 0x7e,
-0x17, 0x15, 0x52, 0xab, 0xa1, 0xf7, 0x05, 0x01,
-0xff, 0x27, 0xfc, 0x21, 0x95, 0x60, 0xae, 0xb6,
-0x3e, 0xc8, 0x02, 0xb5, 0x3f, 0x11, 0xaa, 0x0f,
-0xe6, 0x13, 0x65, 0xc1, 0x5e, 0x9d, 0x3f, 0x64,
-0x8e, 0xb1, 0xc7, 0x59, 0xea, 0x83, 0xb4, 0x3f,
-0x6e, 0xcc, 0x22, 0x83, 0x62, 0xb7, 0xf3, 0xb1,
-0xb0, 0xa6, 0xfa, 0xe0, 0xe1, 0x78, 0x2c, 0x08,
-0x6e, 0x8b, 0xbb, 0x25, 0xf6, 0x87, 0x5c, 0x01,
-0xd6, 0x07, 0x05, 0x7d, 0x14, 0x8a, 0xdc, 0x90,
-0x04, 0x59, 0x38, 0x50, 0x1f, 0x6c, 0xb2, 0x0f,
-0xa1, 0xd7, 0xe0, 0xb2, 0xa9, 0x60, 0x94, 0x24,
-0xf0, 0x63, 0xae, 0x5e, 0x6f, 0xe0, 0xce, 0x36,
-0xd5, 0x07, 0xbf, 0xa8, 0xca, 0xa2, 0x58, 0xa9,
-0x54, 0xac, 0x0f, 0xee, 0xd6, 0xa7, 0xb1, 0xa0,
-0xf2, 0x63, 0xd8, 0x1f, 0xe9, 0x55, 0xb4, 0x1c,
-0x2c, 0x0b, 0x72, 0xa3, 0x24, 0xad, 0x3f, 0x52,
-0x06, 0x7e, 0x4c, 0xa8, 0xfe, 0x7c, 0x9d, 0xd3,
-0x20, 0x8b, 0x53, 0xfb, 0xe3, 0x90, 0x3a, 0x16,
-0x4d, 0xe0, 0xc7, 0xe8, 0xf5, 0x42, 0x7d, 0x70,
-0x73, 0xc4, 0x8f, 0xc9, 0x7c, 0xce, 0x83, 0x8a,
-0x3f, 0x64, 0xa6, 0xfe, 0x38, 0xce, 0x8f, 0x75,
-0x55, 0x0a, 0xf5, 0x41, 0x6a, 0xcb, 0xec, 0xe8,
-0xeb, 0x83, 0x09, 0x7f, 0x48, 0x1a, 0x54, 0xc8,
-0x9f, 0xbc, 0x99, 0xd0, 0x87, 0x83, 0x65, 0x32,
-0xc1, 0x58, 0xc0, 0xd8, 0x1f, 0xd7, 0xa8, 0x04,
-0x62, 0x7d, 0xb0, 0x62, 0x97, 0x58, 0x0f, 0x6d,
-0x02, 0xd6, 0x5b, 0x25, 0xcd, 0x87, 0x9d, 0x6e,
-0x28, 0xcb, 0x02, 0xf5, 0xc1, 0x87, 0x45, 0x7d,
-0xd4, 0x71, 0x46, 0x8b, 0x25, 0xf5, 0x51, 0x0b,
-0x58, 0x7d, 0x10, 0xd4, 0x47, 0x1d, 0x4f, 0x04,
-0x52, 0x7d, 0x30, 0xe2, 0x63, 0xe7, 0x64, 0xac,
-0x0f, 0x7a, 0x15, 0x89, 0x69, 0x20, 0x75, 0x29,
-0xfc, 0x18, 0x9e, 0xa7, 0x6c, 0x6d, 0x4d, 0xd1,
-0x6f, 0x08, 0xf5, 0x41, 0x24, 0xe9, 0xa3, 0xbe,
-0x91, 0x5a, 0x1f, 0xec, 0x89, 0xfd, 0xb1, 0x6b,
-0xa3, 0x69, 0xb0, 0x19, 0xea, 0x83, 0xb3, 0x13,
-0x7a, 0x0f, 0x50, 0xff, 0x23, 0xf0, 0x63, 0x15,
-0x4c, 0xdf, 0xfb, 0x7d, 0x3c, 0x0d, 0x56, 0x3a,
-0xb6, 0xd8, 0xaf, 0x86, 0x18, 0x3f, 0xf6, 0x2f,
-0xf5, 0xbf, 0xe8, 0x21, 0x77, 0x7b, 0x1b, 0xfa,
-0x69, 0x31, 0xf2, 0x47, 0x7a, 0x21, 0x20, 0x46,
-0x49, 0x67, 0xef, 0x8e, 0xad, 0x9f, 0x3a, 0x24,
-0x7f, 0xc8, 0x1d, 0x7c, 0x75, 0x1e, 0xd3, 0x83,
-0x2d, 0x94, 0x84, 0x61, 0x49, 0x7f, 0xc8, 0x34,
-0x3d, 0x8c, 0x50, 0x1f, 0x9c, 0x7e, 0x88, 0xca,
-0xa2, 0xc2, 0xd5, 0x45, 0x65, 0x17, 0x32, 0x16,
-0xe4, 0x47, 0xc2, 0x7a, 0x9f, 0x15, 0xf8, 0x31,
-0xe1, 0x18, 0xd2, 0xea, 0x51, 0xc5, 0xfa, 0xa0,
-0xf1, 0xbc, 0x7b, 0x52, 0xad, 0x0f, 0x36, 0xeb,
-0xc7, 0x52, 0x40, 0xfc, 0x98, 0xa8, 0x07, 0x96,
-0x82, 0xe7, 0xf0, 0x84, 0x35, 0x50, 0x1f, 0xfe,
-0x63, 0x5a, 0x0f, 0x7a, 0xc4, 0x61, 0x63, 0x41,
-0xc2, 0xb4, 0x2c, 0x23, 0xfe, 0xd8, 0x49, 0x7d,
-0x54, 0xc0, 0x57, 0x57, 0x6c, 0xff, 0x4f, 0xdc,
-0x16, 0x17, 0x7e, 0x32, 0x67, 0x88, 0x04, 0x8a,
-0x3e, 0xfc, 0x72, 0xfd, 0x93, 0xe8, 0x8f, 0xd9,
-0xf9, 0x35, 0x5c, 0x77, 0xb1, 0x3b, 0x1a, 0x0b,
-0xf2, 0x6c, 0xdd, 0xc5, 0x58, 0xf1, 0x92, 0xa8,
-0x0f, 0xde, 0x2d, 0x3e, 0x2d, 0xde, 0xaa, 0x73,
-0xb5, 0x66, 0x7d, 0x54, 0xc9, 0x11, 0xd0, 0xce,
-0x93, 0x43, 0xcd, 0x25, 0x07, 0xea, 0x8f, 0x1b,
-0x65, 0xfb, 0xf3, 0x00, 0xda, 0x6d, 0xe3, 0x7e,
-0x25, 0xf6, 0xbf, 0x5f, 0xa5, 0x04, 0xe1, 0xaf,
-0x2e, 0x72, 0x7d, 0xb8, 0x2d, 0xe9, 0xa3, 0x9a,
-0x4b, 0xa0, 0xde, 0x9e, 0xeb, 0xc3, 0xeb, 0x93,
-0xfa, 0x70, 0xf0, 0xef, 0xe5, 0x1c, 0xc3, 0x4b,
-0xc5, 0x7a, 0xf1, 0x79, 0xc8, 0xe9, 0xf4, 0x51,
-0x6c, 0xff, 0x19, 0x72, 0x0f, 0xf1, 0x7e, 0x84,
-0x77, 0xc4, 0xef, 0xaf, 0x85, 0xf1, 0xcf, 0x4d,
-0xc2, 0xf3, 0xf0, 0x64, 0xe4, 0x6f, 0xd9, 0xc1,
-0xef, 0xdf, 0x25, 0xc1, 0x07, 0xec, 0x79, 0x10,
-0xf4, 0x51, 0x6a, 0x5a, 0x00, 0xfc, 0x33, 0xea,
-0x72, 0x7d, 0x78, 0x14, 0x38, 0xdb, 0xa7, 0xa8,
-0x7a, 0xa1, 0x71, 0x8e, 0x7f, 0x66, 0xd6, 0xa2,
-0xf7, 0xdc, 0x95, 0xa5, 0xd3, 0x2d, 0xd3, 0x5e,
-0x70, 0x7e, 0x17, 0xa2, 0x9d, 0xda, 0x36, 0x6e,
-0x8b, 0xfd, 0x42, 0xf8, 0x6e, 0x87, 0xf1, 0xcf,
-0x1d, 0x2f, 0xb2, 0xc7, 0xcd, 0x9f, 0x7e, 0x02,
-0x5d, 0x62, 0xfd, 0x95, 0x0e, 0x4f, 0x4b, 0x7f,
-0xdc, 0xa1, 0xa9, 0xd4, 0x07, 0x05, 0x7f, 0x72,
-0xc0, 0xa8, 0x81, 0x14, 0x52, 0x05, 0x7d, 0xb8,
-0x23, 0xe2, 0x1f, 0xdd, 0x7c, 0xc9, 0x8b, 0x0b,
-0xe8, 0xf7, 0x7b, 0x92, 0x3e, 0xea, 0x07, 0x90,
-0x3e, 0x6a, 0x7d, 0x57, 0x43, 0x99, 0xe1, 0xd5,
-0x2d, 0x76, 0x8c, 0x7f, 0xf2, 0xc6, 0xfd, 0x87,
-0xeb, 0xc3, 0xcb, 0xd3, 0xb1, 0x3e, 0x7c, 0x0e,
-0x2c, 0x8b, 0x02, 0xfd, 0x21, 0x05, 0xbd, 0xca,
-0x68, 0x16, 0x7d, 0xf8, 0x7e, 0xa2, 0xff, 0x89,
-0xce, 0x3b, 0xcd, 0xfc, 0x50, 0x11, 0xff, 0x2c,
-0x70, 0x85, 0xd3, 0xb6, 0x11, 0x3e, 0x7f, 0x85,
-0xfa, 0xe0, 0x4d, 0x0b, 0xec, 0xf4, 0xeb, 0xb9,
-0x3e, 0xbc, 0x69, 0xba, 0x88, 0x7f, 0x9a, 0x8a,
-0x1a, 0x7d, 0x14, 0xdb, 0x7f, 0xba, 0xae, 0xed,
-0x74, 0xe9, 0x7c, 0x58, 0x7b, 0xcc, 0x5b, 0x0a,
-0xcf, 0x27, 0xbd, 0xc0, 0xf6, 0x9f, 0x63, 0x33,
-0xf8, 0x18, 0x14, 0x5c, 0x38, 0x5b, 0x47, 0x96,
-0xb9, 0x3c, 0x56, 0x88, 0x91, 0x5f, 0x7d, 0xc0,
-0xf6, 0x9f, 0x15, 0x04, 0xff, 0xd4, 0xe0, 0x7a,
-0xd9, 0x2b, 0x68, 0xe9, 0xc6, 0x5a, 0x50, 0x4f,
-0xc5, 0xf5, 0x51, 0x4e, 0x31, 0xf6, 0x87, 0x8c,
-0xf1, 0x4f, 0x23, 0x72, 0x82, 0x06, 0x05, 0x11,
-0x35, 0x9c, 0xe5, 0xf8, 0xc7, 0x16, 0xf5, 0x51,
-0xbe, 0xe7, 0xff, 0x50, 0x5a, 0xef, 0x7d, 0xc9,
-0xfa, 0xe0, 0x1e, 0x7b, 0xbf, 0x50, 0x16, 0xcc,
-0x3d, 0xac, 0xf1, 0x1b, 0x17, 0xf4, 0x51, 0xfb,
-0x39, 0x7a, 0xf9, 0x30, 0xd7, 0xe0, 0xff, 0x02,
-0xb8, 0xff, 0x1c, 0x9f, 0x0f, 0x3b, 0x20, 0xd6,
-0x8b, 0xdf, 0xb5, 0x71, 0xf5, 0x50, 0xbd, 0x7e,
-0xcd, 0x47, 0xcc, 0x1f, 0xdb, 0x49, 0xfa, 0x03,
-0xa4, 0xcc, 0x87, 0x75, 0xb8, 0x3e, 0x8a, 0xb9,
-0x61, 0x53, 0xd8, 0xd3, 0x08, 0xe0, 0x1f, 0xc7,
-0x96, 0xaa, 0x81, 0x8b, 0x75, 0xf8, 0x87, 0xfe,
-0xff, 0x22, 0x57, 0xf8, 0x6b, 0xbd, 0x4e, 0x9a,
-0xaf, 0x2a, 0xea, 0xc3, 0x99, 0x3f, 0xb6, 0xb3,
-0xe7, 0x76, 0x09, 0xed, 0xbc, 0x55, 0x47, 0xeb,
-0x83, 0x53, 0xa5, 0xf9, 0x68, 0xf4, 0xeb, 0x05,
-0x7d, 0x94, 0xa1, 0xff, 0x5d, 0xd0, 0x47, 0xed,
-0x7a, 0x62, 0x23, 0xc7, 0x3f, 0x61, 0x50, 0xe0,
-0xc7, 0xd6, 0xb4, 0x2b, 0x0e, 0x3d, 0xbf, 0xb8,
-0x3e, 0xca, 0xd9, 0x8d, 0x37, 0x0d, 0x7a, 0xb7,
-0x4b, 0x4a, 0x55, 0x5f, 0xe2, 0xfd, 0x71, 0x83,
-0xb1, 0x50, 0x53, 0xd4, 0x47, 0x21, 0xf4, 0x33,
-0xfb, 0x3a, 0x71, 0x75, 0x60, 0x63, 0x6f, 0x3f,
-0xd7, 0x47, 0xd9, 0xe2, 0xfb, 0x97, 0xad, 0xd1,
-0x87, 0x8b, 0xfa, 0xa8, 0x70, 0x51, 0x71, 0x7d,
-0x70, 0xc4, 0x7e, 0x3c, 0xdc, 0x5d, 0xc1, 0xf9,
-0x0e, 0xaf, 0xf2, 0xe7, 0xad, 0x5e, 0xc9, 0xcf,
-0xb4, 0x11, 0x57, 0x39, 0xef, 0xd8, 0xfe, 0x33,
-0xcf, 0x3d, 0xe1, 0xb0, 0xd3, 0x0d, 0xeb, 0xa3,
-0xaa, 0xa1, 0xf3, 0x6e, 0x94, 0xdd, 0xcf, 0xde,
-0x4c, 0xfe, 0x90, 0xe7, 0xd8, 0xfe, 0x13, 0x54,
-0x28, 0xd7, 0x63, 0x7d, 0x54, 0x4e, 0x5b, 0x1f,
-0x74, 0x0b, 0xbe, 0x38, 0x16, 0xa4, 0x14, 0x0d,
-0xa6, 0x21, 0xf3, 0xbb, 0x99, 0x42, 0x58, 0xc0,
-0x3f, 0x7b, 0x88, 0x3f, 0xc0, 0xe1, 0xfc, 0xdb,
-0xf1, 0xfb, 0xf8, 0x91, 0x58, 0xff, 0xd3, 0x4f,
-0x3e, 0x89, 0xf1, 0x1e, 0xc7, 0x3f, 0x33, 0x70,
-0x19, 0x31, 0x5e, 0x5d, 0x31, 0xb6, 0x05, 0xc8,
-0xcb, 0xfe, 0xd8, 0x49, 0x7d, 0x14, 0x01, 0xc9,
-0x2f, 0xcb, 0xb6, 0xea, 0x5a, 0xfc, 0xb3, 0x87,
-0x80, 0x9c, 0xfb, 0xad, 0x7f, 0x53, 0x60, 0x0f,
-0xc0, 0xff, 0x84, 0xf8, 0x27, 0x5e, 0x54, 0x71,
-0xa7, 0x81, 0xdf, 0xe0, 0xfc, 0x4f, 0xd9, 0x3e,
-0x14, 0x83, 0x84, 0xa2, 0x65, 0x10, 0x8a, 0x73,
-0xfe, 0x67, 0xf5, 0x0c, 0xa2, 0x56, 0x7a, 0x00,
-0xb0, 0x65, 0xe6, 0xfd, 0x71, 0xaa, 0x3f, 0xf6,
-0x8b, 0x39, 0x83, 0x3f, 0x12, 0xc7, 0x3f, 0xfd,
-0x94, 0xff, 0x79, 0xb4, 0xda, 0xf0, 0x87, 0x09,
-0xf8, 0x63, 0xb7, 0x00, 0xb6, 0x5a, 0x40, 0x7f,
-0x5c, 0x89, 0xed, 0x3f, 0x55, 0x99, 0xf8, 0x9f,
-0x51, 0xf7, 0x76, 0x85, 0xfd, 0x30, 0xf7, 0xc7,
-0xdd, 0x12, 0x93, 0x3c, 0x27, 0xf8, 0x58, 0x58,
-0xa3, 0x3e, 0x7c, 0xc6, 0x09, 0xff, 0x49, 0x2e,
-0x8b, 0x12, 0xfb, 0x35, 0x34, 0xfc, 0x0f, 0x71,
-0xa3, 0xea, 0x33, 0xe5, 0x5f, 0xe0, 0x7f, 0x66,
-0x12, 0xfc, 0xb3, 0x11, 0xb0, 0xc5, 0xd6, 0xe8,
-0xc3, 0x0f, 0x04, 0x5c, 0x06, 0x9f, 0xa6, 0x0f,
-0xa7, 0xfa, 0xa8, 0xea, 0x13, 0x3f, 0x34, 0x34,
-0xfe, 0x88, 0xfc, 0x4f, 0xac, 0x86, 0xaa, 0x7b,
-0x2b, 0xbf, 0x85, 0x0b, 0xc5, 0x71, 0x30, 0x17,
-0xd6, 0x87, 0xe7, 0x8a, 0x94, 0xf6, 0x31, 0x08,
-0x77, 0x25, 0xfc, 0xe3, 0xe2, 0xb6, 0xb8, 0x0d,
-0xf7, 0xe5, 0x17, 0x24, 0x8c, 0xa0, 0x35, 0xfa,
-0x70, 0xc2, 0xff, 0xec, 0xc9, 0x67, 0xf2, 0xc7,
-0x5e, 0x51, 0x21, 0xf0, 0x3f, 0x19, 0xfc, 0x91,
-0x38, 0xfe, 0x99, 0x92, 0xc9, 0x1f, 0xbb, 0xab,
-0x86, 0xcc, 0x07, 0x41, 0xd5, 0x9c, 0x08, 0xaa,
-0xd4, 0xfb, 0x63, 0x33, 0x7d, 0xd4, 0x8b, 0xdd,
-0x26, 0x7d, 0xb8, 0xca, 0xff, 0x40, 0xb6, 0x90,
-0x10, 0xff, 0x33, 0x93, 0x80, 0x9c, 0x2a, 0x4b,
-0x1d, 0x0b, 0x02, 0xf1, 0x3f, 0x68, 0x17, 0xd1,
-0x83, 0xdd, 0x6f, 0x3b, 0xda, 0xf5, 0xca, 0xf8,
-0x27, 0x4a, 0x5a, 0xbd, 0xc9, 0x6f, 0x5c, 0xf2,
-0xc7, 0x8e, 0x6d, 0x9d, 0xee, 0x07, 0xc6, 0x82,
-0x00, 0xfd, 0x71, 0x58, 0x1f, 0x75, 0x5c, 0x77,
-0x19, 0xa0, 0x0f, 0x77, 0xa8, 0x3e, 0x7c, 0x57,
-0xde, 0x23, 0x42, 0xb5, 0x8c, 0xfd, 0x71, 0x56,
-0x1c, 0xf4, 0xa6, 0xf4, 0xc7, 0x71, 0xfc, 0x63,
-0xd8, 0x7f, 0xb8, 0x3f, 0x76, 0xe0, 0xde, 0x96,
-0xe1, 0xef, 0x97, 0xfb, 0x63, 0xf7, 0xf4, 0xdc,
-0x9e, 0x8b, 0x40, 0xce, 0xd7, 0xab, 0x55, 0x5b,
-0x48, 0x68, 0x3e, 0x2c, 0xc5, 0x3f, 0x8f, 0x19,
-0xf1, 0x0f, 0xef, 0x8f, 0xe3, 0xfa, 0xf0, 0xf6,
-0xb8, 0xbf, 0x29, 0xd6, 0x47, 0xad, 0x3a, 0x47,
-0x83, 0xb2, 0x3c, 0x1f, 0x96, 0xee, 0x3f, 0x2e,
-0xbd, 0xff, 0x3b, 0xe3, 0xdb, 0x2e, 0xd3, 0xa0,
-0x24, 0xf7, 0xc7, 0x05, 0xe4, 0xfa, 0xaf, 0x55,
-0xc9, 0xeb, 0x1d, 0xd0, 0xf4, 0xc7, 0x71, 0xfc,
-0x23, 0xe4, 0xb3, 0x35, 0x91, 0x4f, 0xb1, 0x3f,
-0x8e, 0x2d, 0x8a, 0xef, 0x9f, 0x05, 0xce, 0x08,
-0xa1, 0x68, 0x02, 0x9a, 0xe0, 0x8f, 0x9d, 0x23,
-0xf9, 0xe9, 0x4b, 0xa6, 0xe5, 0xb4, 0xc4, 0xff,
-0xd0, 0xfb, 0x67, 0xf8, 0x67, 0x08, 0x18, 0x0b,
-0x02, 0xea, 0xa3, 0x08, 0x9e, 0x69, 0x61, 0x63,
-0xd9, 0x1b, 0xd5, 0xf3, 0x0b, 0xf4, 0x47, 0x32,
-0x9c, 0x77, 0xa2, 0x3e, 0x8a, 0xa4, 0xe5, 0x01,
-0x9a, 0x9f, 0xa5, 0xb1, 0x2d, 0xb6, 0x4e, 0x1f,
-0xfe, 0x0f, 0x5b, 0xfd, 0x68, 0x51, 0x7f, 0x49,
-0xf3, 0x73, 0x8c, 0xbc, 0x68, 0x8b, 0x46, 0x40,
-0x25, 0x11, 0xff, 0xf4, 0xc9, 0xab, 0x7b, 0x3f,
-0x4f, 0x26, 0xa6, 0xbd, 0x0b, 0xe3, 0x1f, 0x15,
-0xed, 0x08, 0x41, 0xec, 0x0f, 0x79, 0x87, 0xae,
-0x3f, 0xae, 0x29, 0x15, 0xff, 0x88, 0xfe, 0x00,
-0xd3, 0xc9, 0xf4, 0x5b, 0xfa, 0x49, 0x43, 0xb4,
-0xf0, 0x78, 0xbd, 0xec, 0x7e, 0xea, 0xf5, 0xb0,
-0xa7, 0x01, 0xe0, 0x7f, 0x10, 0x30, 0x1f, 0x04,
-0xa8, 0x7f, 0x65, 0xf0, 0x87, 0x9c, 0x6b, 0xf2,
-0x47, 0x2a, 0x11, 0xfd, 0xf9, 0x52, 0xf9, 0xfb,
-0xdd, 0x3b, 0x55, 0x7d, 0xb8, 0xf0, 0x18, 0x9c,
-0x8f, 0xa7, 0x99, 0xa4, 0xfb, 0x23, 0x91, 0xb4,
-0xec, 0x8b, 0xdd, 0xe3, 0x59, 0xc6, 0x76, 0xab,
-0xf8, 0x47, 0x9a, 0x8f, 0x76, 0x40, 0x68, 0x9c,
-0xe7, 0xc1, 0x2c, 0x09, 0xff, 0xac, 0x2d, 0x38,
-0x0c, 0xed, 0x9c, 0x47, 0x2d, 0x49, 0xfc, 0x73,
-0x18, 0xf6, 0x47, 0xa2, 0x69, 0x79, 0xbc, 0x44,
-0xda, 0xe2, 0x88, 0xe2, 0x4e, 0xf5, 0x07, 0x98,
-0x71, 0x41, 0x1c, 0x6b, 0xb8, 0xbc, 0xb4, 0x41,
-0x68, 0x8b, 0x83, 0xfc, 0x01, 0xae, 0x39, 0xc1,
-0xdb, 0x4c, 0x7e, 0xaa, 0x31, 0x0a, 0x90, 0xfc,
-0x01, 0x9e, 0x10, 0x65, 0xf0, 0xd0, 0x7a, 0xb1,
-0x3f, 0x00, 0xe3, 0x7f, 0xd6, 0xda, 0x82, 0x1a,
-0xfc, 0xa1, 0x44, 0x3e, 0x35, 0xfe, 0x00, 0x82,
-0x1b, 0x24, 0x5c, 0x08, 0xfb, 0x3d, 0xcd, 0x87,
-0x25, 0x34, 0x48, 0x0a, 0xff, 0x23, 0xc1, 0x18,
-0x81, 0xcf, 0xe9, 0xcd, 0xe2, 0x0f, 0xf9, 0x45,
-0xe9, 0x98, 0x8e, 0x8f, 0xf2, 0x59, 0x06, 0x7f,
-0x48, 0x2f, 0x0d, 0xff, 0x48, 0xf3, 0x61, 0x47,
-0xd1, 0x72, 0x71, 0x99, 0x6b, 0x00, 0xfe, 0x27,
-0xae, 0x7f, 0xd1, 0xea, 0x5e, 0x93, 0x4c, 0x6b,
-0x98, 0xf0, 0x8f, 0x09, 0x0f, 0xdc, 0xf1, 0x86,
-0xa6, 0xfe, 0xe5, 0x01, 0xf8, 0x27, 0x67, 0x98,
-0x0f, 0xeb, 0x24, 0xf0, 0x8f, 0x7d, 0xf5, 0xfe,
-0x90, 0xc9, 0xf9, 0x68, 0x3f, 0x92, 0xea, 0x59,
-0x44, 0xef, 0xcd, 0xf9, 0x1f, 0x79, 0x3e, 0x9a,
-0xd6, 0x1f, 0x00, 0x9e, 0x8f, 0x96, 0xc5, 0x1f,
-0xc0, 0x6e, 0xd2, 0xda, 0x02, 0x40, 0xfc, 0xcf,
-0x64, 0xfd, 0x01, 0x3c, 0xc8, 0x1f, 0x40, 0xe9,
-0x6f, 0xe5, 0xfc, 0x8f, 0x30, 0x1f, 0x2d, 0x44,
-0x3b, 0x43, 0xe9, 0xfe, 0x00, 0xd7, 0x1e, 0x12,
-0xd8, 0x8c, 0xce, 0x54, 0xfc, 0xe3, 0x57, 0x30,
-0xb5, 0x06, 0x9e, 0x06, 0xdb, 0x9a, 0xf6, 0xfe,
-0x4e, 0xfc, 0x91, 0xca, 0xc4, 0x0d, 0x29, 0xdc,
-0x7f, 0xb6, 0x73, 0x5b, 0x92, 0xc8, 0x1f, 0xa9,
-0x0c, 0xf9, 0x03, 0x9c, 0x24, 0xab, 0x9b, 0xa7,
-0xce, 0x87, 0x3d, 0x29, 0xf1, 0x3f, 0x72, 0xfd,
-0xcb, 0xd6, 0xec, 0x3f, 0xe2, 0x7c, 0x34, 0xe1,
-0x7c, 0x99, 0x40, 0x47, 0xe1, 0xf5, 0x9e, 0x85,
-0xfc, 0xb1, 0x0d, 0xc1, 0xeb, 0x3a, 0x7f, 0x00,
-0x4d, 0xc0, 0xf9, 0x1f, 0xc9, 0x1f, 0xe0, 0x7c,
-0x06, 0x7f, 0xc8, 0x9c, 0x70, 0xbd, 0xb6, 0x9f,
-0x4b, 0xe9, 0x8f, 0x1b, 0x20, 0xe7, 0x1d, 0xc6,
-0x3f, 0x3b, 0xc5, 0xfc, 0xf8, 0x49, 0xfc, 0xe3,
-0x44, 0x6a, 0x13, 0xac, 0x0f, 0x1f, 0x09, 0xde,
-0xa4, 0xfa, 0x70, 0xba, 0xde, 0xdd, 0x97, 0x56,
-0x47, 0xbf, 0x2a, 0x27, 0xfd, 0x91, 0xb0, 0x09,
-0xf6, 0xe5, 0xb8, 0x1f, 0x50, 0x68, 0xeb, 0x7e,
-0x1b, 0x91, 0xd1, 0xb1, 0x06, 0xfc, 0x53, 0x33,
-0x96, 0x9b, 0xa4, 0x3f, 0xc0, 0xa4, 0xe6, 0x83,
-0x68, 0xf8, 0x1f, 0x93, 0x3f, 0xf6, 0x26, 0x1c,
-0xd4, 0x4a, 0x83, 0x7a, 0x27, 0x8f, 0x7f, 0xe8,
-0xf3, 0xc9, 0xf1, 0xcf, 0x34, 0xc3, 0xf3, 0x00,
-0xcc, 0x87, 0x3d, 0xa2, 0x7e, 0x2d, 0x3f, 0xe8,
-0x35, 0xf8, 0xc7, 0xc0, 0xff, 0xd0, 0x1f, 0xd8,
-0x1f, 0x3b, 0x83, 0xfe, 0xc7, 0xd8, 0x2f, 0x2f,
-0xe9, 0x7f, 0x6c, 0x99, 0xed, 0xb9, 0x1e, 0x07,
-0x81, 0x96, 0xff, 0xb9, 0x56, 0x87, 0x0f, 0x61,
-0xfe, 0xe7, 0xa0, 0xd6, 0x9f, 0x4a, 0x83, 0x7f,
-0xb8, 0x3f, 0x76, 0x26, 0x7f, 0xc8, 0x93, 0x99,
-0xfc, 0x01, 0x24, 0x7f, 0x24, 0x75, 0xec, 0x8e,
-0x09, 0xff, 0xfc, 0xe4, 0x20, 0x47, 0x3b, 0x98,
-0xf6, 0xa9, 0xfe, 0x44, 0xf1, 0x8f, 0x26, 0xf8,
-0xe4, 0xfd, 0xb1, 0xe9, 0x4f, 0x46, 0x7f, 0x6c,
-0x76, 0xfd, 0x31, 0x11, 0xff, 0x68, 0x03, 0xed,
-0x7c, 0xd8, 0x38, 0x70, 0x92, 0x9f, 0x70, 0xfc,
-0xb3, 0x87, 0xf1, 0x3f, 0x20, 0x7f, 0xf2, 0x8c,
-0x41, 0xff, 0x13, 0xf3, 0x3f, 0x75, 0x22, 0xfe,
-0xb1, 0x7a, 0x0c, 0xf3, 0x41, 0xa0, 0x85, 0xef,
-0x30, 0xe0, 0x9f, 0x38, 0xb1, 0x55, 0x52, 0x3e,
-0xef, 0x4d, 0xe2, 0x9f, 0x87, 0xeb, 0xd9, 0xdd,
-0xc6, 0xf7, 0x5f, 0x2d, 0xdc, 0x7f, 0x3f, 0xbd,
-0xff, 0x49, 0xfb, 0x23, 0x31, 0xfc, 0xb3, 0x88,
-0xe3, 0x1f, 0xc3, 0x7c, 0x3a, 0x61, 0x3e, 0x2c,
-0xe5, 0x7f, 0xbc, 0x88, 0xcf, 0x94, 0x0b, 0x61,
-0x63, 0x06, 0xfc, 0xe3, 0x02, 0xfc, 0xcf, 0x00,
-0xc3, 0x3f, 0x6c, 0x3e, 0x2c, 0xf3, 0x47, 0xda,
-0x68, 0xb1, 0xb1, 0x1a, 0x2c, 0x78, 0x99, 0x06,
-0x03, 0x37, 0xd2, 0xef, 0x67, 0xfe, 0x48, 0x5f,
-0x63, 0x63, 0x41, 0xa6, 0x31, 0xd8, 0xf3, 0x2a,
-0xd3, 0xff, 0xb0, 0xf9, 0xd4, 0xcc, 0x1f, 0xd2,
-0x05, 0xb6, 0x91, 0x61, 0x86, 0x7f, 0xf8, 0xfb,
-0x11, 0x3d, 0xbf, 0xd8, 0x58, 0xab, 0xe3, 0xfc,
-0xd8, 0xfa, 0x88, 0xe9, 0x7f, 0x14, 0x7f, 0xc8,
-0xf0, 0xfe, 0xc9, 0x6e, 0xb3, 0x22, 0x0c, 0x1e,
-0x49, 0xdc, 0x3f, 0xe0, 0x8f, 0xc4, 0xae, 0x17,
-0xf0, 0x0f, 0xbb, 0x9e, 0xeb, 0x6d, 0xa8, 0x3f,
-0x52, 0xde, 0x25, 0x69, 0x5c, 0x13, 0x0f, 0xaa,
-0x96, 0xf3, 0xc9, 0xf1, 0xcf, 0x16, 0x8a, 0x7f,
-0x28, 0x9f, 0xf3, 0x34, 0xb4, 0xde, 0x67, 0xb3,
-0xe1, 0x1f, 0x76, 0x3d, 0xd7, 0x07, 0x96, 0x28,
-0xfe, 0x19, 0x82, 0x8e, 0x39, 0x83, 0x3f, 0x12,
-0x34, 0x96, 0x7d, 0x98, 0xeb, 0x7f, 0x14, 0xfe,
-0x07, 0x1a, 0x83, 0x35, 0x0c, 0xe0, 0x9f, 0xa4,
-0xde, 0x03, 0x1b, 0x65, 0x2b, 0xf9, 0x11, 0xfa,
-0xe3, 0x6a, 0xb6, 0x26, 0xf8, 0xae, 0x47, 0x70,
-0xb0, 0x51, 0x5e, 0xaf, 0xe2, 0x0f, 0x29, 0x2c,
-0xf3, 0x22, 0xb0, 0x5e, 0x8e, 0x7f, 0x4e, 0x55,
-0x5c, 0xb1, 0x27, 0x76, 0x24, 0x68, 0x9f, 0x8d,
-0x0c, 0xff, 0xbc, 0x13, 0x57, 0x54, 0x85, 0xfa,
-0xd7, 0x4c, 0x15, 0xed, 0x0c, 0x06, 0xf1, 0xc4,
-0x90, 0x9d, 0x23, 0x91, 0x75, 0x40, 0xd5, 0x31,
-0x6b, 0x54, 0xad, 0x7f, 0xa9, 0xc7, 0xd0, 0x52,
-0x6b, 0xb0, 0xb8, 0x2f, 0xcc, 0x4f, 0xa5, 0x41,
-0xff, 0x43, 0x82, 0x87, 0xc2, 0x20, 0xc4, 0x3f,
-0xb1, 0xf1, 0x54, 0x95, 0x88, 0x7f, 0x56, 0x9b,
-0xf1, 0x0f, 0x2e, 0xcd, 0x14, 0x0e, 0xe7, 0xdf,
-0xe7, 0xfa, 0x1f, 0x95, 0xff, 0x81, 0xfc, 0xa3,
-0x14, 0xfe, 0xa7, 0x46, 0xfa, 0xda, 0xd7, 0x48,
-0xe1, 0x95, 0x52, 0x1f, 0xdf, 0x61, 0xf8, 0xa7,
-0x14, 0x3d, 0x0f, 0xb5, 0xba, 0x7e, 0xc9, 0xde,
-0x24, 0xff, 0x33, 0x60, 0x43, 0xf8, 0x47, 0xe8,
-0x30, 0x8d, 0x2a, 0xf2, 0x5d, 0x50, 0xfd, 0x4b,
-0x80, 0x01, 0x49, 0xc7, 0x00, 0x41, 0xff, 0xe3,
-0xdc, 0xac, 0xa0, 0x9d, 0x41, 0x3c, 0x1f, 0xa4,
-0x14, 0x0d, 0x0a, 0x79, 0x2a, 0x0e, 0xbe, 0x2a,
-0xf9, 0x03, 0x18, 0xf1, 0x4f, 0xcc, 0xff, 0xfc,
-0x33, 0xcd, 0x0f, 0xd6, 0xff, 0xbc, 0x17, 0xc8,
-0xb4, 0xd8, 0x85, 0xb8, 0x22, 0x86, 0x27, 0x86,
-0xbc, 0xa6, 0xe0, 0x1f, 0x57, 0xf5, 0x87, 0x1c,
-0x8f, 0x19, 0xa1, 0x51, 0xce, 0xa8, 0x27, 0xf5,
-0x3f, 0xf3, 0x12, 0xeb, 0x3d, 0x40, 0x2b, 0x80,
-0x64, 0x3e, 0x1a, 0xdf, 0x7f, 0xb6, 0x60, 0xfd,
-0xb3, 0x95, 0x7c, 0xed, 0xea, 0x4e, 0x30, 0xd2,
-0x82, 0xfe, 0xa7, 0x1e, 0x83, 0x9c, 0xa3, 0x09,
-0xda, 0xe7, 0x2d, 0x3a, 0x31, 0x04, 0xf0, 0x07,
-0xc8, 0xf2, 0x3e, 0xae, 0xf1, 0x07, 0x48, 0x04,
-0x16, 0x0b, 0x54, 0xfc, 0x53, 0x6b, 0xc2, 0x33,
-0x8d, 0x60, 0xfd, 0x2b, 0xd3, 0x7c, 0x10, 0x5a,
-0xff, 0xaa, 0x32, 0xe3, 0x1f, 0xa9, 0xfe, 0x95,
-0x01, 0xff, 0x28, 0xf5, 0x2f, 0x49, 0xc6, 0x73,
-0x38, 0xae, 0x10, 0x75, 0x33, 0xa3, 0xc8, 0x0f,
-0x24, 0xfe, 0xe7, 0x72, 0x22, 0x3f, 0x9b, 0x37,
-0x46, 0x1d, 0xf7, 0x0f, 0xe4, 0x59, 0xea, 0xc4,
-0xfa, 0x57, 0x51, 0x2d, 0x7b, 0x05, 0x11, 0xec,
-0xd9, 0x69, 0x79, 0x45, 0xf2, 0x89, 0x4e, 0xff,
-0x43, 0x06, 0xa5, 0x05, 0x44, 0xf6, 0xb3, 0x8b,
-0x0e, 0x0a, 0xb9, 0x5f, 0xa9, 0x7f, 0xe5, 0x55,
-0xd8, 0xe3, 0x12, 0x44, 0x94, 0xef, 0xeb, 0x30,
-0xfb, 0x43, 0x6e, 0xa6, 0x8e, 0x07, 0xec, 0xfe,
-0x0f, 0x4a, 0xf5, 0xaf, 0x74, 0xfc, 0x03, 0xd4,
-0xbf, 0x12, 0x69, 0x6f, 0x93, 0x14, 0xe9, 0x62,
-0xfd, 0xeb, 0x60, 0x92, 0xf6, 0x89, 0xe6, 0xc3,
-0xb6, 0xc5, 0x9f, 0x60, 0xc7, 0x80, 0x3a, 0x4d,
-0xfd, 0x6b, 0x30, 0x9a, 0x4e, 0xbe, 0x1e, 0x1b,
-0xfb, 0x3f, 0x42, 0x1b, 0xdb, 0x7f, 0x9c, 0xe4,
-0x7f, 0x58, 0xfd, 0x6b, 0x9b, 0x4c, 0x83, 0xe0,
-0xc6, 0xf9, 0x29, 0xb8, 0xe3, 0x3e, 0xe1, 0x0f,
-0xd9, 0xd3, 0x43, 0xf5, 0x3f, 0x16, 0xa7, 0x7d,
-0xfc, 0x5f, 0x05, 0x5f, 0x2e, 0xd7, 0x6d, 0xcf,
-0x5f, 0xf1, 0x7e, 0x13, 0x5c, 0xab, 0xe8, 0x7f,
-0xea, 0x93, 0xdb, 0x38, 0xf1, 0x87, 0x7c, 0x34,
-0x3f, 0x52, 0xc2, 0xc1, 0x2d, 0x52, 0xfd, 0x6b,
-0xd7, 0x13, 0xae, 0x5a, 0xb6, 0x88, 0xe6, 0x5b,
-0x8d, 0x77, 0x5f, 0x41, 0xa7, 0x77, 0x44, 0xa3,
-0x63, 0x05, 0x7f, 0xc8, 0x99, 0xcc, 0x1f, 0x52,
-0xb0, 0xa5, 0x65, 0x8c, 0xf4, 0x3d, 0xd9, 0xfc,
-0x21, 0x0f, 0x24, 0xae, 0x2f, 0x79, 0x34, 0xff,
-0x9e, 0x0d, 0x9d, 0x77, 0xdd, 0x72, 0xd0, 0x28,
-0xd7, 0xbf, 0x1e, 0x4f, 0xac, 0x77, 0x9c, 0x4e,
-0x8c, 0x65, 0x46, 0x88, 0x82, 0x1e, 0x3b, 0x77,
-0x08, 0xdd, 0x09, 0x9f, 0x77, 0xa3, 0xf9, 0x11,
-0x4b, 0xc1, 0x3f, 0xf3, 0x0c, 0xfa, 0xe7, 0x79,
-0x80, 0x3f, 0xa4, 0x59, 0xff, 0x93, 0x63, 0x78,
-0x06, 0xa8, 0x7f, 0x41, 0xef, 0xfb, 0xbf, 0x04,
-0xeb, 0x5f, 0x2e, 0xfc, 0x5a, 0xba, 0x09, 0xaa,
-0x7f, 0x61, 0xfc, 0xe3, 0xcb, 0xeb, 0x3d, 0x43,
-0xd7, 0x7b, 0x06, 0x9d, 0xcf, 0xc5, 0xfe, 0x87,
-0x6c, 0xff, 0xd9, 0x3b, 0x23, 0x95, 0xef, 0x3a,
-0x9d, 0xa9, 0xfe, 0xe5, 0xd5, 0xae, 0xcd, 0x7f,
-0x80, 0x4e, 0xa3, 0xd6, 0x4c, 0xfc, 0x0f, 0x5a,
-0x5c, 0x76, 0xfa, 0x76, 0xe2, 0x8d, 0xa2, 0xb1,
-0xa4, 0xf2, 0x3f, 0xb9, 0x58, 0xe6, 0x2d, 0x09,
-0xed, 0x50, 0x95, 0x17, 0xa6, 0xa5, 0x1b, 0x1d,
-0x4c, 0xe5, 0x7f, 0x48, 0xe0, 0x84, 0x69, 0xb4,
-0xee, 0x45, 0x8b, 0x64, 0xfe, 0xc7, 0x07, 0x9e,
-0x9f, 0x28, 0xc0, 0x0e, 0x36, 0x83, 0xe8, 0x39,
-0xef, 0x0b, 0xf8, 0x93, 0x4c, 0xf3, 0xd1, 0x42,
-0x84, 0xec, 0x5d, 0x2e, 0x5e, 0xa7, 0xab, 0x7f,
-0x4d, 0x95, 0xbe, 0x7f, 0x29, 0xaa, 0x7b, 0x38,
-0x3c, 0x1f, 0x2f, 0xb9, 0x4b, 0x15, 0xfe, 0x07,
-0x9c, 0x2f, 0xb3, 0x0c, 0x07, 0x7f, 0x8a, 0x8e,
-0x0f, 0x2d, 0x87, 0xea, 0x5f, 0xea, 0xf3, 0xe0,
-0xa1, 0x6a, 0xdb, 0xaa, 0x40, 0xff, 0xe1, 0x37,
-0x65, 0xe3, 0x7f, 0x16, 0xbe, 0x5e, 0xfd, 0x72,
-0xd5, 0x1f, 0xa1, 0xc7, 0x00, 0xfe, 0x87, 0xc0,
-0x1e, 0x6b, 0x90, 0x07, 0x97, 0x50, 0x4b, 0xae,
-0xce, 0xcb, 0xa3, 0xdc, 0x25, 0xb4, 0x22, 0x9d,
-0xff, 0x61, 0xfd, 0x5f, 0x17, 0xd1, 0x84, 0x7b,
-0x9d, 0x66, 0x3e, 0x9a, 0xd0, 0x1f, 0x87, 0x3f,
-0x59, 0x89, 0xf3, 0xdf, 0x8c, 0x47, 0xcf, 0x97,
-0x0b, 0x2b, 0xaa, 0x17, 0x65, 0xe0, 0x7f, 0x1c,
-0xac, 0x28, 0x38, 0x8a, 0xf6, 0x61, 0x85, 0xe1,
-0x52, 0x68, 0x3e, 0x9a, 0xb4, 0xde, 0x25, 0x5e,
-0xd5, 0xb0, 0xf5, 0x05, 0x0f, 0x57, 0xc4, 0x9c,
-0x2e, 0xab, 0x25, 0xe1, 0x8f, 0x2d, 0xe5, 0x33,
-0x1a, 0x3b, 0xb8, 0x15, 0x3b, 0xd2, 0x57, 0x21,
-0x6c, 0x9d, 0xed, 0xb4, 0x58, 0x0d, 0xd0, 0x7c,
-0xb4, 0x04, 0xed, 0x53, 0xeb, 0x85, 0xff, 0xbf,
-0x57, 0xd0, 0x72, 0x3c, 0x3a, 0xa4, 0x0d, 0xe6,
-0x7f, 0xba, 0xe4, 0x83, 0xa9, 0x7a, 0x14, 0x8d,
-0xfa, 0x6d, 0x99, 0xf8, 0x1f, 0x3f, 0x52, 0xfc,
-0x2e, 0x40, 0x1f, 0xee, 0x6d, 0xcc, 0xc4, 0xff,
-0x04, 0xcd, 0x7e, 0x3c, 0xb1, 0xa2, 0xb3, 0x31,
-0x1b, 0xff, 0xb3, 0xc8, 0xaf, 0x1c, 0xb2, 0x96,
-0x55, 0x44, 0x13, 0x4e, 0xe1, 0xfa, 0x57, 0x87,
-0x54, 0x06, 0x5a, 0xe2, 0x3b, 0x43, 0xd6, 0x74,
-0x74, 0xa4, 0x69, 0x8b, 0xa1, 0xfe, 0x25, 0x9d,
-0xbf, 0x35, 0x41, 0xbe, 0xc5, 0x1e, 0xf3, 0xda,
-0xf4, 0xfe, 0xd8, 0x42, 0x80, 0x0b, 0x61, 0x0d,
-0xbd, 0x23, 0xc5, 0x89, 0xa6, 0xc7, 0xd6, 0xa5,
-0xd5, 0xbf, 0xa6, 0x2e, 0x88, 0x11, 0xd1, 0x4b,
-0xf9, 0x97, 0xfc, 0xcb, 0xa8, 0xf5, 0x46, 0xec,
-0x8f, 0xa4, 0x9b, 0x0f, 0x8b, 0x83, 0x7c, 0x67,
-0x5c, 0x08, 0xdb, 0x89, 0x3f, 0x71, 0x1a, 0xb5,
-0xfc, 0x0f, 0x09, 0xfa, 0x70, 0x23, 0x98, 0xd3,
-0xec, 0xf7, 0x36, 0x58, 0xfd, 0xc1, 0x11, 0xd7,
-0x4b, 0xaf, 0x7f, 0x6d, 0x16, 0x11, 0x51, 0x63,
-0xaa, 0x3f, 0xb6, 0xc5, 0x10, 0x0e, 0x76, 0xfc,
-0x3e, 0x9a, 0x99, 0xff, 0x79, 0x10, 0x07, 0x4e,
-0x7b, 0x47, 0x5d, 0x8a, 0x3f, 0xb6, 0x55, 0x8e,
-0x15, 0xe9, 0x3d, 0x79, 0x0f, 0x95, 0x36, 0x2e,
-0x45, 0xcd, 0x1a, 0xfd, 0x0f, 0xc5, 0x3f, 0x53,
-0x48, 0x30, 0x6c, 0xb5, 0xa1, 0x7f, 0x0c, 0x7e,
-0x55, 0x74, 0xca, 0x46, 0x7f, 0xec, 0xc3, 0x0d,
-0x83, 0x05, 0x1c, 0xcc, 0xfa, 0x92, 0x55, 0xeb,
-0x77, 0x97, 0xbc, 0x6d, 0x95, 0x9e, 0xec, 0x8f,
-0xed, 0x68, 0x68, 0xdb, 0xb1, 0xaa, 0x36, 0xf4,
-0x13, 0xb4, 0x70, 0x53, 0x65, 0xa7, 0xc6, 0x1f,
-0x5b, 0x01, 0x42, 0xd8, 0xbf, 0xb1, 0xb5, 0xb3,
-0x66, 0x0b, 0x30, 0x1f, 0x16, 0x38, 0xdf, 0x5b,
-0xf2, 0xc3, 0x16, 0x56, 0xd0, 0xd5, 0x16, 0x13,
-0xf3, 0x61, 0x27, 0x82, 0xb9, 0xd2, 0xf9, 0x15,
-0x0b, 0xa1, 0xeb, 0x86, 0xf3, 0xed, 0x21, 0xfe,
-0x69, 0x2d, 0x17, 0x86, 0xf3, 0x48, 0xe5, 0x7f,
-0xd4, 0xfb, 0x1f, 0xb5, 0x56, 0xf8, 0x77, 0xa3,
-0x3f, 0x2b, 0x39, 0x9d, 0xd6, 0x22, 0x09, 0xff,
-0x1c, 0x80, 0xaf, 0xef, 0xb4, 0x6e, 0x43, 0xd8,
-0x61, 0x29, 0xbc, 0x1e, 0x81, 0xfe, 0xd8, 0x34,
-0xc0, 0x78, 0xb2, 0x79, 0x2c, 0x0c, 0xd6, 0xa1,
-0x1d, 0x41, 0x53, 0xc9, 0xf1, 0x2c, 0x47, 0xf2,
-0xc7, 0x96, 0xe6, 0xdd, 0x57, 0x93, 0xf9, 0x17,
-0xe5, 0x10, 0xff, 0xff, 0xcd, 0xce, 0x81, 0x9e,
-0x46, 0xbc, 0xff, 0x2c, 0x4a, 0xe7, 0x7f, 0xfa,
-0x31, 0xde, 0x0e, 0xde, 0xf5, 0xdb, 0xfb, 0xe6,
-0x16, 0xf3, 0x5a, 0x7f, 0x6c, 0x12, 0xfc, 0x17,
-0x16, 0x42, 0x0f, 0x75, 0x2f, 0x0b, 0xf1, 0xd5,
-0xb7, 0x0f, 0x16, 0xca, 0xf3, 0xb5, 0xfe, 0xd8,
-0x24, 0xb8, 0x17, 0x07, 0x7d, 0xd6, 0xc2, 0xe0,
-0xde, 0xf2, 0xf2, 0x3e, 0xa7, 0x98, 0x3a, 0x1f,
-0xed, 0x21, 0x6f, 0x71, 0x69, 0x56, 0x93, 0x55,
-0x08, 0x7a, 0x77, 0xec, 0x1f, 0xc2, 0xd7, 0x9b,
-0xf8, 0x1f, 0x6b, 0x84, 0xbf, 0x9f, 0xee, 0x08,
-0xf7, 0xe7, 0x26, 0x4f, 0x9d, 0x0f, 0x22, 0xae,
-0x37, 0xbc, 0xfe, 0x15, 0x1c, 0x14, 0xf3, 0xd8,
-0x3f, 0xf3, 0xb1, 0x52, 0xa1, 0x68, 0xe4, 0x7f,
-0x46, 0xa7, 0x8e, 0x87, 0xfb, 0xc9, 0xaa, 0xd2,
-0x54, 0xfc, 0xc9, 0x65, 0x74, 0x57, 0xa9, 0xae,
-0xd3, 0x5c, 0xff, 0x9a, 0xac, 0x3f, 0xf6, 0xe4,
-0xea, 0x5f, 0xa2, 0x4d, 0xf1, 0x6e, 0xfa, 0x7e,
-0x91, 0x45, 0xff, 0x33, 0x8b, 0x37, 0x52, 0x21,
-0x65, 0x3e, 0x1a, 0xcf, 0x8f, 0x40, 0xd4, 0xac,
-0xe1, 0xfa, 0xe7, 0xdf, 0xcf, 0x7c, 0xd8, 0xa4,
-0x2d, 0x79, 0x5a, 0xfd, 0xeb, 0xb5, 0x74, 0xfd,
-0xb3, 0x84, 0x7f, 0x92, 0x36, 0x86, 0xda, 0xfa,
-0xd7, 0x37, 0x30, 0x0c, 0xb8, 0x42, 0xd9, 0x8f,
-0x94, 0xfa, 0x17, 0x1f, 0x0b, 0xfb, 0x54, 0x06,
-0xfd, 0xf3, 0xb5, 0xd8, 0x1f, 0x52, 0x86, 0x3d,
-0x9f, 0x66, 0xfd, 0x4b, 0x87, 0x7f, 0x0c, 0xf5,
-0xaf, 0x0c, 0xf5, 0x44, 0x70, 0x3e, 0xac, 0xa1,
-0xff, 0xeb, 0xb3, 0x50, 0xff, 0x5a, 0xff, 0xe9,
-0xce, 0x87, 0x05, 0x96, 0x39, 0x3f, 0x65, 0x3e,
-0xc8, 0xa4, 0xf4, 0xcf, 0xf8, 0xb7, 0x49, 0x22,
-0x28, 0x5b, 0xff, 0xbb, 0x1a, 0x20, 0x59, 0xff,
-0x43, 0xfd, 0x21, 0xdd, 0xfb, 0xc4, 0x65, 0x56,
-0x4a, 0xeb, 0x9d, 0x94, 0xfe, 0x27, 0xc1, 0xff,
-0xbc, 0x22, 0xf4, 0xbb, 0xc1, 0xf7, 0xff, 0x69,
-0xcc, 0x07, 0xc9, 0x3e, 0x1f, 0x76, 0x32, 0xfa,
-0x1f, 0x70, 0x3e, 0x08, 0xa0, 0x7f, 0xa6, 0xdf,
-0xaf, 0xe0, 0x9f, 0xa9, 0x4a, 0xa0, 0x9d, 0x8f,
-0x96, 0x0c, 0xe2, 0xc6, 0xf0, 0x93, 0x75, 0xca,
-0x7c, 0x90, 0xbe, 0xf8, 0xb4, 0xf2, 0xff, 0x37,
-0xd2, 0xff, 0xcc, 0x27, 0xfe, 0x90, 0x63, 0x77,
-0xe0, 0x89, 0x57, 0xed, 0xea, 0x7c, 0x10, 0xd2,
-0xff, 0x45, 0xf4, 0x3f, 0xdb, 0xa8, 0xfe, 0x99,
-0x04, 0xc3, 0x2a, 0xff, 0xe3, 0xb1, 0xd5, 0xf1,
-0xeb, 0x23, 0xfd, 0xb3, 0x43, 0x02, 0x78, 0x3e,
-0x08, 0x7e, 0x8d, 0x85, 0xf3, 0x99, 0x9c, 0x0f,
-0xb2, 0x98, 0x2e, 0x53, 0xa3, 0xff, 0x81, 0xe6,
-0x83, 0x98, 0xf6, 0xdb, 0x34, 0xfc, 0x43, 0x82,
-0x13, 0x2a, 0xff, 0x03, 0xe3, 0x9f, 0x38, 0x20,
-0xe7, 0x6f, 0x5e, 0x3b, 0x1f, 0x36, 0x8b, 0xfe,
-0x07, 0xe3, 0x1f, 0x2f, 0xce, 0x46, 0x20, 0xf4,
-0x7f, 0xf1, 0xfc, 0x3c, 0xf3, 0x10, 0x30, 0x1f,
-0x8d, 0x57, 0x73, 0xe8, 0x32, 0x07, 0xe8, 0x1b,
-0xf7, 0x80, 0x52, 0xff, 0xba, 0xe4, 0xde, 0x45,
-0xd5, 0x3e, 0x7c, 0xbd, 0x43, 0x62, 0x23, 0xb3,
-0x99, 0xff, 0x19, 0x0f, 0x26, 0x16, 0xb4, 0x0e,
-0x14, 0xba, 0xf2, 0xed, 0xe1, 0x1b, 0x52, 0x2b,
-0xfe, 0x86, 0x16, 0x5e, 0xff, 0x02, 0xf0, 0xcf,
-0x3b, 0xe8, 0x78, 0x5f, 0xe3, 0x36, 0x3c, 0x31,
-0xd6, 0xe9, 0x0d, 0x1e, 0x7e, 0xb4, 0xfa, 0x5f,
-0x2d, 0x8f, 0xd7, 0xbf, 0x00, 0xfd, 0x4f, 0xbf,
-0x1f, 0x3e, 0x18, 0x78, 0x10, 0x61, 0x33, 0xea,
-0x0d, 0x9f, 0x90, 0xf5, 0x2d, 0x96, 0x65, 0x9a,
-0x0f, 0x12, 0xa5, 0xbd, 0x11, 0x85, 0xdf, 0x1f,
-0x5e, 0xbf, 0xab, 0xb1, 0x54, 0x7d, 0xa4, 0xa3,
-0x85, 0xed, 0x27, 0xff, 0xd7, 0xde, 0xd5, 0x07,
-0xd7, 0x55, 0x5c, 0xf7, 0xb3, 0xf7, 0xed, 0x95,
-0xaf, 0xa4, 0x27, 0xeb, 0x3e, 0xe9, 0x3d, 0xfb,
-0xc1, 0x18, 0xb8, 0x92, 0x0d, 0x68, 0x88, 0x21,
-0x4f, 0xc2, 0x80, 0x83, 0x29, 0xba, 0x7a, 0xfa,
-0xb0, 0xfc, 0x01, 0x7e, 0xd8, 0xb2, 0x51, 0xa9,
-0xa6, 0x73, 0xcd, 0xb8, 0x0c, 0x9d, 0x71, 0x33,
-0xb6, 0x3b, 0x0d, 0x74, 0x9a, 0xc2, 0x7d, 0x92,
-0x30, 0x9a, 0x40, 0xca, 0xab, 0xe3, 0x0e, 0x62,
-0x86, 0x19, 0x5e, 0x52, 0x4f, 0xca, 0x4c, 0x68,
-0x47, 0x40, 0x08, 0xce, 0x40, 0xe2, 0x27, 0x23,
-0x1b, 0x07, 0x13, 0xaa, 0x52, 0x27, 0xf1, 0x50,
-0x0f, 0xb6, 0x3b, 0x2e, 0xe3, 0xb4, 0x06, 0x9c,
-0xc1, 0x09, 0x76, 0xc0, 0xb8, 0x67, 0x77, 0xef,
-0xc7, 0xde, 0xf7, 0x25, 0x19, 0x02, 0xed, 0x24,
-0xf7, 0xfc, 0xe3, 0xdf, 0xec, 0x5b, 0x5d, 0xef,
-0xdd, 0xbb, 0x7b, 0xf6, 0xb7, 0x67, 0xf7, 0x9c,
-0x53, 0xc2, 0x7f, 0x38, 0xf8, 0x00, 0x52, 0x85,
-0xc5, 0xec, 0x46, 0xfd, 0x2b, 0x76, 0x87, 0xb9,
-0x66, 0x77, 0xbd, 0x5e, 0xea, 0xff, 0x15, 0x18,
-0x0f, 0xe7, 0x61, 0x0f, 0x03, 0x9f, 0xd8, 0x17,
-0xd8, 0x7a, 0xd7, 0x56, 0xe6, 0xfc, 0xcb, 0x35,
-0xfb, 0x30, 0x70, 0x82, 0x5b, 0xe4, 0xa2, 0xe2,
-0xc6, 0x7e, 0x87, 0xb9, 0xf8, 0xd9, 0xfa, 0x54,
-0xa5, 0xfb, 0x3f, 0xee, 0xfd, 0x67, 0xe4, 0xc3,
-0x1a, 0xe3, 0xb7, 0x2f, 0xa9, 0xad, 0x47, 0xf0,
-0x45, 0x3a, 0x2a, 0xd9, 0x7f, 0x9c, 0xf9, 0xf2,
-0x1c, 0xf0, 0xc0, 0xce, 0x94, 0x97, 0x20, 0x48,
-0x79, 0xfa, 0xe7, 0x98, 0x6c, 0xff, 0xd9, 0xe3,
-0x1e, 0x0c, 0x7d, 0xdf, 0x5e, 0x6c, 0x69, 0x5f,
-0x57, 0x2e, 0x67, 0x25, 0x79, 0x6d, 0xb3, 0x92,
-0x2c, 0xc7, 0x7f, 0xb8, 0xd9, 0x87, 0x81, 0x29,
-0x56, 0x62, 0x47, 0x53, 0x11, 0xfc, 0xc9, 0x4c,
-0x15, 0x10, 0x5c, 0x5a, 0xc9, 0xfe, 0xb3, 0xc7,
-0xeb, 0x28, 0xf8, 0xf2, 0x34, 0x8b, 0x9f, 0xa0,
-0xef, 0x99, 0x81, 0xff, 0x3c, 0xb6, 0x3b, 0xf2,
-0x2f, 0xf0, 0x1a, 0x76, 0x54, 0x54, 0xe8, 0xab,
-0x0e, 0xb3, 0x71, 0x3c, 0x52, 0xe7, 0xfb, 0x7f,
-0x95, 0xf0, 0x1f, 0x76, 0xec, 0x35, 0xca, 0xb6,
-0x51, 0x8e, 0x86, 0xb1, 0xeb, 0x4d, 0xe5, 0x66,
-0x29, 0xde, 0x45, 0x31, 0xff, 0x39, 0xab, 0x6c,
-0x87, 0x11, 0xdb, 0xe0, 0x19, 0x63, 0xd9, 0xfb,
-0x5a, 0xf5, 0x49, 0x69, 0xff, 0x85, 0xfc, 0x47,
-0x2f, 0x1e, 0x6f, 0x51, 0x65, 0x04, 0xf2, 0x53,
-0x6d, 0x29, 0xe5, 0x0d, 0x78, 0x3e, 0x63, 0x1c,
-0xab, 0x4f, 0xd6, 0x35, 0x49, 0xf1, 0xb1, 0x4b,
-0xf9, 0xcf, 0xd3, 0xf0, 0x06, 0xb4, 0x4f, 0xe0,
-0xb6, 0xe2, 0xb7, 0xf0, 0x89, 0xfd, 0x7c, 0xbe,
-0xf1, 0xbf, 0x23, 0x4b, 0x67, 0xe6, 0x3f, 0x1a,
-0x03, 0xe6, 0x59, 0xf8, 0x31, 0x9d, 0x05, 0xff,
-0xf9, 0x15, 0x1b, 0x36, 0x08, 0xe8, 0x4f, 0xb4,
-0x94, 0x19, 0x9d, 0x89, 0xff, 0xfc, 0x17, 0xfc,
-0x30, 0xdd, 0x9a, 0xd1, 0x72, 0xfc, 0xbe, 0xca,
-0x77, 0xcc, 0xb6, 0x9d, 0x33, 0xf1, 0x1f, 0xe3,
-0x25, 0xad, 0x35, 0xbd, 0x72, 0x9c, 0x1f, 0xdc,
-0xb4, 0x9a, 0x5a, 0x6e, 0x78, 0x06, 0xfe, 0xb3,
-0xeb, 0xd9, 0x36, 0x63, 0x65, 0x9d, 0x8e, 0xf5,
-0xb3, 0x00, 0x2b, 0xb5, 0xa6, 0xe1, 0x19, 0xf8,
-0x8f, 0x7d, 0xd6, 0xe8, 0xd0, 0xe6, 0xb2, 0x92,
-0x03, 0xd0, 0xa1, 0xad, 0x1e, 0x96, 0xfd, 0xbf,
-0xca, 0xf0, 0x9f, 0x33, 0x6c, 0x7e, 0x99, 0x0d,
-0xd3, 0xcd, 0x67, 0x94, 0x5f, 0xb3, 0xd4, 0x8d,
-0xd3, 0x33, 0xdd, 0x7f, 0x36, 0xce, 0xb5, 0x75,
-0xb0, 0x8c, 0x90, 0xbc, 0xa3, 0x56, 0x46, 0x77,
-0x8c, 0x54, 0xe5, 0x3f, 0xf8, 0x45, 0x76, 0x9b,
-0xad, 0x6e, 0xa2, 0xd8, 0x6b, 0x74, 0x6d, 0x2a,
-0x10, 0xff, 0xa7, 0x84, 0xdd, 0xa5, 0xa7, 0xe0,
-0x05, 0xbb, 0x25, 0xa3, 0x65, 0x9a, 0x0e, 0xc1,
-0x1e, 0xf8, 0xb6, 0xa5, 0x0d, 0xca, 0xf1, 0xb1,
-0x03, 0xfc, 0x47, 0x11, 0xf1, 0x97, 0xcc, 0x1f,
-0xd1, 0x85, 0x66, 0xdb, 0x9b, 0xca, 0x19, 0xfb,
-0x47, 0xc6, 0x97, 0x98, 0xa1, 0xec, 0x9d, 0xaa,
-0xe7, 0x5f, 0xef, 0xc0, 0xb9, 0xc2, 0x73, 0xe9,
-0x28, 0x03, 0xbf, 0xd2, 0x3a, 0x32, 0x8b, 0x77,
-0x4a, 0xfc, 0xa7, 0x5c, 0xfc, 0x1f, 0xac, 0x6f,
-0xdc, 0xc2, 0x1c, 0xe1, 0xdf, 0x29, 0x3d, 0xff,
-0x2a, 0xe1, 0x3f, 0x73, 0xdc, 0xc0, 0x0b, 0xc2,
-0x11, 0xde, 0x4c, 0xc1, 0x9a, 0x82, 0x14, 0x3f,
-0xb9, 0x84, 0xff, 0xc8, 0xfe, 0x5f, 0xbf, 0x44,
-0xd0, 0xca, 0x40, 0xdd, 0x4c, 0xfc, 0x47, 0x44,
-0x2c, 0xf9, 0xa9, 0xcd, 0xf4, 0xcf, 0x2a, 0x03,
-0xeb, 0xbb, 0xe3, 0xad, 0x84, 0xff, 0x3c, 0xc2,
-0xc0, 0x0b, 0xc2, 0x1e, 0x72, 0x84, 0xf5, 0x27,
-0xd4, 0xdf, 0xab, 0xb4, 0x79, 0xf5, 0xcb, 0xd8,
-0x7f, 0x22, 0x6f, 0xc1, 0x6f, 0xec, 0x3f, 0xca,
-0x37, 0x0e, 0xf2, 0x92, 0x76, 0x16, 0x88, 0xec,
-0x1a, 0xdf, 0xff, 0xab, 0x0c, 0xff, 0x39, 0xc9,
-0x5e, 0xdc, 0x8e, 0xd8, 0xac, 0x84, 0x62, 0x57,
-0x54, 0xca, 0x8f, 0xe6, 0x80, 0x6e, 0x76, 0xfe,
-0x75, 0xfd, 0x71, 0x2c, 0xb9, 0x14, 0xf6, 0x31,
-0x46, 0x74, 0x32, 0x52, 0xb0, 0x03, 0xfc, 0xa7,
-0x84, 0xb6, 0x3d, 0xc4, 0x88, 0x8d, 0x85, 0x6a,
-0x13, 0x01, 0x20, 0x08, 0xf8, 0xbf, 0x97, 0xd4,
-0x3f, 0x0c, 0xdf, 0x61, 0x6a, 0x6a, 0x5a, 0x19,
-0x34, 0xf8, 0x1f, 0xde, 0x5f, 0x99, 0xff, 0xf0,
-0x40, 0x1c, 0x27, 0xc1, 0xb6, 0x21, 0x5f, 0xaf,
-0x31, 0xfb, 0xcf, 0x31, 0x43, 0xaf, 0x5f, 0x52,
-0x3e, 0x3f, 0x9a, 0x7c, 0x7f, 0x20, 0x8f, 0x6a,
-0x73, 0xf7, 0xc8, 0x3d, 0xf0, 0xda, 0x81, 0x8e,
-0x63, 0xf8, 0xe9, 0x25, 0xff, 0xaf, 0x32, 0xfc,
-0xe7, 0x3d, 0x1c, 0x36, 0x2f, 0xf7, 0x34, 0xe6,
-0x57, 0xed, 0x42, 0x0d, 0x76, 0x8b, 0x71, 0x05,
-0x48, 0xfe, 0x5f, 0xc8, 0x7f, 0x92, 0xa5, 0xb7,
-0x3b, 0xde, 0x86, 0x4e, 0x35, 0x3a, 0xdd, 0x7a,
-0x06, 0x15, 0xdd, 0xf5, 0x7b, 0xa3, 0xff, 0x36,
-0x02, 0x9e, 0xff, 0x97, 0x5d, 0x86, 0xff, 0x9c,
-0x04, 0x76, 0xbe, 0x8c, 0xf3, 0x6b, 0x0a, 0x86,
-0xd9, 0x42, 0x9c, 0x53, 0x8c, 0x99, 0xec, 0x3f,
-0x2c, 0x50, 0xff, 0x84, 0xf2, 0x9f, 0x74, 0x0c,
-0x57, 0x40, 0x96, 0xca, 0x79, 0x06, 0xfb, 0x0f,
-0xbb, 0x86, 0xd7, 0x66, 0x60, 0x37, 0x8e, 0xd9,
-0x79, 0x68, 0x83, 0x3a, 0xa5, 0x9a, 0xfd, 0x47,
-0xa4, 0x2d, 0x80, 0xd5, 0xb9, 0xc8, 0x31, 0x7a,
-0x80, 0x2d, 0x34, 0xb9, 0x08, 0x54, 0xb3, 0xff,
-0x44, 0xce, 0xc2, 0xc7, 0xa4, 0x13, 0xd6, 0x98,
-0x91, 0xd3, 0xf0, 0x31, 0xed, 0x84, 0xc7, 0xa6,
-0x67, 0xef, 0xff, 0xf5, 0xaf, 0x17, 0x69, 0xff,
-0xf9, 0xde, 0x45, 0xdd, 0x7f, 0xf6, 0x0c, 0x5f,
-0x55, 0xce, 0xbf, 0x6a, 0xcb, 0x9d, 0x27, 0xce,
-0xfa, 0xfe, 0x33, 0x0b, 0xbd, 0xbe, 0x66, 0xa2,
-0x7b, 0x36, 0xfe, 0x5f, 0x0e, 0xf8, 0x72, 0x15,
-0xfb, 0x4f, 0x45, 0x50, 0x64, 0xff, 0xa1, 0x33,
-0xdf, 0x7f, 0x76, 0xc7, 0x43, 0xd5, 0xfb, 0xcf,
-0xa7, 0x3e, 0xcd, 0xfd, 0xe7, 0x93, 0x95, 0xec,
-0x3f, 0xa5, 0x66, 0x1f, 0x0e, 0x0e, 0x54, 0x38,
-0xff, 0x2a, 0x8a, 0x0f, 0x30, 0xf5, 0xd4, 0x69,
-0xfe, 0xbe, 0xff, 0x3f, 0xed, 0x3f, 0xbe, 0xff,
-0xd7, 0x17, 0x68, 0xff, 0xa1, 0x9f, 0xb7, 0xfd,
-0xe7, 0x2b, 0x17, 0x7d, 0xff, 0xf9, 0x1a, 0x0e,
-0xc8, 0xe7, 0x66, 0xff, 0xa9, 0x90, 0x18, 0xb7,
-0xd8, 0xff, 0xeb, 0x22, 0xec, 0x3f, 0xb3, 0xca,
-0xaf, 0x5a, 0xc9, 0xff, 0x6b, 0x66, 0xff, 0xf7,
-0xb2, 0xf9, 0x61, 0x83, 0xe0, 0x91, 0x80, 0xfd,
-0x47, 0x2d, 0x63, 0xff, 0x29, 0xed, 0xcf, 0x40,
-0xfc, 0x9f, 0x32, 0xcd, 0x26, 0xc1, 0x44, 0x78,
-0x92, 0xfd, 0x67, 0x76, 0xfe, 0x5f, 0x3e, 0xff,
-0x81, 0x8b, 0xb4, 0xff, 0x54, 0xf1, 0xff, 0x2a,
-0x1b, 0xff, 0x30, 0x51, 0x45, 0xff, 0xf8, 0xf6,
-0x1f, 0xef, 0xfe, 0x73, 0x59, 0xff, 0xaf, 0x2a,
-0xf1, 0x7f, 0xda, 0xca, 0xf0, 0x1f, 0x19, 0xf0,
-0x8c, 0x21, 0xcd, 0xb3, 0xb3, 0xff, 0x2c, 0x2c,
-0xe7, 0xff, 0x95, 0xa8, 0xba, 0x7e, 0x39, 0xf6,
-0x1f, 0xc9, 0xff, 0xeb, 0x12, 0x49, 0xff, 0x7c,
-0xe8, 0x37, 0x7b, 0x31, 0xb7, 0x08, 0x31, 0x50,
-0xc6, 0xfe, 0x53, 0xf5, 0x7d, 0x99, 0xfd, 0xc7,
-0xcf, 0x3f, 0x68, 0xd1, 0x6a, 0xfa, 0xc7, 0x75,
-0xcd, 0xa8, 0xe0, 0xff, 0x55, 0x16, 0x4c, 0x3e,
-0x26, 0xc7, 0xff, 0x91, 0xf9, 0x0f, 0x09, 0x1c,
-0x9c, 0x3d, 0x25, 0xfd, 0xe1, 0x89, 0xf2, 0xf6,
-0x9f, 0xf7, 0x45, 0x76, 0xf8, 0x59, 0xfb, 0x7f,
-0x7d, 0x54, 0x1a, 0xd8, 0xa7, 0xaa, 0xff, 0x57,
-0x00, 0xd4, 0x4d, 0xf0, 0x08, 0x36, 0x5f, 0x2d,
-0xe7, 0xff, 0xb5, 0xb9, 0xe2, 0x78, 0x23, 0x9b,
-0xdf, 0xaa, 0x4f, 0xb5, 0x96, 0xf8, 0x7f, 0xb9,
-0xf6, 0x9f, 0x9b, 0xa5, 0xf3, 0x3e, 0x04, 0x06,
-0x82, 0xc3, 0xe5, 0xfc, 0xbf, 0xf8, 0xdb, 0xd1,
-0x40, 0x3e, 0xb8, 0x35, 0xd2, 0x89, 0x86, 0xc4,
-0x7f, 0xbe, 0x29, 0x46, 0x4b, 0xd9, 0xb0, 0x87,
-0xc8, 0x7f, 0x0a, 0x45, 0xf7, 0x7f, 0x0a, 0x10,
-0xa4, 0x3d, 0xc7, 0x05, 0xd8, 0x2e, 0x2e, 0x42,
-0xeb, 0x8f, 0x40, 0x6b, 0x90, 0xff, 0x9c, 0x64,
-0xf1, 0x0f, 0x69, 0xa5, 0xf5, 0x3d, 0x3f, 0x62,
-0x18, 0xc2, 0xbe, 0xea, 0x8e, 0x1f, 0x37, 0xfe,
-0x8f, 0x14, 0x2d, 0xb9, 0x49, 0x32, 0x04, 0x8d,
-0x10, 0x66, 0x51, 0x49, 0x9f, 0xf5, 0xf4, 0x89,
-0x4a, 0xc5, 0xf8, 0x99, 0x5b, 0x6e, 0x9a, 0xbc,
-0x01, 0x07, 0x29, 0xb7, 0xd8, 0x94, 0x8f, 0xff,
-0x6c, 0x14, 0x0f, 0x83, 0x4f, 0xd2, 0x6e, 0xff,
-0xf8, 0xfe, 0x5f, 0x5e, 0xbc, 0xcd, 0x66, 0x7f,
-0xe0, 0xe9, 0x5e, 0xa2, 0xd8, 0x83, 0xd0, 0x31,
-0x89, 0xfc, 0x4a, 0x8a, 0xff, 0x13, 0xf7, 0xf8,
-0xf0, 0xbb, 0x65, 0x0c, 0x41, 0xd8, 0x3f, 0x93,
-0x41, 0xff, 0xaf, 0x32, 0x7c, 0xf8, 0x75, 0x70,
-0x33, 0xbc, 0x93, 0x11, 0xe1, 0x41, 0x29, 0xc5,
-0xff, 0x91, 0xf2, 0xc3, 0x1a, 0x5e, 0xfc, 0x67,
-0xc7, 0x10, 0xf4, 0x0b, 0xed, 0xe1, 0x42, 0x4b,
-0xf0, 0xfc, 0xeb, 0x5e, 0xe0, 0xfc, 0x67, 0xca,
-0xa7, 0x3d, 0x37, 0x63, 0xb7, 0x7c, 0x04, 0x4e,
-0xc6, 0xb4, 0x83, 0x34, 0x55, 0x74, 0xfe, 0x15,
-0xaf, 0x36, 0x1f, 0xcd, 0x8f, 0x74, 0x71, 0x9e,
-0xe8, 0xc7, 0x3f, 0x8c, 0x56, 0xa9, 0xff, 0x1e,
-0x1c, 0x1c, 0xe6, 0xfd, 0xef, 0xc7, 0x77, 0x3a,
-0x50, 0xac, 0x4f, 0x56, 0x6d, 0xf1, 0xfd, 0x4f,
-0x0f, 0xf1, 0xf3, 0xf4, 0x0a, 0xf1, 0x9f, 0xcb,
-0xf2, 0x9f, 0x87, 0xc5, 0x8b, 0x4b, 0xf1, 0x9f,
-0x83, 0xf7, 0x0f, 0x8b, 0xe3, 0xb9, 0x8d, 0x08,
-0x0b, 0x9b, 0xcf, 0x7f, 0x0a, 0xea, 0xd3, 0x7a,
-0x65, 0xfe, 0x83, 0x03, 0xf3, 0xb9, 0x2a, 0xf1,
-0x0f, 0x4b, 0x80, 0x56, 0xca, 0x7f, 0xfc, 0xf5,
-0xee, 0x1d, 0x9b, 0x81, 0x86, 0x19, 0xf8, 0x4f,
-0x7c, 0x91, 0xeb, 0xed, 0xfe, 0x0e, 0x07, 0x22,
-0xfe, 0x1e, 0x15, 0x86, 0x20, 0xbb, 0x6a, 0x7e,
-0x58, 0x0e, 0x6a, 0xa5, 0xfa, 0xf8, 0x84, 0xe1,
-0x62, 0xff, 0x2f, 0x08, 0xf0, 0x1f, 0x7c, 0xbe,
-0xb8, 0xff, 0xb3, 0xd9, 0x29, 0xc9, 0x16, 0xf9,
-0x7f, 0x0d, 0x82, 0xcb, 0x7f, 0x9a, 0xc5, 0x6b,
-0x36, 0x48, 0xef, 0x5b, 0xd0, 0x4e, 0x97, 0xc4,
-0x7f, 0xae, 0xc6, 0x67, 0xce, 0xec, 0x72, 0x3c,
-0xe2, 0xcb, 0xda, 0x7f, 0x44, 0x36, 0xd8, 0x35,
-0xfe, 0xb5, 0xf0, 0xc8, 0xaf, 0xe1, 0xa7, 0xc5,
-0xe7, 0x5f, 0xd5, 0xf3, 0xc3, 0x6a, 0x63, 0xc5,
-0xfc, 0xe7, 0x5e, 0x28, 0xba, 0xff, 0xfc, 0x27,
-0x7a, 0x93, 0xec, 0xff, 0xd5, 0x56, 0x14, 0xff,
-0x67, 0x77, 0xf9, 0xfc, 0xb0, 0xa2, 0x3f, 0x4f,
-0x8c, 0x09, 0xff, 0xaf, 0xb4, 0x14, 0xff, 0xb9,
-0x3c, 0xff, 0xf1, 0xfc, 0xd7, 0x04, 0x11, 0x92,
-0xe2, 0x1f, 0xc2, 0x2e, 0xea, 0x57, 0x53, 0x8a,
-0x68, 0x9e, 0xe2, 0xda, 0x7f, 0xfc, 0xf8, 0x87,
-0xd2, 0x78, 0x33, 0x9c, 0xc4, 0x7c, 0xd2, 0xc0,
-0x3b, 0x50, 0xec, 0xff, 0x25, 0xe5, 0x87, 0xfd,
-0xc8, 0xf6, 0x69, 0x0f, 0xbd, 0x4e, 0xf8, 0x7f,
-0xfd, 0x5d, 0x31, 0xff, 0x91, 0xf6, 0xe3, 0x05,
-0x0e, 0xe4, 0xf8, 0xab, 0xa7, 0x94, 0x11, 0xa1,
-0xba, 0x0f, 0x7a, 0xe3, 0x81, 0xf8, 0x41, 0xda,
-0xa7, 0x75, 0x31, 0x7f, 0x95, 0x23, 0xfa, 0x8b,
-0xe4, 0x2f, 0x84, 0x61, 0x64, 0xbb, 0xe3, 0xff,
-0xe5, 0x3e, 0x1e, 0xb4, 0x31, 0x8f, 0xff, 0x88,
-0xfc, 0xb0, 0x73, 0x25, 0xfe, 0xf3, 0x1b, 0x78,
-0x55, 0x80, 0x83, 0xde, 0xfd, 0xe7, 0x36, 0x5f,
-0xff, 0xc8, 0xf9, 0x40, 0x15, 0x67, 0x59, 0x77,
-0xf9, 0xcf, 0x76, 0xf7, 0x7d, 0xcd, 0x47, 0x7f,
-0xdc, 0xef, 0xac, 0x56, 0x6f, 0xc1, 0xfb, 0xa3,
-0x08, 0xce, 0xb1, 0x40, 0xbe, 0x3b, 0x44, 0xc6,
-0x34, 0xb8, 0x30, 0xca, 0x7f, 0x0a, 0xe4, 0x87,
-0xf5, 0xb4, 0x8d, 0xc8, 0xef, 0x76, 0x33, 0x8b,
-0xff, 0x9c, 0x17, 0x86, 0x1d, 0xeb, 0x07, 0xce,
-0xfd, 0x67, 0xcf, 0xfe, 0x93, 0x87, 0x27, 0x75,
-0xf7, 0x7d, 0xbd, 0x8b, 0x40, 0xa6, 0xe3, 0xf6,
-0x7e, 0xa8, 0xd4, 0xff, 0x4b, 0x8a, 0x7f, 0x38,
-0xc5, 0x77, 0xf7, 0x07, 0x27, 0x7c, 0x45, 0x34,
-0xc5, 0x23, 0xfa, 0x06, 0xf8, 0x8f, 0xa6, 0x3e,
-0x43, 0xbd, 0xf7, 0xfd, 0x5e, 0xa9, 0x61, 0x87,
-0x3e, 0x50, 0x68, 0x0c, 0xc4, 0x7f, 0x26, 0x5e,
-0x3c, 0xde, 0xe3, 0x3e, 0x11, 0x72, 0x0d, 0x23,
-0xf1, 0xb3, 0xee, 0xa3, 0xdc, 0xfa, 0xc4, 0x5f,
-0xef, 0x4e, 0xf3, 0xb4, 0x68, 0x8d, 0xa7, 0x95,
-0xaf, 0x53, 0x56, 0x12, 0x3d, 0x1d, 0xb9, 0x80,
-0x0b, 0xfd, 0xf5, 0x85, 0x40, 0xfc, 0x9f, 0xc9,
-0xb8, 0xe7, 0xbf, 0x33, 0xe9, 0xde, 0xdf, 0x10,
-0x2b, 0x5a, 0x03, 0xae, 0x5f, 0xda, 0x4b, 0xb9,
-0x56, 0xe1, 0xff, 0xe5, 0x7e, 0x2f, 0x1b, 0x16,
-0xc3, 0x32, 0x85, 0xb3, 0x9d, 0x93, 0xc1, 0xb4,
-0x68, 0x3c, 0x70, 0xf1, 0x0f, 0xc5, 0xc2, 0x17,
-0xe0, 0x3f, 0x9a, 0xc3, 0x7f, 0x9c, 0xfc, 0xb0,
-0x3f, 0x50, 0xbe, 0x39, 0xfa, 0xbc, 0xc1, 0xdd,
-0xa0, 0x0e, 0x68, 0x13, 0x90, 0x2f, 0xac, 0x4a,
-0x35, 0x49, 0xfc, 0x07, 0x36, 0xfb, 0xe3, 0x81,
-0xe7, 0xcf, 0x7d, 0x39, 0xf2, 0x3e, 0x7c, 0xf4,
-0xf4, 0xad, 0x4e, 0xa0, 0x48, 0x45, 0xac, 0xef,
-0x1e, 0xff, 0xc9, 0xfa, 0xf7, 0x9f, 0x4f, 0x13,
-0x0e, 0x5e, 0x8e, 0x3c, 0xe8, 0x84, 0xed, 0x65,
-0x1e, 0xdf, 0xb4, 0x4c, 0xfc, 0x9f, 0xa3, 0xf6,
-0x4d, 0xdc, 0x6c, 0x18, 0xbc, 0x48, 0x1f, 0x3d,
-0x1b, 0x79, 0x8f, 0x1e, 0x1c, 0x2e, 0xf2, 0xff,
-0x92, 0xed, 0x3f, 0xfa, 0x32, 0x04, 0x11, 0x97,
-0x08, 0xd5, 0xb9, 0xf6, 0x9f, 0x80, 0xff, 0x97,
-0x63, 0xff, 0x29, 0xbd, 0xff, 0xcc, 0x8e, 0x75,
-0x4e, 0x71, 0xff, 0xa6, 0x64, 0xc0, 0xff, 0xcb,
-0xb1, 0xff, 0x44, 0x26, 0xf4, 0x53, 0xb0, 0x4c,
-0xf6, 0xff, 0xfa, 0x86, 0x6b, 0xff, 0xa9, 0x9b,
-0x48, 0x4b, 0xf6, 0x9f, 0xf8, 0x33, 0xf1, 0xff,
-0x20, 0x37, 0x4e, 0x36, 0x4e, 0x90, 0x53, 0xf0,
-0x37, 0xe2, 0x36, 0xb8, 0x18, 0x3f, 0xec, 0xfc,
-0x45, 0x3f, 0xc8, 0x01, 0x6e, 0xd5, 0xdd, 0xe7,
-0x1f, 0xb7, 0x5f, 0x86, 0xa3, 0xb0, 0x06, 0x3b,
-0x61, 0xe1, 0xc7, 0xb4, 0xa2, 0x23, 0x58, 0xf9,
-0xf3, 0x2f, 0x37, 0x30, 0xc5, 0x62, 0x8f, 0x11,
-0xb9, 0x25, 0xc5, 0xf9, 0x2f, 0xbe, 0xca, 0x0e,
-0x49, 0x5d, 0xda, 0x16, 0x48, 0x84, 0xc1, 0x03,
-0x63, 0x82, 0x1f, 0xff, 0xd9, 0xe7, 0x3f, 0x69,
-0xff, 0xbc, 0xc6, 0x9d, 0x2f, 0xa7, 0x5c, 0x50,
-0x64, 0xff, 0x19, 0x65, 0xab, 0x7f, 0xda, 0x3b,
-0x0f, 0x92, 0x3d, 0xc2, 0xf2, 0xd7, 0x8a, 0xab,
-0x41, 0xee, 0xf3, 0x85, 0xfd, 0x67, 0x71, 0xa1,
-0xb1, 0xdd, 0xe5, 0x3f, 0x13, 0x11, 0xc1, 0x88,
-0xae, 0x60, 0xf1, 0x9f, 0x3f, 0xc8, 0xf3, 0x40,
-0xd0, 0xb2, 0xfd, 0xe7, 0x16, 0xb9, 0x37, 0xae,
-0x28, 0x34, 0xca, 0xf1, 0x7f, 0xcc, 0x0b, 0xfa,
-0xad, 0xe5, 0xed, 0x3f, 0xb8, 0x49, 0x29, 0x4a,
-0x9b, 0x2b, 0x25, 0x3a, 0x0c, 0xda, 0x7f, 0x74,
-0xcf, 0x6c, 0x5e, 0x7e, 0x63, 0xb5, 0x4a, 0xf6,
-0xff, 0xaa, 0x66, 0xff, 0x49, 0x7b, 0x25, 0xc7,
-0x66, 0xb2, 0xff, 0x90, 0xcf, 0x64, 0xff, 0xe9,
-0xae, 0x98, 0xff, 0xa2, 0x42, 0x3e, 0x88, 0xd9,
-0xda, 0x7f, 0xe2, 0xe7, 0xc8, 0xc5, 0xf9, 0xbf,
-0x97, 0xe4, 0x87, 0x2d, 0xe1, 0x3f, 0x81, 0xf5,
-0xba, 0x8c, 0xfd, 0x07, 0x66, 0xb2, 0xff, 0x74,
-0x05, 0xec, 0x3f, 0xbb, 0xb5, 0xd9, 0xf8, 0x7f,
-0x5d, 0xac, 0xfd, 0xc7, 0xf7, 0xff, 0x1a, 0x9f,
-0x4d, 0xfc, 0x9f, 0x8b, 0xb6, 0xff, 0xbc, 0x3d,
-0x4b, 0xfb, 0xcf, 0x82, 0x67, 0xc9, 0x62, 0xf3,
-0xa0, 0xde, 0x5a, 0xe9, 0xfc, 0xab, 0x02, 0xa8,
-0x91, 0xfc, 0xdf, 0x8b, 0xe3, 0xff, 0xcc, 0x74,
-0xff, 0x67, 0x56, 0xf6, 0x9f, 0x2a, 0xe7, 0x5f,
-0x25, 0x80, 0x3c, 0x16, 0xc8, 0x7f, 0xf1, 0xf9,
-0xc4, 0xff, 0xf1, 0xec, 0x3f, 0x2d, 0xcc, 0xfe,
-0x43, 0x2f, 0xca, 0xfe, 0x53, 0xfb, 0xe1, 0x43,
-0x33, 0xda, 0x7f, 0x7c, 0xff, 0xaf, 0xcb, 0x9e,
-0x51, 0x2b, 0xef, 0xbf, 0x74, 0x71, 0xff, 0xa7,
-0x3b, 0x60, 0xff, 0x31, 0x8f, 0xe6, 0x3a, 0x8f,
-0x3b, 0xf1, 0x7f, 0x4a, 0xec, 0x3f, 0x06, 0x27,
-0x42, 0x45, 0xf6, 0x1f, 0xdd, 0x8f, 0xf6, 0xe3,
-0x35, 0xfb, 0xe4, 0x2a, 0x6e, 0x11, 0xd2, 0x17,
-0x1f, 0x0b, 0xd8, 0x7f, 0xc6, 0xe1, 0x49, 0xf2,
-0xa2, 0x52, 0xc1, 0xec, 0x73, 0x84, 0x3d, 0x8a,
-0x81, 0x29, 0xcf, 0xff, 0xcb, 0xa2, 0xaf, 0xab,
-0xc5, 0xda, 0xe6, 0x75, 0x4f, 0xc3, 0xc7, 0x9d,
-0x9f, 0x7c, 0xfe, 0xb3, 0x34, 0xf1, 0x8c, 0x97,
-0xc6, 0x42, 0x2f, 0x56, 0x9b, 0xa7, 0x54, 0x87,
-0xf8, 0x95, 0x8f, 0xff, 0x43, 0x8a, 0x17, 0x26,
-0xef, 0x86, 0x8c, 0x1f, 0xff, 0x27, 0xeb, 0xd9,
-0x7f, 0xaa, 0xc5, 0xfb, 0xf5, 0xd7, 0xeb, 0xc9,
-0xd1, 0xcd, 0x7a, 0x79, 0x7b, 0x8e, 0xb7, 0xa2,
-0x3d, 0x12, 0xf4, 0xff, 0xda, 0xac, 0x8b, 0x43,
-0x99, 0xb5, 0x22, 0xbb, 0x41, 0x1d, 0xaf, 0xa6,
-0xcc, 0x10, 0xff, 0x07, 0x3b, 0xe1, 0x1e, 0x2f,
-0xdb, 0x05, 0xf6, 0x4f, 0xcd, 0xe6, 0x03, 0xee,
-0xc1, 0xeb, 0xde, 0x80, 0xff, 0x97, 0xad, 0x6d,
-0xa6, 0xff, 0x23, 0x3a, 0xc1, 0xcb, 0x76, 0xe1,
-0xdd, 0xff, 0x79, 0x97, 0x5d, 0x44, 0x39, 0x8c,
-0xe3, 0xa1, 0xc8, 0xfe, 0x23, 0x48, 0x8e, 0x97,
-0xed, 0xe2, 0x63, 0x37, 0xec, 0xcf, 0xc7, 0xf9,
-0x0b, 0x6d, 0xb7, 0xbe, 0x16, 0xe0, 0x3f, 0x15,
-0xf2, 0xf1, 0xe5, 0x5f, 0xff, 0x5d, 0xe7, 0xe3,
-0x6b, 0xd5, 0xc1, 0xcd, 0x8e, 0xa7, 0x8d, 0x2a,
-0x2d, 0x30, 0x86, 0x25, 0x1e, 0xf8, 0x4c, 0xcf,
-0x0f, 0xf3, 0x21, 0x7e, 0x9e, 0xf9, 0x10, 0xcd,
-0xa2, 0x12, 0xa8, 0x94, 0x0f, 0x71, 0x41, 0xa1,
-0xf4, 0xb1, 0x0f, 0xa7, 0x10, 0xfc, 0x65, 0xf9,
-0x7c, 0x88, 0x7a, 0x99, 0x8e, 0xa4, 0x0c, 0x98,
-0xe5, 0xfb, 0x5f, 0x2f, 0xd3, 0xed, 0xa3, 0x0c,
-0x98, 0xe5, 0xf3, 0x21, 0x46, 0x0b, 0x95, 0xfb,
-0x3c, 0xcc, 0x87, 0x58, 0x1d, 0xfc, 0x21, 0xd7,
-0xff, 0x02, 0xe7, 0x23, 0xd7, 0x7e, 0x4c, 0x1f,
-0x3a, 0x1a, 0x52, 0x0b, 0xf3, 0xc3, 0xca, 0xfd,
-0xff, 0x70, 0xea, 0xf3, 0xed, 0x7f, 0x7b, 0xd6,
-0xfa, 0x90, 0x29, 0x3d, 0xfe, 0xb4, 0x30, 0x3f,
-0x6c, 0x91, 0x84, 0xfa, 0xf0, 0xf7, 0xbc, 0xfe,
-0xbe, 0xae, 0xc8, 0x16, 0xf3, 0x88, 0x7e, 0x13,
-0xa8, 0x59, 0x01, 0xe2, 0xea, 0xbe, 0xc8, 0x56,
-0x73, 0x48, 0xbf, 0x2f, 0xde, 0xf0, 0x2a, 0x03,
-0x99, 0xf9, 0xf4, 0xb2, 0x42, 0xbb, 0x57, 0xbf,
-0xb7, 0x47, 0xdd, 0x4a, 0x86, 0xcc, 0x3b, 0x75,
-0x70, 0x81, 0x3a, 0xc5, 0x41, 0xb7, 0x9e, 0x98,
-0x22, 0xa2, 0x24, 0x51, 0x88, 0xb9, 0x7c, 0x15,
-0x6c, 0x85, 0x18, 0x76, 0xbf, 0xd1, 0xa4, 0xd1,
-0x61, 0x01, 0x92, 0x74, 0x3b, 0x69, 0x41, 0x30,
-0xdf, 0x29, 0xb1, 0xf0, 0x27, 0xdb, 0xf0, 0x9e,
-0x6f, 0x03, 0xb1, 0x60, 0x10, 0xe6, 0xc1, 0x4e,
-0x5b, 0x00, 0x4d, 0x45, 0x40, 0x06, 0x95, 0x79,
-0x49, 0x75, 0x94, 0x6c, 0x24, 0x83, 0xb0, 0x01,
-0x12, 0x52, 0xfd, 0x7d, 0x83, 0x57, 0xde, 0x48,
-0x6e, 0xb3, 0xd7, 0x75, 0xd1, 0x31, 0x75, 0x1b,
-0x19, 0xb2, 0xef, 0x34, 0x12, 0x07, 0x38, 0x98,
-0x8f, 0x80, 0x20, 0xc8, 0x63, 0x49, 0xa1, 0xdd,
-0x6b, 0xcf, 0xbe, 0x2e, 0xd3, 0xd0, 0x35, 0xaa,
-0x10, 0xfc, 0x9f, 0x2c, 0x48, 0x9a, 0x35, 0x40,
-0x86, 0xc1, 0xb2, 0x93, 0xd0, 0x07, 0xc4, 0xa6,
-0x06, 0x02, 0x2c, 0xb1, 0xfd, 0xf7, 0xdd, 0xd7,
-0x4f, 0xef, 0x26, 0x49, 0xbb, 0xcf, 0x80, 0x31,
-0xda, 0x4a, 0x34, 0x3b, 0x6d, 0xe8, 0x63, 0xd4,
-0x10, 0xc0, 0xa6, 0x16, 0xd1, 0x80, 0x01, 0xa9,
-0xfe, 0x2a, 0x75, 0x6d, 0x76, 0x20, 0xbf, 0xbe,
-0x8d, 0xce, 0x55, 0xd3, 0xd9, 0xcc, 0xe9, 0x81,
-0xb6, 0x44, 0x9d, 0xda, 0x35, 0x9a, 0xc9, 0x23,
-0xa8, 0x51, 0xcd, 0xd1, 0x8c, 0x11, 0xbf, 0x45,
-0x05, 0xbf, 0x3d, 0xf6, 0x02, 0x32, 0x07, 0xd6,
-0x17, 0x12, 0x19, 0x7a, 0x39, 0xb9, 0x13, 0x41,
-0x6c, 0x8b, 0x3a, 0x44, 0xd6, 0xc1, 0x40, 0x21,
-0x91, 0x52, 0xff, 0x94, 0x44, 0x18, 0x58, 0x4a,
-0x3d, 0xf3, 0x0f, 0xd6, 0x67, 0x1a, 0xa0, 0x09,
-0xa8, 0xad, 0x53, 0xa6, 0xf9, 0x4c, 0x02, 0x31,
-0x80, 0x6e, 0x1b, 0xb5, 0x97, 0x4e, 0x28, 0xaa,
-0x86, 0xa4, 0x4d, 0x75, 0xe8, 0x92, 0xfa, 0xc7,
-0x52, 0x34, 0x60, 0x1d, 0x9d, 0xcc, 0x33, 0x00,
-0x2d, 0xa8, 0x43, 0x38, 0x30, 0x6c, 0xcd, 0xa8,
-0x71, 0x40, 0x97, 0xd4, 0x3f, 0x19, 0x75, 0x11,
-0xf9, 0x63, 0xd8, 0x60, 0xc6, 0x73, 0x64, 0x13,
-0x07, 0x89, 0x9c, 0x6a, 0xc1, 0x61, 0xd6, 0xed,
-0x39, 0xd5, 0x20, 0x87, 0xe1, 0x6b, 0xd8, 0xff,
-0xd2, 0xfb, 0x9a, 0x11, 0xf6, 0x99, 0x6e, 0xc4,
-0x16, 0x45, 0x58, 0xb5, 0xaf, 0xc1, 0x6d, 0x76,
-0xe4, 0x6e, 0x2c, 0xb9, 0x89, 0x1d, 0x25, 0x21,
-0xb0, 0xe7, 0x21, 0x90, 0xc6, 0x4f, 0x9a, 0xa6,
-0xec, 0xa8, 0xd1, 0xad, 0x69, 0xc3, 0x34, 0x95,
-0x65, 0x40, 0xdf, 0xcb, 0x41, 0x1f, 0x02, 0x70,
-0x4a, 0xa4, 0xef, 0x85, 0x92, 0xc2, 0x3d, 0x55,
-0x84, 0x8d, 0x0c, 0x07, 0x14, 0x38, 0x50, 0xd8,
-0x61, 0x8b, 0x5b, 0x22, 0xf5, 0x8f, 0x42, 0x52,
-0xf6, 0x6a, 0xa3, 0x99, 0x8d, 0x2e, 0x06, 0xd6,
-0x69, 0x74, 0x2f, 0x49, 0x4d, 0xf2, 0x92, 0x83,
-0x0c, 0xa4, 0xb0, 0x44, 0xaa, 0xbf, 0x2f, 0xad,
-0x5a, 0xd9, 0x41, 0x63, 0x03, 0xd0, 0x61, 0x01,
-0xb4, 0x04, 0x82, 0x49, 0x0e, 0x46, 0x08, 0x4c,
-0x0e, 0xa6, 0x10, 0xd8, 0x52, 0xff, 0xa4, 0x79,
-0xcf, 0xf1, 0x2e, 0x04, 0x17, 0x18, 0xf8, 0x46,
-0x0c, 0x50, 0x06, 0x22, 0x1a, 0xc8, 0xef, 0xbb,
-0x96, 0x5a, 0xd9, 0xa4, 0xd1, 0xd7, 0x0f, 0x3b,
-0x10, 0x5c, 0x82, 0xaf, 0x19, 0x1b, 0xa6, 0x9b,
-0xd8, 0xfb, 0xf6, 0xc7, 0x76, 0x50, 0x83, 0xbd,
-0x6f, 0x7f, 0xcc, 0x8e, 0x49, 0xdf, 0x4b, 0x1d,
-0x24, 0x1b, 0x60, 0x3d, 0x8e, 0x45, 0x0e, 0x12,
-0x76, 0x02, 0x4b, 0x68, 0x1f, 0x96, 0x20, 0xd0,
-0x70, 0x98, 0xc6, 0xec, 0x84, 0x29, 0x8d, 0x9f,
-0x1a, 0xb2, 0xd5, 0x1e, 0xb0, 0x12, 0xe3, 0xb4,
-0x86, 0x74, 0xd9, 0x19, 0x2b, 0x9e, 0x54, 0x4b,
-0x01, 0x18, 0xde, 0x92, 0x54, 0x68, 0xc2, 0x4d,
-0xb3, 0x66, 0x00, 0xb6, 0x07, 0xa7, 0x40, 0x97,
-0x98, 0x0b, 0xd4, 0xc6, 0x49, 0xd1, 0x4f, 0x9b,
-0xb0, 0x84, 0x03, 0xef, 0x78, 0x01, 0xdb, 0xd3,
-0xa7, 0xc4, 0xb2, 0xa3, 0x56, 0x4b, 0x32, 0xd9,
-0x17, 0xb9, 0xc3, 0x3e, 0x64, 0xdd, 0x90, 0x6c,
-0x60, 0x60, 0x8a, 0x83, 0x39, 0x4e, 0x89, 0xd4,
-0x9e, 0xa9, 0x3e, 0xb2, 0x35, 0x3b, 0x64, 0xdd,
-0xa9, 0x5f, 0xb6, 0x5f, 0xe5, 0x20, 0x99, 0x60,
-0xe0, 0xb0, 0xe9, 0x80, 0x23, 0xd6, 0x7d, 0xc9,
-0x84, 0xac, 0x4f, 0xb0, 0xbe, 0x3d, 0x64, 0xdd,
-0x94, 0x6c, 0xd8, 0x1f, 0xd9, 0x6a, 0x1f, 0x71,
-0x40, 0x56, 0x94, 0x34, 0xb3, 0x9f, 0xe6, 0x27,
-0x1b, 0x0a, 0x31, 0xa9, 0x3e, 0xe5, 0x8f, 0x1d,
-0x84, 0xfd, 0x09, 0x06, 0xe6, 0xb3, 0xc7, 0xde,
-0xf1, 0x50, 0x94, 0xff, 0x47, 0xd0, 0x92, 0x8d,
-0x5a, 0xcb, 0x93, 0xeb, 0x25, 0xfd, 0x03, 0x6c,
-0x3c, 0xf4, 0xb7, 0x34, 0x69, 0xea, 0xb0, 0xac,
-0x88, 0x86, 0x7c, 0x80, 0x03, 0xc3, 0x96, 0x46,
-0x1b, 0xeb, 0xb4, 0x41, 0x6b, 0x5e, 0x32, 0xbe,
-0x9d, 0x6c, 0xe4, 0x40, 0x95, 0x40, 0x4b, 0x76,
-0xd0, 0xda, 0x90, 0x54, 0xa5, 0xfa, 0xbd, 0x66,
-0x22, 0x45, 0x56, 0xc3, 0x3a, 0x1c, 0xff, 0xea,
-0x16, 0x32, 0x04, 0xcb, 0x21, 0x51, 0xe0, 0xe0,
-0x4e, 0x04, 0x24, 0xe5, 0x00, 0xbf, 0x3d, 0xbd,
-0x38, 0x7e, 0xf2, 0x5a, 0x9b, 0x52, 0x07, 0x5c,
-0xed, 0xe0, 0x14, 0x24, 0x3e, 0x60, 0xfa, 0x87,
-0x01, 0x69, 0x3c, 0xf4, 0xae, 0xa4, 0xd6, 0xb7,
-0x71, 0xfc, 0xd4, 0xb1, 0xd1, 0x85, 0x1f, 0x2e,
-0xad, 0xe9, 0x12, 0xb0, 0x04, 0x90, 0xeb, 0x77,
-0x5d, 0x99, 0xe9, 0x1a, 0x68, 0x5a, 0x8f, 0xec,
-0x53, 0x35, 0xb3, 0x19, 0x63, 0x40, 0x8b, 0x31,
-0x70, 0x07, 0x82, 0x44, 0x24, 0x91, 0xb1, 0x51,
-0xff, 0x68, 0x09, 0x90, 0xfa, 0xa7, 0x8e, 0x64,
-0x0e, 0x0c, 0xa4, 0x12, 0x1a, 0x8d, 0x90, 0x4c,
-0x61, 0xc0, 0x48, 0x44, 0xd5, 0x6e, 0x06, 0x52,
-0x08, 0xd2, 0x02, 0x68, 0xaa, 0x29, 0xf5, 0x0f,
-0x98, 0x66, 0x4c, 0xa7, 0x94, 0xe0, 0x0e, 0x2f,
-0x0d, 0xa8, 0x02, 0x0d, 0xa6, 0x02, 0x29, 0x07,
-0x00, 0x77, 0x83, 0x03, 0xfc, 0xf6, 0xa4, 0x15,
-0xc5, 0xb6, 0xf3, 0x46, 0xbf, 0xad, 0x28, 0x60,
-0x33, 0xed, 0xa5, 0x31, 0x90, 0x6d, 0x33, 0x10,
-0x00, 0x2b, 0x41, 0x20, 0xb5, 0xa7, 0xd7, 0x9c,
-0x63, 0x31, 0x25, 0x1f, 0xc1, 0xfe, 0xb4, 0x1c,
-0x6d, 0x8f, 0xe0, 0x30, 0x65, 0xa0, 0xc1, 0x72,
-0xf4, 0x8f, 0x34, 0x5f, 0xcc, 0xf9, 0x4c, 0xed,
-0xcc, 0x8b, 0x3c, 0x6a, 0x47, 0x18, 0xb8, 0x91,
-0xa9, 0x1d, 0x8b, 0x0e, 0x51, 0x06, 0xe6, 0x18,
-0x30, 0x04, 0xf3, 0x11, 0x48, 0x0d, 0x22, 0x34,
-0x45, 0x98, 0xd2, 0xb0, 0x6d, 0x0e, 0xba, 0x41,
-0x2f, 0x20, 0x48, 0x2a, 0x0c, 0x28, 0x06, 0x61,
-0x0b, 0x81, 0x5e, 0x90, 0xc7, 0x83, 0x50, 0x32,
-0x26, 0x92, 0xbb, 0x76, 0x88, 0x9a, 0x91, 0x41,
-0x38, 0x04, 0x4b, 0xa0, 0x96, 0x95, 0x1c, 0x32,
-0x17, 0x21, 0x50, 0x4c, 0x90, 0xeb, 0xab, 0x6a,
-0xbb, 0xb9, 0x3a, 0xd3, 0x9c, 0xdb, 0x39, 0x42,
-0x10, 0x98, 0xcd, 0x71, 0xfa, 0x2a, 0x69, 0xef,
-0xba, 0x3d, 0x83, 0x60, 0x3f, 0x69, 0xe9, 0x5a,
-0x9d, 0x59, 0xa7, 0x53, 0xb9, 0xfe, 0x42, 0xf5,
-0xde, 0xc9, 0xbb, 0x52, 0x1b, 0xc6, 0xe8, 0x3f,
-0xaa, 0x7f, 0x3e, 0x79, 0xd7, 0x96, 0x0d, 0x4f,
-0x26, 0xfe, 0x89, 0x95, 0x18, 0x1b, 0x1e, 0x15,
-0x20, 0x85, 0x40, 0x6e, 0x3f, 0xe5, 0x49, 0x01,
-0xf1, 0x3f, 0x15, 0x5b, 0x69, 0x04, 0x39, 0x58,
-0x24, 0xda, 0x23, 0x00, 0xff, 0x49, 0x92, 0x1e,
-0x2b, 0x96, 0xa4, 0x7d, 0x04, 0xd7, 0x2f, 0xb1,
-0x90, 0xc5, 0x10, 0xc4, 0x92, 0xa3, 0xdd, 0x2d,
-0x31, 0xbb, 0x87, 0x81, 0x3e, 0x04, 0x72, 0xfd,
-0x8d, 0x99, 0xd8, 0x00, 0x5d, 0x8f, 0x8b, 0x89,
-0x8a, 0xa0, 0x67, 0x3d, 0x49, 0x98, 0xbd, 0x19,
-0x18, 0xa0, 0x77, 0x40, 0xc2, 0xec, 0xca, 0xe8,
-0x03, 0xd1, 0x04, 0x96, 0x48, 0xd5, 0xb5, 0x16,
-0x45, 0x33, 0x87, 0x75, 0x63, 0x54, 0x6b, 0x49,
-0x6b, 0x99, 0xe1, 0xb8, 0xa1, 0x6a, 0xc4, 0x05,
-0x1b, 0xd7, 0xb6, 0x71, 0x20, 0x3f, 0xbe, 0x0e,
-0x14, 0x1b, 0xf2, 0x99, 0x36, 0x1c, 0x78, 0x8a,
-0x6d, 0xe6, 0xf5, 0x36, 0x8a, 0x60, 0x4c, 0x00,
-0x70, 0x4a, 0xe4, 0xfa, 0x51, 0xa5, 0x19, 0x46,
-0x0b, 0x7f, 0x96, 0x4a, 0xae, 0x8e, 0xac, 0x83,
-0x43, 0x85, 0xf6, 0x54, 0x83, 0x00, 0x37, 0x20,
-0xa8, 0x69, 0x16, 0x40, 0x6e, 0x4f, 0xad, 0xba,
-0xad, 0x6b, 0x28, 0xe7, 0xd2, 0x80, 0xb1, 0x79,
-0x02, 0x1c, 0xe1, 0xc4, 0xa0, 0x97, 0x81, 0xfb,
-0x8c, 0x7f, 0x90, 0xfb, 0xbf, 0x7e, 0x65, 0xfa,
-0xe7, 0xb9, 0x17, 0x76, 0x5d, 0x5b, 0xcb, 0xc1,
-0xf7, 0x77, 0x5d, 0xbb, 0xa2, 0x7e, 0xed, 0xca,
-0xe9, 0x1d, 0x2f, 0x2c, 0xfa, 0xe7, 0xda, 0xfa,
-0xf4, 0xca, 0x43, 0x1c, 0xc8, 0xed, 0x59, 0xf6,
-0xe0, 0xed, 0x17, 0xfe, 0x7d, 0xcf, 0x99, 0x77,
-0xcf, 0x71, 0xf0, 0xe2, 0x99, 0xf7, 0xcf, 0x2d,
-0xfb, 0x64, 0xcd, 0xd1, 0x6f, 0x5d, 0x38, 0x71,
-0xfe, 0xdc, 0xb2, 0x07, 0xd6, 0x5c, 0xe0, 0x00,
-0x3e, 0x83, 0xdc, 0xfa, 0x44, 0xed, 0x55, 0xe9,
-0x15, 0xb9, 0x1d, 0x9b, 0x3a, 0xcf, 0x35, 0x7e,
-0xb7, 0xfb, 0x42, 0xee, 0xb7, 0x7f, 0x7b, 0xeb,
-0x53, 0x2b, 0x1e, 0x7c, 0x73, 0x45, 0xee, 0xf1,
-0xf3, 0x9d, 0x17, 0x56, 0x5c, 0xfd, 0xe6, 0x8a,
-0x33, 0x8f, 0x9f, 0x97, 0xeb, 0x77, 0x3e, 0x70,
-0xfb, 0xd1, 0x6f, 0xbd, 0x78, 0xe2, 0xdd, 0x73,
-0x9d, 0x4e, 0x33, 0xce, 0x77, 0xf2, 0x86, 0x9d,
-0x78, 0x1f, 0xeb, 0xdf, 0x7e, 0x94, 0xb5, 0x30,
-0x50, 0x7f, 0xe1, 0xe5, 0xfd, 0x47, 0x77, 0xdc,
-0x74, 0xe2, 0xd1, 0x8d, 0xcb, 0xd8, 0x1f, 0x3e,
-0x8b, 0x7f, 0x88, 0xe0, 0xed, 0xe6, 0x17, 0x47,
-0xdf, 0x3d, 0xb7, 0x30, 0xc9, 0xc1, 0xa9, 0xbf,
-0x0e, 0x34, 0xa8, 0x75, 0x8b, 0xf9, 0xa4, 0x7e,
-0xb5, 0x9e, 0x2d, 0x28, 0x08, 0xe0, 0x6a, 0x5a,
-0x3b, 0x09, 0x5b, 0xb1, 0x64, 0x4e, 0xbc, 0x76,
-0x9f, 0x82, 0x20, 0x73, 0x35, 0x25, 0x72, 0x7f,
-0x52, 0x97, 0x1f, 0x8e, 0x5e, 0xe9, 0xb0, 0x41,
-0xe4, 0x87, 0x30, 0x64, 0xce, 0xe7, 0xc0, 0xe1,
-0x87, 0x52, 0xfd, 0x62, 0x7e, 0xe8, 0x01, 0x5c,
-0x91, 0x19, 0x51, 0xe4, 0xfc, 0x30, 0xd0, 0x20,
-0xa4, 0x6d, 0x50, 0x13, 0xcb, 0xd9, 0x02, 0x30,
-0xda, 0xb6, 0x91, 0x01, 0x8d, 0x6c, 0x47, 0x46,
-0xc4, 0x4a, 0x02, 0xe3, 0x59, 0xeb, 0xd9, 0x46,
-0xa2, 0xc3, 0xdd, 0x0d, 0xf6, 0x58, 0x4f, 0x07,
-0x59, 0x30, 0xba, 0xdc, 0x88, 0x1d, 0xa0, 0xdb,
-0xc8, 0x02, 0x1b, 0xc1, 0xeb, 0x74, 0x5b, 0x96,
-0x83, 0x42, 0xf0, 0xf9, 0x0e, 0x3f, 0xb4, 0x0c,
-0x48, 0xea, 0xec, 0xf9, 0xde, 0x7f, 0xc4, 0x80,
-0xc1, 0x81, 0x2f, 0x51, 0xa4, 0x85, 0x38, 0xad,
-0x32, 0x7c, 0x7e, 0x21, 0x2d, 0xb4, 0xf4, 0x1c,
-0xbd, 0x6a, 0x12, 0xc1, 0x16, 0x7d, 0x9c, 0x5e,
-0x45, 0x6a, 0xed, 0xb4, 0x19, 0xd8, 0xa3, 0x7d,
-0x89, 0xae, 0xcc, 0xce, 0xcb, 0xf7, 0x8e, 0xc1,
-0x75, 0xf4, 0xae, 0x6c, 0xd3, 0x44, 0xcf, 0xd3,
-0xb1, 0x56, 0x58, 0x95, 0x6d, 0xca, 0x23, 0xb8,
-0x0e, 0x7f, 0x42, 0x30, 0x2e, 0xe9, 0x4f, 0xad,
-0xd0, 0x08, 0xcd, 0x10, 0x2f, 0xa8, 0x39, 0x98,
-0x8b, 0x4a, 0x2b, 0x8e, 0xdc, 0x87, 0xaf, 0x36,
-0x58, 0xb2, 0xd4, 0x07, 0xa6, 0xff, 0x07, 0xb8,
-0x55, 0xd5, 0x71, 0xb5, 0xa7, 0x5b, 0x74, 0x36,
-0x8b, 0x70, 0xd9, 0x37, 0x51, 0xa5, 0xf5, 0xb2,
-0xdd, 0x6d, 0x86, 0xc4, 0xf5, 0x1e, 0x64, 0x8b,
-0x74, 0x0b, 0xf1, 0xcc, 0xe7, 0xf8, 0x7c, 0xd3,
-0xb1, 0xbc, 0x25, 0xf9, 0x06, 0x53, 0x17, 0x76,
-0x3a, 0xb6, 0x25, 0x35, 0xc7, 0xf4, 0x56, 0xaa,
-0x65, 0x15, 0x56, 0x22, 0xd7, 0x47, 0xd2, 0xcb,
-0x95, 0x24, 0x53, 0xf4, 0x49, 0x48, 0x63, 0x6f,
-0xd7, 0xb0, 0x92, 0x7b, 0x10, 0xec, 0x12, 0x3f,
-0x5d, 0x62, 0x7b, 0xf5, 0x75, 0x62, 0x2a, 0x16,
-0x8c, 0xc3, 0x55, 0x06, 0xea, 0x2c, 0x0e, 0xa0,
-0x76, 0x0c, 0x36, 0x31, 0xc0, 0xae, 0x32, 0xb1,
-0x9c, 0xf6, 0x57, 0x19, 0xb8, 0x02, 0xba, 0x62,
-0x32, 0x7e, 0xc8, 0x49, 0x91, 0x2e, 0xf3, 0xc3,
-0x31, 0x06, 0x72, 0x7b, 0x97, 0x88, 0x92, 0x9c,
-0xbf, 0x9e, 0xb2, 0x37, 0x2f, 0xe1, 0x87, 0x66,
-0x11, 0x30, 0x0b, 0x9e, 0x7d, 0xde, 0xc4, 0xb7,
-0x4c, 0x71, 0x92, 0xa6, 0x0f, 0x3b, 0x00, 0x5e,
-0xa1, 0x0e, 0xd8, 0x2b, 0x4a, 0xa2, 0x92, 0xfe,
-0x37, 0x7b, 0x4d, 0xc1, 0xdf, 0xd8, 0xd1, 0x25,
-0x02, 0x40, 0xfe, 0x36, 0xc2, 0x7a, 0xc0, 0x60,
-0x44, 0x4c, 0xfc, 0x44, 0x91, 0xbf, 0x79, 0xed,
-0x21, 0x12, 0x3f, 0xf4, 0x40, 0xaa, 0xa8, 0xc4,
-0x7f, 0x7e, 0x86, 0xa4, 0xc5, 0x43, 0x18, 0x7b,
-0x14, 0x20, 0xc6, 0x5e, 0xdc, 0x01, 0xa2, 0xa4,
-0xa8, 0x3d, 0xf8, 0x21, 0xf1, 0x8b, 0x02, 0x38,
-0x20, 0x86, 0xdb, 0x00, 0x07, 0xb8, 0x3f, 0xa5,
-0xbd, 0xf6, 0xf4, 0xe3, 0xb8, 0xed, 0xb2, 0xe3,
-0x96, 0xca, 0x06, 0xf0, 0x56, 0x5b, 0xb7, 0x68,
-0x92, 0xb0, 0x92, 0x20, 0xf0, 0x87, 0x4f, 0x3f,
-0xb0, 0x91, 0xef, 0xf1, 0x5b, 0x6f, 0xaf, 0x14,
-0x04, 0x20, 0xb5, 0x67, 0x03, 0xb2, 0x41, 0xe4,
-0x87, 0x83, 0xda, 0x06, 0x25, 0x66, 0xff, 0xcc,
-0xe5, 0x87, 0x03, 0x2e, 0x10, 0xfc, 0xd0, 0x5f,
-0xdf, 0x09, 0xe3, 0x6f, 0x0b, 0xac, 0xe5, 0x7a,
-0x6c, 0xbf, 0x00, 0xc9, 0xd8, 0xfe, 0x9a, 0xbf,
-0x22, 0x08, 0x32, 0xb1, 0x43, 0x74, 0x2b, 0x59,
-0x60, 0x2e, 0x1f, 0xbc, 0x44, 0x7a, 0x5f, 0xd2,
-0x87, 0xb4, 0xf0, 0x49, 0xeb, 0xea, 0x24, 0xd9,
-0xaf, 0x08, 0x50, 0xbb, 0x1f, 0x5c, 0xe0, 0x94,
-0x48, 0xfa, 0x27, 0xd3, 0xdb, 0xa7, 0xb6, 0x73,
-0xda, 0x09, 0x12, 0xff, 0xbc, 0xc1, 0x66, 0x8c,
-0x31, 0xf1, 0xf3, 0x84, 0xa0, 0x8e, 0xfa, 0x5e,
-0x69, 0xfc, 0x34, 0x11, 0x8b, 0x69, 0x1b, 0xc6,
-0x87, 0x0d, 0x7b, 0x85, 0xd0, 0x3f, 0x9b, 0x78,
-0x89, 0xab, 0x88, 0xfa, 0xd5, 0x82, 0xd7, 0x43,
-0x26, 0x0e, 0xe0, 0x8d, 0x76, 0xd2, 0xaa, 0x19,
-0xd7, 0xbf, 0x8b, 0xe0, 0x52, 0xab, 0x26, 0x49,
-0xb6, 0xab, 0xbc, 0x04, 0x81, 0xf8, 0x29, 0x29,
-0xeb, 0x9f, 0x5e, 0x8b, 0xde, 0xdf, 0x32, 0x17,
-0x77, 0x68, 0x90, 0x1f, 0x5d, 0x4a, 0x2e, 0x47,
-0x10, 0x3b, 0xb6, 0xe8, 0x7e, 0x04, 0xcb, 0x11,
-0x50, 0x07, 0x48, 0xe3, 0x99, 0xac, 0x45, 0x36,
-0x88, 0xfd, 0x8f, 0xed, 0xc1, 0xd1, 0x72, 0x09,
-0x7e, 0x08, 0x9c, 0x1d, 0x9b, 0x18, 0x2d, 0xec,
-0x27, 0x3b, 0x04, 0x51, 0xec, 0x97, 0xf4, 0x0f,
-0x8e, 0x37, 0x64, 0x83, 0x7c, 0xfc, 0x7c, 0x83,
-0xb1, 0xc1, 0x7c, 0x5f, 0x80, 0x1f, 0x3a, 0x40,
-0xaa, 0x8f, 0xf3, 0xcb, 0xec, 0x8a, 0xeb, 0xbd,
-0x38, 0x5d, 0x68, 0x26, 0xab, 0x1b, 0xbd, 0x1a,
-0x72, 0x29, 0x13, 0x41, 0x0f, 0x02, 0x2a, 0x00,
-0x01, 0xa9, 0x7f, 0x70, 0xbe, 0x14, 0xe2, 0x1d,
-0xb8, 0xf3, 0xa8, 0xc3, 0x09, 0x15, 0x9f, 0x20,
-0x51, 0xd2, 0x0d, 0x99, 0x42, 0x3c, 0xa5, 0x22,
-0x30, 0x1c, 0x60, 0xfa, 0xcf, 0x47, 0x65, 0xa1,
-0xeb, 0x9c, 0x1f, 0xda, 0x66, 0x2b, 0xaa, 0x1d,
-0x82, 0xfc, 0xd0, 0x74, 0x89, 0xa2, 0x0b, 0xe4,
-0xf1, 0x93, 0x6e, 0x6d, 0x62, 0xfc, 0x50, 0x1b,
-0x57, 0x5a, 0x91, 0x93, 0x75, 0xb4, 0x70, 0x7e,
-0x38, 0x06, 0x86, 0x51, 0x37, 0x86, 0x25, 0x79,
-0xc6, 0x0f, 0xc7, 0xa4, 0xf6, 0x10, 0x57, 0xff,
-0x24, 0x85, 0xfe, 0xe9, 0x73, 0xf5, 0x0f, 0x03,
-0x8b, 0x70, 0x9c, 0x2b, 0x4c, 0xff, 0x48, 0xfd,
-0x63, 0x72, 0x25, 0x53, 0x63, 0x8e, 0xe5, 0x50,
-0x7b, 0x3f, 0x21, 0xd4, 0xce, 0x16, 0x6d, 0x9c,
-0xa0, 0x22, 0xca, 0x39, 0x1a, 0xa9, 0x4b, 0x9e,
-0x5f, 0x16, 0x7e, 0x26, 0x54, 0xb5, 0xd8, 0x26,
-0x1b, 0x81, 0x86, 0x5b, 0xeb, 0x63, 0x70, 0xaf,
-0x86, 0x5f, 0x70, 0x38, 0x77, 0x6c, 0xd1, 0xd2,
-0xda, 0xb9, 0x0a, 0x7e, 0x41, 0x7f, 0xbe, 0x67,
-0x80, 0xc0, 0x57, 0xac, 0xb9, 0x5b, 0x22, 0x2c,
-0x8c, 0x54, 0xca, 0x8c, 0xea, 0x11, 0x0a, 0xaf,
-0x22, 0x31, 0xe3, 0x60, 0x9f, 0x21, 0x4a, 0x6c,
-0xa9, 0x3d, 0xc8, 0xdf, 0x96, 0x98, 0x0d, 0x99,
-0x48, 0x26, 0xb7, 0x13, 0xda, 0xcd, 0x06, 0x33,
-0x32, 0x00, 0x3f, 0xa3, 0xed, 0xfd, 0xd1, 0x4c,
-0x24, 0x0e, 0xbf, 0xc0, 0x12, 0x06, 0xf4, 0xbd,
-0x52, 0x7b, 0xba, 0x29, 0xee, 0x46, 0x53, 0x7d,
-0x49, 0x40, 0xb5, 0x33, 0x99, 0x4c, 0xf5, 0x45,
-0x63, 0x7f, 0xef, 0x82, 0xc7, 0x5d, 0x20, 0xeb,
-0x1f, 0x13, 0xf9, 0x61, 0xb2, 0xe0, 0x1e, 0x9e,
-0x54, 0xb2, 0x23, 0xfa, 0xfd, 0xd3, 0x8f, 0xfc,
-0x50, 0x43, 0x7e, 0x68, 0xdb, 0x9b, 0xee, 0x66,
-0x44, 0xd1, 0x88, 0x8d, 0x53, 0x87, 0x16, 0x7a,
-0x40, 0x1e, 0x3f, 0x66, 0xaf, 0x1a, 0x4b, 0xd4,
-0xf4, 0x22, 0x5d, 0xee, 0xc9, 0xc4, 0xe2, 0xb4,
-0x97, 0xc4, 0x4c, 0x13, 0xd5, 0x0e, 0x15, 0xfa,
-0x87, 0x95, 0x00, 0x31, 0xa5, 0xf1, 0xa3, 0x31,
-0x96, 0xea, 0x6a, 0x3e, 0x7d, 0x58, 0xc5, 0x61,
-0x60, 0xe0, 0x30, 0x18, 0x16, 0x1b, 0x07, 0x3e,
-0x1e, 0xb2, 0x20, 0x09, 0xa3, 0x85, 0x90, 0x37,
-0x83, 0xfc, 0x90, 0x83, 0x1e, 0xaf, 0x44, 0x1e,
-0x3f, 0xb7, 0x2d, 0x5c, 0x67, 0x8e, 0x4e, 0x6f,
-0x5c, 0x32, 0x7e, 0x5b, 0xcd, 0x3a, 0xf3, 0xd0,
-0xb4, 0xb1, 0xa4, 0xe1, 0x36, 0xb2, 0xce, 0x1c,
-0x98, 0xbe, 0x01, 0x41, 0x84, 0x95, 0x20, 0x90,
-0xda, 0x43, 0xfa, 0xe9, 0xb6, 0xae, 0x05, 0x39,
-0x5c, 0xf4, 0x7f, 0xf2, 0xb0, 0x43, 0x03, 0x3c,
-0x3e, 0xc0, 0x01, 0x2c, 0x37, 0x24, 0xfd, 0x83,
-0xeb, 0xb5, 0xcf, 0x0f, 0x57, 0xca, 0xfc, 0x70,
-0x57, 0x05, 0x7e, 0xd8, 0xe9, 0xf3, 0xc3, 0x35,
-0x32, 0x3f, 0x3c, 0xf3, 0x3b, 0xe2, 0x87, 0x57,
-0x32, 0x5a, 0xf8, 0xcb, 0xdc, 0x85, 0xf3, 0x9d,
-0xe7, 0x38, 0x51, 0x44, 0x7e, 0xf8, 0x44, 0x6d,
-0x90, 0x1f, 0x9e, 0x90, 0xeb, 0xf3, 0xff, 0xfd,
-0xc3, 0x13, 0x58, 0xff, 0x13, 0x4e, 0x14, 0x91,
-0x1f, 0x3e, 0x50, 0xc4, 0x0f, 0x03, 0xed, 0x59,
-0xe6, 0xf2, 0xc3, 0x85, 0x97, 0xdf, 0x7e, 0x74,
-0x47, 0x3b, 0x23, 0x96, 0xf7, 0x17, 0xd5, 0x3f,
-0xfe, 0xe9, 0x5b, 0x9f, 0x02, 0x83, 0xe0, 0xfc,
-0xc6, 0x7f, 0xbb, 0xa3, 0x9f, 0xfe, 0x29, 0xa1,
-0x84, 0x12, 0x4a, 0x28, 0xa1, 0x84, 0x12, 0x4a,
-0x28, 0xa1, 0x84, 0x12, 0xca, 0xef, 0xbb, 0xf0,
-0xbd, 0x03, 0x0d, 0xf7, 0x0e, 0xa1, 0x84, 0x12,
-0x4a, 0x28, 0xa1, 0x84, 0x12, 0x4a, 0x28, 0xa1,
-0x84, 0x12, 0x4a, 0x75, 0xe1, 0x7b, 0x87, 0x9a,
-0x70, 0xef, 0x10, 0x4a, 0x28, 0xa1, 0x84, 0x12,
-0x4a, 0x28, 0xa1, 0x84, 0x12, 0x4a, 0x28, 0xa1,
-0x54, 0x17, 0xbe, 0x77, 0xd0, 0xf8, 0xde, 0xe1,
-0xff, 0xba, 0x29, 0xa1, 0x84, 0x12, 0x4a, 0x28,
-0xa1, 0x84, 0x12, 0x4a, 0x28, 0xa1, 0x84, 0x12,
-0xca, 0x17, 0x28, 0x29, 0x16, 0x72, 0x19, 0x5e,
-0xf9, 0x20, 0x05, 0x36, 0xf3, 0x62, 0x8a, 0xa4,
-0xc0, 0xbc, 0xe8, 0xf3, 0x04, 0xe7, 0x6f, 0xd5,
-0x14, 0xe4, 0x89, 0xff, 0xcc, 0xe3, 0x77, 0x15,
-0xd7, 0xfb, 0x5f, 0x2b, 0x92, 0xad, 0x46, 0xf1,
-0x33, 0x01, 0x00,
diff --git a/board/dave/common/fpga.c b/board/dave/common/fpga.c
deleted file mode 100644 (file)
index 0869ca0..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * (C) Copyright 2001-2003
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- * 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>
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef FPGA_DEBUG
-#define DBG(x...) printf(x)
-#else
-#define DBG(x...)
-#endif /* DEBUG */
-
-#define MAX_ONES               226
-
-#ifdef CONFIG_SYS_FPGA_PRG
-# define FPGA_PRG              CONFIG_SYS_FPGA_PRG /* FPGA program pin (ppc output)*/
-# define FPGA_CLK              CONFIG_SYS_FPGA_CLK /* FPGA clk pin (ppc output)    */
-# define FPGA_DATA             CONFIG_SYS_FPGA_DATA /* FPGA data pin (ppc output)  */
-# define FPGA_DONE             CONFIG_SYS_FPGA_DONE /* FPGA done pin (ppc input)   */
-# define FPGA_INIT             CONFIG_SYS_FPGA_INIT /* FPGA init pin (ppc input)   */
-#else
-# define FPGA_PRG              0x04000000  /* FPGA program pin (ppc output) */
-# define FPGA_CLK              0x02000000  /* FPGA clk pin (ppc output)     */
-# define FPGA_DATA             0x01000000  /* FPGA data pin (ppc output)    */
-# define FPGA_DONE             0x00800000  /* FPGA done pin (ppc input)     */
-# define FPGA_INIT             0x00400000  /* FPGA init pin (ppc input)     */
-#endif
-
-#define ERROR_FPGA_PRG_INIT_LOW  -1        /* Timeout after PRG* asserted   */
-#define ERROR_FPGA_PRG_INIT_HIGH -2        /* Timeout after PRG* deasserted */
-#define ERROR_FPGA_PRG_DONE      -3        /* Timeout after programming     */
-
-#define SET_FPGA(data)         out32(GPIO0_OR, data)
-
-#define FPGA_WRITE_1 {                                                    \
-       SET_FPGA(FPGA_PRG |            FPGA_DATA);  /* set clock to 0 */  \
-       SET_FPGA(FPGA_PRG |            FPGA_DATA);  /* set data to 1  */  \
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);  /* set clock to 1 */  \
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1  */
-
-#define FPGA_WRITE_0 {                                                    \
-       SET_FPGA(FPGA_PRG |            FPGA_DATA);  /* set clock to 0 */  \
-       SET_FPGA(FPGA_PRG);                         /* set data to 0  */  \
-       SET_FPGA(FPGA_PRG | FPGA_CLK);              /* set clock to 1 */  \
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1  */
-
-#if 0
-static int fpga_boot (unsigned char *fpgadata, int size)
-{
-       int i, index, len;
-       int count;
-
-#ifdef CONFIG_SYS_FPGA_SPARTAN2
-       int j;
-#else
-       unsigned char b;
-       int bit;
-#endif
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = fpgadata[index];
-               DBG ("FPGA: %s\n", &(fpgadata[index + 1]));
-               index += len + 3;
-       }
-
-#ifdef CONFIG_SYS_FPGA_SPARTAN2
-       /* search for preamble 0xFFFFFFFF */
-       while (1) {
-               if ((fpgadata[index] == 0xff) && (fpgadata[index + 1] == 0xff)
-                   && (fpgadata[index + 2] == 0xff)
-                   && (fpgadata[index + 3] == 0xff))
-                       break;  /* preamble found */
-               else
-                       index++;
-       }
-#else
-       /* search for preamble 0xFF2X */
-       for (index = 0; index < size - 1; index++) {
-               if ((fpgadata[index] == 0xff)
-                   && ((fpgadata[index + 1] & 0xf0) == 0x30))
-                       break;
-       }
-       index += 2;
-#endif
-
-       DBG ("FPGA: configdata starts at position 0x%x\n", index);
-       DBG ("FPGA: length of fpga-data %d\n", size - index);
-
-       /*
-        * Setup port pins for fpga programming
-        */
-       out32 (GPIO0_ODR, 0x00000000);  /* no open drain pins */
-       out32 (GPIO0_TCR, in32 (GPIO0_TCR) | FPGA_PRG | FPGA_CLK | FPGA_DATA);  /* setup for output */
-       out32 (GPIO0_OR, in32 (GPIO0_OR) | FPGA_PRG | FPGA_CLK | FPGA_DATA);    /* set pins to high */
-
-       DBG ("%s, ",
-            ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
-       DBG ("%s\n",
-            ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
-       /*
-        * Init fpga by asserting and deasserting PROGRAM*
-        */
-       SET_FPGA (FPGA_CLK | FPGA_DATA);
-
-       /* Wait for FPGA init line low */
-       count = 0;
-       while (in32 (GPIO0_IR) & FPGA_INIT) {
-               udelay (1000);  /* wait 1ms */
-               /* Check for timeout - 100us max, so use 3ms */
-               if (count++ > 3) {
-                       DBG ("FPGA: Booting failed!\n");
-                       return ERROR_FPGA_PRG_INIT_LOW;
-               }
-       }
-
-       DBG ("%s, ",
-            ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
-       DBG ("%s\n",
-            ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
-       /* deassert PROGRAM* */
-       SET_FPGA (FPGA_PRG | FPGA_CLK | FPGA_DATA);
-
-       /* Wait for FPGA end of init period .  */
-       count = 0;
-       while (!(in32 (GPIO0_IR) & FPGA_INIT)) {
-               udelay (1000);  /* wait 1ms */
-               /* Check for timeout */
-               if (count++ > 3) {
-                       DBG ("FPGA: Booting failed!\n");
-                       return ERROR_FPGA_PRG_INIT_HIGH;
-               }
-       }
-
-       DBG ("%s, ",
-            ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
-       DBG ("%s\n",
-            ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
-       DBG ("write configuration data into fpga\n");
-       /* write configuration-data into fpga... */
-
-#ifdef CONFIG_SYS_FPGA_SPARTAN2
-       /*
-        * Load uncompressed image into fpga
-        */
-       for (i = index; i < size; i++) {
-               for (j = 0; j < 8; j++) {
-                       if ((fpgadata[i] & 0x80) == 0x80) {
-                               FPGA_WRITE_1;
-                       } else {
-                               FPGA_WRITE_0;
-                       }
-                       fpgadata[i] <<= 1;
-               }
-       }
-#else  /* ! CONFIG_SYS_FPGA_SPARTAN2 */
-       /* send 0xff 0x20 */
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_1;
-       FPGA_WRITE_0;
-       FPGA_WRITE_0;
-       FPGA_WRITE_1;
-       FPGA_WRITE_0;
-       FPGA_WRITE_0;
-       FPGA_WRITE_0;
-       FPGA_WRITE_0;
-       FPGA_WRITE_0;
-
-       /*
-        ** Bit_DeCompression
-        **   Code 1           .. maxOnes     : n                 '1's followed by '0'
-        **        maxOnes + 1 .. maxOnes + 1 : n - 1             '1's no '0'
-        **        maxOnes + 2 .. 254         : n - (maxOnes + 2) '0's followed by '1'
-        **        255                        :                   '1'
-        */
-
-       for (i = index; i < size; i++) {
-               b = fpgadata[i];
-               if ((b >= 1) && (b <= MAX_ONES)) {
-                       for (bit = 0; bit < b; bit++) {
-                               FPGA_WRITE_1;
-                       }
-                       FPGA_WRITE_0;
-               } else if (b == (MAX_ONES + 1)) {
-                       for (bit = 1; bit < b; bit++) {
-                               FPGA_WRITE_1;
-                       }
-               } else if ((b >= (MAX_ONES + 2)) && (b <= 254)) {
-                       for (bit = 0; bit < (b - (MAX_ONES + 2)); bit++) {
-                               FPGA_WRITE_0;
-                       }
-                       FPGA_WRITE_1;
-               } else if (b == 255) {
-                       FPGA_WRITE_1;
-               }
-       }
-#endif /* CONFIG_SYS_FPGA_SPARTAN2 */
-
-       DBG ("%s, ",
-            ((in32 (GPIO0_IR) & FPGA_DONE) == 0) ? "NOT DONE" : "DONE");
-       DBG ("%s\n",
-            ((in32 (GPIO0_IR) & FPGA_INIT) == 0) ? "NOT INIT" : "INIT");
-
-       /*
-        * Check if fpga's DONE signal - correctly booted ?
-        */
-
-       /* Wait for FPGA end of programming period .  */
-       count = 0;
-       while (!(in32 (GPIO0_IR) & FPGA_DONE)) {
-               udelay (1000);  /* wait 1ms */
-               /* Check for timeout */
-               if (count++ > 3) {
-                       DBG ("FPGA: Booting failed!\n");
-                       return ERROR_FPGA_PRG_DONE;
-               }
-       }
-
-       DBG ("FPGA: Booting successful!\n");
-       return 0;
-}
-#endif /* 0 */
diff --git a/board/dave/common/pci.c b/board/dave/common/pci.c
deleted file mode 100644 (file)
index 71bc8ac..0000000
+++ /dev/null
@@ -1,186 +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 <pci.h>
-
-
-u_long pci9054_iobase;
-
-
-#define PCI_PRIMARY_CAR        (0x500000dc) /* PCI config address reg */
-#define PCI_PRIMARY_CDR        (0x80000000) /* PCI config data    reg */
-
-
-/*-----------------------------------------------------------------------------+
-|  Subroutine:  pci9054_read_config_dword
-|  Description: Read a PCI configuration register
-|  Inputs:
-|               hose            PCI Controller
-|               dev             PCI Bus+Device+Function number
-|               offset          Configuration register number
-|               value           Address of the configuration register value
-|  Return value:
-|               0               Successful
-+-----------------------------------------------------------------------------*/
-int pci9054_read_config_dword(struct pci_controller *hose,
-                             pci_dev_t dev, int offset, u32* value)
-{
-  unsigned long      conAdrVal;
-  unsigned long      val;
-
-  /* generate coded value for CON_ADR register */
-  conAdrVal = dev | (offset & 0xfc) | 0x80000000;
-
-  /* Load the CON_ADR (CAR) value first, then read from CON_DATA (CDR) */
-  *(unsigned long *)PCI_PRIMARY_CAR = conAdrVal;
-
-  /* Note: *pResult comes back as -1 if machine check happened */
-  val = in32r(PCI_PRIMARY_CDR);
-
-  *value = (unsigned long) val;
-
-  out32r(PCI_PRIMARY_CAR, 0);
-
-  if ((*(unsigned long *)0x50000304) & 0x60000000)
-    {
-      /* clear pci master/target abort bits */
-      *(unsigned long *)0x50000304 = *(unsigned long *)0x50000304;
-    }
-
-  return 0;
-}
-
-/*-----------------------------------------------------------------------------+
-|  Subroutine:  pci9054_write_config_dword
-|  Description: Write a PCI configuration register.
-|  Inputs:
-|               hose            PCI Controller
-|               dev             PCI Bus+Device+Function number
-|               offset          Configuration register number
-|               Value           Configuration register value
-|  Return value:
-|               0               Successful
-| Updated for pass2 errata #6. Need to disable interrupts and clear the
-| PCICFGADR reg after writing the PCICFGDATA reg.
-+-----------------------------------------------------------------------------*/
-int pci9054_write_config_dword(struct pci_controller *hose,
-                              pci_dev_t dev, int offset, u32 value)
-{
-  unsigned long      conAdrVal;
-
-  conAdrVal = dev | (offset & 0xfc) | 0x80000000;
-
-  *(unsigned long *)PCI_PRIMARY_CAR = conAdrVal;
-
-  out32r(PCI_PRIMARY_CDR, value);
-
-  out32r(PCI_PRIMARY_CAR, 0);
-
-  /* clear pci master/target abort bits */
-  *(unsigned long *)0x50000304 = *(unsigned long *)0x50000304;
-
-  return (0);
-}
-
-/*-----------------------------------------------------------------------
- */
-
-#ifdef CONFIG_DASA_SIM
-static void pci_dasa_sim_config_pci9054(struct pci_controller *hose, pci_dev_t dev,
-                                       struct pci_config_table *_)
-{
-  unsigned int iobase;
-  unsigned short status = 0;
-  unsigned char timer;
-
-  /*
-   * Configure PLX PCI9054
-   */
-  pci_read_config_word(CONFIG_SYS_PCI9054_DEV_FN, PCI_COMMAND, &status);
-  status |= PCI_COMMAND_MASTER | PCI_COMMAND_IO | PCI_COMMAND_MEMORY;
-  pci_write_config_word(CONFIG_SYS_PCI9054_DEV_FN, PCI_COMMAND, status);
-
-  /* Check the latency timer for values >= 0x60.
-   */
-  pci_read_config_byte(CONFIG_SYS_PCI9054_DEV_FN, PCI_LATENCY_TIMER, &timer);
-  if (timer < 0x60)
-    {
-      pci_write_config_byte(CONFIG_SYS_PCI9054_DEV_FN, PCI_LATENCY_TIMER, 0x60);
-    }
-
-  /* Set I/O base register.
-   */
-  pci_write_config_dword(CONFIG_SYS_PCI9054_DEV_FN, PCI_BASE_ADDRESS_0, CONFIG_SYS_PCI9054_IOBASE);
-  pci_read_config_dword(CONFIG_SYS_PCI9054_DEV_FN, PCI_BASE_ADDRESS_0, &iobase);
-
-  pci9054_iobase = pci_mem_to_phys(CONFIG_SYS_PCI9054_DEV_FN, iobase & PCI_BASE_ADDRESS_MEM_MASK);
-
-  if (pci9054_iobase == 0xffffffff)
-    {
-      printf("Error: Can not set I/O base register.\n");
-      return;
-    }
-}
-#endif
-
-static struct pci_config_table pci9054_config_table[] = {
-#ifndef CONFIG_PCI_PNP
-  { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-    PCI_BUS(CONFIG_SYS_ETH_DEV_FN), PCI_DEV(CONFIG_SYS_ETH_DEV_FN), PCI_FUNC(CONFIG_SYS_ETH_DEV_FN),
-    pci_cfgfunc_config_device, { CONFIG_SYS_ETH_IOBASE,
-                                CONFIG_SYS_ETH_IOBASE,
-                                PCI_COMMAND_IO | PCI_COMMAND_MASTER }},
-#ifdef CONFIG_DASA_SIM
-  { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-    PCI_BUS(CONFIG_SYS_PCI9054_DEV_FN), PCI_DEV(CONFIG_SYS_PCI9054_DEV_FN), PCI_FUNC(CONFIG_SYS_PCI9054_DEV_FN),
-    pci_dasa_sim_config_pci9054 },
-#endif
-#endif
-  { }
-};
-
-static struct pci_controller pci9054_hose = {
-  config_table: pci9054_config_table,
-};
-
-void pci_init(void)
-{
-  struct pci_controller *hose = &pci9054_hose;
-
-  /*
-   * Register the hose
-   */
-  hose->first_busno = 0;
-  hose->last_busno = 0xff;
-
-  /* System memory space */
-  pci_set_region(hose->regions + 0,
-                0x00000000, 0x00000000, 0x01000000,
-                PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
-
-  /* PCI Memory space */
-  pci_set_region(hose->regions + 1,
-                0x00000000, 0xc0000000, 0x10000000,
-                PCI_REGION_MEM);
-
-  pci_set_ops(hose,
-             pci_hose_read_config_byte_via_dword,
-             pci_hose_read_config_word_via_dword,
-             pci9054_read_config_dword,
-             pci_hose_write_config_byte_via_dword,
-             pci_hose_write_config_word_via_dword,
-             pci9054_write_config_dword);
-
-  hose->region_count = 2;
-
-  pci_register_hose(hose);
-
-  hose->last_busno = pci_hose_scan(hose);
-}
diff --git a/board/esd/adciop/Makefile b/board/esd/adciop/Makefile
deleted file mode 100644 (file)
index d0e264d..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  = adciop.o flash.o ../common/misc.o ../common/pci.o
diff --git a/board/esd/adciop/adciop.c b/board/esd/adciop/adciop.c
deleted file mode 100644 (file)
index b3d637e..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include "adciop.h"
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-/* ------------------------------------------------------------------------- */
-
-
-int board_early_init_f (void)
-{
-       /*
-        * Set port pin in escc2 to keep living, and configure user led output
-        */
-       *(unsigned char *) 0x2000033e = 0x77;   /* ESCC2: PCR bit3=pwr on, bit7=led out */
-       *(unsigned char *) 0x2000033c = 0x88;   /* ESCC2: PVR pwr on, led off */
-
-       /*
-        * Init pci regs
-        */
-       *(unsigned long *) 0x50000304 = 0x02900007;     /* enable mem/io/master bits */
-       *(unsigned long *) 0x500001b4 = 0x00000000;     /* disable pci interrupt output enable */
-       *(unsigned long *) 0x50000354 = 0x00c05800;     /* disable emun interrupt output enable */
-       *(unsigned long *) 0x50000344 = 0x00000000;     /* disable pme interrupt output enable */
-       *(unsigned long *) 0x50000310 = 0x00000000;     /* pcibar0 */
-       *(unsigned long *) 0x50000314 = 0x00000000;     /* pcibar1 */
-       *(unsigned long *) 0x50000318 = 0x00000000;     /* pcibar2 */
-
-       return 0;
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-
-       puts ("Board: ");
-
-       if (!i || strncmp (str, "ADCIOP", 6)) {
-               puts ("### No HW ID - assuming ADCIOP\n");
-               return (1);
-       }
-
-       puts (str);
-
-       putc ('\n');
-
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       return (16 * 1024 * 1024);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
-       /* TODO: XXX XXX XXX */
-       printf ("test: 16 MB - ok\n");
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/esd/adciop/adciop.h b/board/esd/adciop/adciop.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/adciop/flash.c b/board/esd/adciop/flash.c
deleted file mode 100644 (file)
index b1db12e..0000000
+++ /dev/null
@@ -1,97 +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;
-
-       /* 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_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);
-       }
-
-       size_b1 = flash_get_size((vu_long *)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);
-       }
-
-       /* Re-do sizing to get full correct info */
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     FLASH_BASE0_PRELIM+size_b0-monitor_flash_len,
-                     FLASH_BASE0_PRELIM+size_b0-1,
-                     &flash_info[0]);
-
-       if (size_b1) {
-               /* Re-do sizing to get full correct info */
-               size_b1 = flash_get_size((vu_long *)(FLASH_BASE0_PRELIM + size_b0),
-                                         &flash_info[1]);
-
-               flash_get_offsets (FLASH_BASE0_PRELIM + size_b0, &flash_info[1]);
-
-               /* monitor protection ON by default */
-               flash_protect(FLAG_PROTECT_SET,
-                             FLASH_BASE0_PRELIM+size_b0+size_b1-monitor_flash_len,
-                             FLASH_BASE0_PRELIM+size_b0+size_b1-1,
-                             &flash_info[1]);
-               /* monitor protection OFF by default (one is enough) */
-               flash_protect(FLAG_PROTECT_CLEAR,
-                             FLASH_BASE0_PRELIM+size_b0-monitor_flash_len,
-                             FLASH_BASE0_PRELIM+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/dasa_sim/Makefile b/board/esd/dasa_sim/Makefile
deleted file mode 100644 (file)
index eb9f5f8..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  = dasa_sim.o flash.o cmd_dasa_sim.o eeprom.o ../common/pci.o
diff --git a/board/esd/dasa_sim/cmd_dasa_sim.c b/board/esd/dasa_sim/cmd_dasa_sim.c
deleted file mode 100644 (file)
index 9191624..0000000
+++ /dev/null
@@ -1,209 +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 <command.h>
-#include <pci.h>
-#include <asm/io.h>
-
-#define OK 0
-#define ERROR (-1)
-
-extern u_long pci9054_iobase;
-
-
-/***************************************************************************
- *
- * Routines for PLX PCI9054 eeprom access
- *
- */
-
-static unsigned int PciEepromReadLongVPD (int offs)
-{
-       unsigned int value;
-       unsigned int ret;
-       int count;
-
-       pci_write_config_dword (CONFIG_SYS_PCI9054_DEV_FN, 0x4c,
-                               (offs << 16) | 0x0003);
-       count = 0;
-
-       for (;;) {
-               udelay (10 * 1000);
-               pci_read_config_dword (CONFIG_SYS_PCI9054_DEV_FN, 0x4c, &ret);
-               if ((ret & 0x80000000) != 0) {
-                       break;
-               } else {
-                       count++;
-                       if (count > 10) {
-                               printf ("\nTimeout: ret=%08x - Please try again!\n", ret);
-                               break;
-                       }
-               }
-       }
-
-       pci_read_config_dword (CONFIG_SYS_PCI9054_DEV_FN, 0x50, &value);
-
-       return value;
-}
-
-
-static int PciEepromWriteLongVPD (int offs, unsigned int value)
-{
-       unsigned int ret;
-       int count;
-
-       pci_write_config_dword (CONFIG_SYS_PCI9054_DEV_FN, 0x50, value);
-       pci_write_config_dword (CONFIG_SYS_PCI9054_DEV_FN, 0x4c,
-                               (offs << 16) | 0x80000003);
-       count = 0;
-
-       for (;;) {
-               udelay (10 * 1000);
-               pci_read_config_dword (CONFIG_SYS_PCI9054_DEV_FN, 0x4c, &ret);
-               if ((ret & 0x80000000) == 0) {
-                       break;
-               } else {
-                       count++;
-                       if (count > 10) {
-                               printf ("\nTimeout: ret=%08x - Please try again!\n", ret);
-                               break;
-                       }
-               }
-       }
-
-       return true;
-}
-
-
-static void showPci9054 (void)
-{
-       int val;
-       int l, i;
-
-       /* read 9054-values */
-       for (l = 0; l < 6; l++) {
-               printf ("%02x: ", l * 0x10);
-               for (i = 0; i < 4; i++) {
-                       pci_read_config_dword (CONFIG_SYS_PCI9054_DEV_FN,
-                                               l * 16 + i * 4,
-                                               (unsigned int *)&val);
-                       printf ("%08x ", val);
-               }
-               printf ("\n");
-       }
-       printf ("\n");
-
-       for (l = 0; l < 7; l++) {
-               printf ("%02x: ", l * 0x10);
-               for (i = 0; i < 4; i++)
-                       printf ("%08x ",
-                               PciEepromReadLongVPD ((i + l * 4) * 4));
-               printf ("\n");
-       }
-       printf ("\n");
-}
-
-
-static void updatePci9054 (void)
-{
-       /*
-        * Set EEPROM write-protect register to 0
-        */
-       out_be32 ((void *)(pci9054_iobase + 0x0c),
-                 in_be32 ((void *)(pci9054_iobase + 0x0c)) & 0xffff00ff);
-
-       /* Long Serial EEPROM Load Registers... */
-       PciEepromWriteLongVPD (0x00, 0x905410b5);
-       PciEepromWriteLongVPD (0x04, 0x09800001);       /* other input controller */
-       PciEepromWriteLongVPD (0x08, 0x28140100);
-
-       PciEepromWriteLongVPD (0x0c, 0x00000000);       /* MBOX0... */
-       PciEepromWriteLongVPD (0x10, 0x00000000);
-
-       /* las0: fpga access (0x0000.0000 ... 0x0003.ffff) */
-       PciEepromWriteLongVPD (0x14, 0xfffc0000);       /* LAS0RR... */
-       PciEepromWriteLongVPD (0x18, 0x00000001);       /* LAS0BA */
-
-       PciEepromWriteLongVPD (0x1c, 0x00200000);       /* MARBR... */
-       PciEepromWriteLongVPD (0x20, 0x00300500);       /* LMISC/BIGEND */
-
-       PciEepromWriteLongVPD (0x24, 0x00000000);       /* EROMRR... */
-       PciEepromWriteLongVPD (0x28, 0x00000000);       /* EROMBA */
-
-       PciEepromWriteLongVPD (0x2c, 0x43030000);       /* LBRD0... */
-
-       PciEepromWriteLongVPD (0x30, 0x00000000);       /* DMRR... */
-       PciEepromWriteLongVPD (0x34, 0x00000000);
-       PciEepromWriteLongVPD (0x38, 0x00000000);
-
-       PciEepromWriteLongVPD (0x3c, 0x00000000);       /* DMPBAM... */
-       PciEepromWriteLongVPD (0x40, 0x00000000);
-
-       /* Extra Long Serial EEPROM Load Registers... */
-       PciEepromWriteLongVPD (0x44, 0x010212fe);       /* PCISID... */
-
-       /* las1: 505-sram access (0x0004.0000 ... 0x001f.ffff) */
-       /* Offset to LAS1: Group 1: 0x00040000                 */
-       /*                 Group 2: 0x00080000                 */
-       /*                 Group 3: 0x000c0000                 */
-       PciEepromWriteLongVPD (0x48, 0xffe00000);       /* LAS1RR */
-       PciEepromWriteLongVPD (0x4c, 0x00040001);       /* LAS1BA */
-       PciEepromWriteLongVPD (0x50, 0x00000208);       /* LBRD1 */ /* so wars bisher */
-
-       PciEepromWriteLongVPD (0x54, 0x00004c06);       /* HotSwap... */
-
-       printf ("Finished writing defaults into PLX PCI9054 EEPROM!\n");
-}
-
-
-static void clearPci9054 (void)
-{
-       /*
-        * Set EEPROM write-protect register to 0
-        */
-       out_be32 ((void *)(pci9054_iobase + 0x0c),
-                 in_be32 ((void *)(pci9054_iobase + 0x0c)) & 0xffff00ff);
-
-       /* Long Serial EEPROM Load Registers... */
-       PciEepromWriteLongVPD (0x00, 0xffffffff);
-       PciEepromWriteLongVPD (0x04, 0xffffffff);       /* other input controller */
-
-       printf ("Finished clearing PLX PCI9054 EEPROM!\n");
-}
-
-
-/* ------------------------------------------------------------------------- */
-int do_pci9054 (cmd_tbl_t * cmdtp, int flag, int argc,
-                               char * const argv[])
-{
-       if (strcmp (argv[1], "info") == 0) {
-               showPci9054 ();
-               return 0;
-       }
-
-       if (strcmp (argv[1], "update") == 0) {
-               updatePci9054 ();
-               return 0;
-       }
-
-       if (strcmp (argv[1], "clear") == 0) {
-               clearPci9054 ();
-               return 0;
-       }
-
-       return cmd_usage(cmdtp);
-}
-
-U_BOOT_CMD(
-       pci9054, 3, 1, do_pci9054,
-       "PLX PCI9054 EEPROM access",
-       "pci9054 info - print EEPROM values\n"
-       "pci9054 update - updates EEPROM with default values"
-);
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/esd/dasa_sim/dasa_sim.c b/board/esd/dasa_sim/dasa_sim.c
deleted file mode 100644 (file)
index b779a09..0000000
+++ /dev/null
@@ -1,198 +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 <netdev.h>
-#include "dasa_sim.h"
-
-/* ------------------------------------------------------------------------- */
-
-#undef FPGA_DEBUG
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-/* ------------------------------------------------------------------------- */
-
-/* fpga configuration data - generated by bit2inc */
-static unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-#define FPGA_PRG_SLEEP         32      /* fpga program sleep-time */
-#define LOAD_LONG(a)           a
-
-
-/******************************************************************************
- *
- * sysFpgaBoot - Load fpga-image into fpga
- *
- */
-static int fpgaBoot (void)
-{
-       int i, j, index, len;
-       unsigned char b;
-       int imageSize;
-
-       imageSize = sizeof (fpgadata);
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = fpgadata[index];
-               index += len + 3;
-       }
-
-       /* search for preamble 0xFF2X */
-       for (index = 0; index < imageSize - 1; index++) {
-               if ((fpgadata[index] == 0xff)
-                       && ((fpgadata[index + 1] & 0xf0) == 0x20))
-                       break;
-       }
-
-       /* enable cs1 instead of user0... */
-       *(unsigned long *) 0x50000084 &= ~0x00000002;
-
-#ifdef FPGA_DEBUG
-       printf ("%s\n",
-               ((in_be32 ((void *)0x50000084) & 0x00010000) == 0) ?
-               "NOT DONE" : "DONE");
-#endif
-
-       /* init fpga by asserting and deasserting PROGRAM* (USER2)... */
-       *(unsigned long *) 0x50000084 &= ~0x00000400;
-       udelay (FPGA_PRG_SLEEP * 1000);
-
-       *(unsigned long *) 0x50000084 |= 0x00000400;
-       udelay (FPGA_PRG_SLEEP * 1000);
-
-#ifdef FPGA_DEBUG
-       printf ("%s\n",
-               ((in_be32 ((void *)0x50000084) & 0x00010000) == 0) ?
-               "NOT DONE" : "DONE");
-#endif
-
-       /* cs1: disable burst, disable ready */
-       *(unsigned long *) 0x50000114 &= ~0x00000300;
-
-       /* cs1: set write timing */
-       *(unsigned long *) 0x50000118 |= 0x00010900;
-
-       /* write configuration-data into fpga... */
-       for (i = index; i < imageSize; i++) {
-               b = fpgadata[i];
-               for (j = 0; j < 8; j++) {
-                       *(unsigned long *) 0x30000000 =
-                               ((b & 0x80) == 0x80)
-                               ? LOAD_LONG (0x03030101)
-                               : LOAD_LONG (0x02020000);
-                       b <<= 1;
-               }
-       }
-
-#ifdef FPGA_DEBUG
-       printf ("%s\n",
-               ((in_be32 ((void *)0x50000084) & 0x00010000) == 0) ?
-               "NOT DONE" : "DONE");
-#endif
-
-       /* set cs1 to 32 bit data-width, disable burst, enable ready */
-       *(unsigned long *) 0x50000114 |= 0x00000202;
-       *(unsigned long *) 0x50000114 &= ~0x00000100;
-
-       /* cs1: set iop access to little endian */
-       *(unsigned long *) 0x50000114 &= ~0x00000010;
-
-       /* cs1: set read and write timing */
-       *(unsigned long *) 0x50000118 = 0x00010000;
-       *(unsigned long *) 0x5000011c = 0x00010001;
-
-#ifdef FPGA_DEBUG
-       printf ("%s\n",
-               ((in_be32 ((void *)0x50000084) & 0x00010000) == 0) ?
-               "NOT DONE" : "DONE");
-#endif
-
-       /* wait for 30 ms... */
-       udelay (30 * 1000);
-       /* check if fpga's DONE signal - correctly booted ? */
-       if ((*(unsigned long *) 0x50000084 & 0x00010000) == 0)
-               return -1;
-
-       return 0;
-}
-
-
-int board_early_init_f (void)
-{
-       /*
-        * Init pci regs
-        */
-       *(unsigned long *) 0x50000304 = 0x02900007;     /* enable mem/io/master bits */
-       *(unsigned long *) 0x500001b4 = 0x00000000;     /* disable pci interrupt output enable */
-       *(unsigned long *) 0x50000354 = 0x00c05800;     /* disable emun interrupt output enable */
-       *(unsigned long *) 0x50000344 = 0x00000000;     /* disable pme interrupt output enable */
-       *(unsigned long *) 0x50000310 = 0x00000000;     /* pcibar0 */
-       *(unsigned long *) 0x50000314 = 0x00000000;     /* pcibar1 */
-       *(unsigned long *) 0x50000318 = 0x00000000;     /* pcibar2 */
-
-       return 0;
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       int index;
-       int len;
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-       int fpga;
-       unsigned short val;
-
-       puts ("Board: ");
-
-       /*
-        * Boot onboard FPGA
-        */
-       fpga = fpgaBoot ();
-
-       if (!i || strncmp (str, "DASA_SIM", 8)) {
-               puts ("### No HW ID - assuming DASA_SIM");
-       }
-
-       puts (str);
-
-       if (fpga == 0) {
-               val = *(unsigned short *) 0x30000202;
-               printf (" (Id=%d Version=%d Revision=%d)",
-                       (val & 0x07f8) >> 3, val & 0x0001, (val & 0x0006) >> 1);
-
-               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;
-               }
-       } else {
-               puts ("\nFPGA:  Booting failed!");
-       }
-
-       putc ('\n');
-
-       return 0;
-}
-
-phys_size_t initdram (int board_type)
-{
-       return (16 * 1024 * 1024);
-}
diff --git a/board/esd/dasa_sim/dasa_sim.h b/board/esd/dasa_sim/dasa_sim.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/dasa_sim/eeprom.c b/board/esd/dasa_sim/eeprom.c
deleted file mode 100644 (file)
index 1fc78de..0000000
+++ /dev/null
@@ -1,164 +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 <command.h>
-#include <asm/io.h>
-
-#define EEPROM_CAP              0x50000358
-#define EEPROM_DATA             0x5000035c
-
-
-unsigned int eepromReadLong(int offs)
-{
-  unsigned int value;
-  unsigned short ret;
-  int count;
-
-  out_be16((void *)EEPROM_CAP, offs);
-
-  count = 0;
-
-  for (;;)
-    {
-      count++;
-      ret = in_be16((void *)EEPROM_CAP);
-
-      if ((ret & 0x8000) != 0)
-       break;
-    }
-
-  value = in_be32((void *)EEPROM_DATA);
-
-  return value;
-}
-
-
-unsigned char eepromReadByte(int offs)
-{
-  unsigned int valueLong;
-  unsigned char *ptr;
-
-  valueLong = eepromReadLong(offs & ~3);
-  ptr = (unsigned char *)&valueLong;
-
-  return ptr[offs & 3];
-}
-
-
-void eepromWriteLong(int offs, unsigned int value)
-{
-  unsigned short ret;
-  int count;
-
-  count = 0;
-
-  out_be32((void *)EEPROM_DATA, value);
-  out_be16((void *)EEPROM_CAP, 0x8000 + offs);
-
-  for (;;)
-    {
-      count++;
-      ret = in_be16((void *)EEPROM_CAP);
-
-      if ((ret & 0x8000) == 0)
-       break;
-    }
-}
-
-
-void eepromWriteByte(int offs, unsigned char valueByte)
-{
-  unsigned int valueLong;
-  unsigned char *ptr;
-
-  valueLong = eepromReadLong(offs & ~3);
-  ptr = (unsigned char *)&valueLong;
-
-  ptr[offs & 3] = valueByte;
-
-  eepromWriteLong(offs & ~3, valueLong);
-}
-
-
-void i2c_read (uchar *addr, int alen, uchar *buffer, int len)
-{
-  int i;
-  int len2, ptr;
-
-  /*  printf("\naddr=%x alen=%x buffer=%x len=%x", addr[0], addr[1], *(short *)addr, alen, buffer, len); /###* test-only */
-
-  ptr = *(short *)addr;
-
-  /*
-   * Read till lword boundary
-   */
-  len2 = 4 - (*(short *)addr & 0x0003);
-  for (i=0; i<len2; i++)
-    {
-      *buffer++ = eepromReadByte(ptr++);
-    }
-
-  /*
-   * Read all lwords
-   */
-  len2 = (len - len2) >> 2;
-  for (i=0; i<len2; i++)
-    {
-      *(unsigned int *)buffer = eepromReadLong(ptr);
-      buffer += 4;
-      ptr += 4;
-    }
-
-  /*
-   * Read last bytes
-   */
-  len2 = (*(short *)addr + len) & 0x0003;
-  for (i=0; i<len2; i++)
-    {
-      *buffer++ = eepromReadByte(ptr++);
-    }
-}
-
-void i2c_write (uchar *addr, int alen, uchar *buffer, int len)
-{
-  int i;
-  int len2, ptr;
-
-  /*  printf("\naddr=%x alen=%x buffer=%x len=%x", addr[0], addr[1], *(short *)addr, alen, buffer, len); /###* test-only */
-
-  ptr = *(short *)addr;
-
-  /*
-   * Write till lword boundary
-   */
-  len2 = 4 - (*(short *)addr & 0x0003);
-  for (i=0; i<len2; i++)
-    {
-      eepromWriteByte(ptr++, *buffer++);
-    }
-
-  /*
-   * Write all lwords
-   */
-  len2 = (len - len2) >> 2;
-  for (i=0; i<len2; i++)
-    {
-      eepromWriteLong(ptr, *(unsigned int *)buffer);
-      buffer += 4;
-      ptr += 4;
-    }
-
-  /*
-   * Write last bytes
-   */
-  len2 = (*(short *)addr + len) & 0x0003;
-  for (i=0; i<len2; i++)
-    {
-      eepromWriteByte(ptr++, *buffer++);
-    }
-}
diff --git a/board/esd/dasa_sim/flash.c b/board/esd/dasa_sim/flash.c
deleted file mode 100644 (file)
index 05691d0..0000000
+++ /dev/null
@@ -1,58 +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 *)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]);
-
-       /* 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/dasa_sim/fpgadata.c b/board/esd/dasa_sim/fpgadata.c
deleted file mode 100644 (file)
index f54ef1c..0000000
+++ /dev/null
@@ -1,3903 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0d,
-0x61, 0x63, 0x6d, 0x30, 0x30, 0x30, 0x35, 0x64,
-0x2e, 0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b,
-0x73, 0x33, 0x30, 0x78, 0x6c, 0x74, 0x71, 0x31,
-0x34, 0x34, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30,
-0x30, 0x30, 0x2f, 0x30, 0x37, 0x2f, 0x31, 0x30,
-0x00, 0x64, 0x00, 0x09, 0x31, 0x39, 0x3a, 0x32,
-0x37, 0x3a, 0x33, 0x38, 0x00, 0x65, 0x00, 0x00,
-0x79, 0xaa, 0xff, 0x20, 0x3c, 0xd4, 0x9f, 0x5b,
-0xff, 0x7e, 0xde, 0xee, 0xbd, 0xaa, 0xfe, 0xbf,
-0x9e, 0xff, 0xfb, 0xfe, 0x5f, 0xbf, 0xed, 0xab,
-0xdb, 0xbe, 0xe5, 0xfb, 0xfe, 0xfb, 0x9f, 0xeb,
-0xfa, 0xfe, 0x5f, 0xb6, 0xef, 0xfb, 0xfe, 0xfe,
-0xaf, 0xff, 0xff, 0xff, 0xfb, 0xfe, 0xef, 0xbf,
-0xef, 0xff, 0xba, 0xff, 0xbb, 0xfe, 0xfb, 0xbe,
-0xff, 0xee, 0xeb, 0xff, 0xef, 0xbb, 0xef, 0xff,
-0xbe, 0xff, 0xbf, 0xff, 0xfb, 0xfe, 0xff, 0xbb,
-0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd,
-0xff, 0xff, 0xff, 0xff, 0xbc, 0xff, 0xbf, 0xff,
-0xfb, 0xfd, 0xff, 0xdf, 0xf7, 0xff, 0xff, 0xbf,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xfd,
-0xff, 0xff, 0xfe, 0x3f, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xff, 0xbf, 0xef, 0xe3, 0xf6, 0xff, 0xbf,
-0xef, 0xfb, 0xfe, 0xff, 0xef, 0xdb, 0xfe, 0xff,
-0xbf, 0xef, 0xe3, 0xfe, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xfe, 0x3f, 0xff, 0xf7, 0xff, 0xef, 0xbb,
-0xe7, 0xf9, 0xbe, 0x7f, 0xbf, 0xec, 0xf8, 0xfe,
-0xff, 0xbb, 0xef, 0xfb, 0xbe, 0x7b, 0xe3, 0xfb,
-0xbe, 0xff, 0xbf, 0xec, 0xfb, 0xfe, 0xff, 0xbb,
-0xee, 0xfb, 0xfe, 0xcf, 0xbf, 0xf6, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x17,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff,
-0x93, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf3, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xdf,
-0xf7, 0xf5, 0xfd, 0xff, 0xdf, 0xf7, 0xff, 0xfd,
-0xff, 0xdf, 0xf5, 0xff, 0x7f, 0xff, 0xdf, 0xfd,
-0xff, 0xff, 0x7f, 0xd7, 0xf7, 0xfd, 0x7f, 0xdf,
-0xd7, 0xf7, 0xff, 0x6f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xbf, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xfe, 0xdf, 0xff, 0xcd, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0x4f, 0xdf, 0xff, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xff, 0x7f, 0xff, 0xff, 0xfb, 0x3f, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfc, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xfe, 0xff, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff,
-0xec, 0xff, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff,
-0x3f, 0xdf, 0xf7, 0xfd, 0x7f, 0x7f, 0xcf, 0xf3,
-0xfc, 0xff, 0xdf, 0x73, 0xdd, 0xff, 0x7f, 0xdf,
-0xf7, 0xfd, 0xff, 0x7f, 0xcf, 0xf7, 0xfd, 0xff,
-0x7f, 0xfc, 0x9f, 0xff, 0xef, 0xbb, 0xfe, 0xbf,
-0xdf, 0xef, 0xbb, 0xfe, 0xfb, 0xbf, 0xef, 0xfa,
-0xee, 0xff, 0xff, 0xfb, 0xfe, 0xff, 0xbf, 0xef,
-0xfa, 0xee, 0xff, 0xbe, 0xef, 0xbb, 0xfe, 0xff,
-0xbf, 0xef, 0xf7, 0xeb, 0xff, 0xe7, 0xf9, 0xfe,
-0x7a, 0x9d, 0xe7, 0xf9, 0x7c, 0x7e, 0x9e, 0xe7,
-0x59, 0xf6, 0x7e, 0x9f, 0xe9, 0x22, 0x7f, 0x9b,
-0xe6, 0xb9, 0xfe, 0x4f, 0x9f, 0xe6, 0xf9, 0xfe,
-0x7b, 0x9d, 0xe6, 0xfe, 0xfe, 0x7e, 0xff, 0xbf,
-0xef, 0xfb, 0xee, 0xff, 0xbf, 0xe7, 0xf9, 0xfe,
-0xff, 0x9f, 0xef, 0xfb, 0xfe, 0xfd, 0xdf, 0xfb,
-0xee, 0xfb, 0xbf, 0xef, 0xfb, 0xee, 0xf7, 0xbf,
-0xef, 0xf7, 0xfe, 0xff, 0x7f, 0x5f, 0x0f, 0x9f,
-0x9b, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9,
-0xfe, 0x7f, 0x9f, 0x66, 0xf9, 0xfe, 0x7f, 0xe7,
-0xf9, 0xee, 0x77, 0x9f, 0xe7, 0xf9, 0xde, 0x7d,
-0x9d, 0xe7, 0xf9, 0xee, 0x7f, 0x9f, 0xed, 0xc9,
-0xff, 0xfd, 0xff, 0x7f, 0xdf, 0xfd, 0xfd, 0xff,
-0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xfd,
-0xff, 0xdf, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf,
-0xf7, 0xfd, 0xff, 0x7f, 0xff, 0xf7, 0xff, 0xff,
-0xfc, 0xb7, 0xfe, 0xff, 0xbf, 0xef, 0xfa, 0xfe,
-0xff, 0xbf, 0xef, 0xfb, 0xfc, 0xfd, 0xbd, 0x6f,
-0xba, 0xee, 0xb5, 0xef, 0xfb, 0xfe, 0xff, 0xbf,
-0xef, 0xfb, 0xfa, 0xff, 0xbf, 0xef, 0xfb, 0xfe,
-0xff, 0xff, 0x65, 0xaf, 0xdb, 0xd6, 0xfd, 0xbf,
-0x7f, 0xdb, 0xf6, 0xfd, 0xbf, 0x6f, 0xfb, 0xf6,
-0xf9, 0xae, 0xf7, 0xd4, 0x79, 0xbf, 0x6f, 0xdb,
-0xb6, 0x7d, 0xbf, 0x6f, 0xdb, 0xf6, 0xfd, 0xbd,
-0x6f, 0xdb, 0xf7, 0xe8, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xe7, 0xfb, 0xf7, 0x7c, 0xfd, 0xff, 0xf7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xbf, 0xff, 0xff, 0x9d, 0x9e, 0xff, 0xff,
-0xff, 0xbf, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0x9f,
-0xfe, 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xff, 0xfd,
-0xff, 0xff, 0xfb, 0xff, 0x7f, 0xdb, 0xe7, 0xff,
-0xbe, 0xff, 0xff, 0xff, 0xfb, 0xfe, 0xe3, 0xff,
-0xff, 0xff, 0xdf, 0xfb, 0xef, 0xff, 0xf7, 0xfd,
-0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xcf, 0x77,
-0xdf, 0xff, 0xff, 0xdf, 0xd7, 0xff, 0xff, 0xff,
-0xff, 0xdf, 0xf7, 0xf4, 0x7f, 0xff, 0xff, 0xfd,
-0x7b, 0xff, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xf7, 0xff, 0xbf, 0xf7, 0xff,
-0x4f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0x7f, 0xff, 0xfe,
-0xfe, 0xad, 0xff, 0xf7, 0xfd, 0xff, 0x7f, 0xdf,
-0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff,
-0x79, 0xdf, 0x5d, 0xff, 0x7d, 0xdf, 0xf7, 0xfc,
-0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf,
-0xf7, 0xff, 0xed, 0xff, 0xbf, 0xff, 0xff, 0x2f,
-0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0xdb, 0xff, 0xfb, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xff, 0xff, 0xf7, 0xfd, 0xbf, 0xff, 0xff, 0xff,
-0xf7, 0xfd, 0xbf, 0xfe, 0xff, 0xff, 0xef, 0xfb,
-0xff, 0xff, 0xfe, 0xfb, 0xdb, 0xfb, 0xbf, 0xef,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0x97, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xef, 0x7f, 0xff, 0xcf,
-0xdb, 0xfd, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xff,
-0xff, 0xf7, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0xfb, 0x7d, 0xf5,
-0xff, 0x7f, 0xdf, 0xff, 0xf7, 0xfd, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfd,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xdf, 0xff, 0x7e, 0xdf, 0x7f,
-0xfe, 0xff, 0xdf, 0xdf, 0xff, 0xff, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xbf, 0xef, 0xff, 0xff,
-0xff, 0xb3, 0xff, 0xe3, 0xf9, 0xff, 0xff, 0xaf,
-0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfa, 0x7f,
-0xfd, 0xab, 0xfa, 0x7d, 0xfe, 0x9f, 0x7f, 0xbf,
-0xff, 0xfe, 0xff, 0xff, 0xfa, 0xfe, 0xbf, 0xff,
-0xfd, 0xff, 0xf7, 0x7f, 0xfe, 0xff, 0xff, 0xff,
-0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xdf, 0xff, 0xf6, 0xfe, 0xdd, 0xff, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0x7f, 0xbf, 0xff, 0xee, 0xfb,
-0xff, 0xff, 0xff, 0xfe, 0x8f, 0xff, 0xff, 0xff,
-0xff, 0x77, 0xef, 0xfd, 0xff, 0xff, 0xef, 0x3f,
-0xfe, 0xad, 0x7f, 0xfb, 0xff, 0xcf, 0xf7, 0xff,
-0xff, 0xff, 0xfd, 0x7f, 0xff, 0xff, 0xff, 0xef,
-0x7b, 0xfd, 0xff, 0xff, 0xff, 0xd1, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xfe, 0xff, 0xff, 0xed, 0xfb, 0xff, 0xef,
-0xef, 0xfb, 0xfe, 0xff, 0xdf, 0xff, 0xfb, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x3f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xff, 0xfe, 0xff, 0xd7,
-0x7f, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
-0x46, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf8, 0x7e,
-0xbf, 0xff, 0xff, 0xfd, 0xfb, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf7, 0xfd, 0xf7, 0xf7, 0xfe, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x9f, 0xf3, 0xfc, 0xff, 0xfd,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xfd,
-0xff, 0xff, 0xbb, 0xf1, 0xf3, 0xbf, 0xff, 0xff,
-0xf7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff,
-0xfe, 0x3d, 0xcd, 0xff, 0x7f, 0xdf, 0xff, 0xfd,
-0xff, 0xff, 0xef, 0xef, 0xff, 0xfa, 0xff, 0xf7,
-0xfb, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x7f, 0xef,
-0xff, 0xff, 0xff, 0xfb, 0x5f, 0xff, 0xff, 0xfc,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3,
-0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0x3f, 0xf9,
-0xfc, 0xff, 0xff, 0xcc, 0xf5, 0xff, 0xcf, 0xe7,
-0xff, 0xff, 0x3f, 0xff, 0x7f, 0xff, 0xbf, 0xff,
-0x29, 0xaf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
-0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xef,
-0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xff, 0x5f, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xaf,
-0xfb, 0xca, 0xff, 0xfb, 0x2b, 0xd2, 0xbf, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xff, 0xef, 0xa6, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf5, 0xfd, 0xff, 0x5f, 0xff, 0xe5, 0x7f, 0x5f,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0x74, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb,
-0xff, 0xff, 0xff, 0xef, 0x5f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xbd, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x5b, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0x5f, 0xff, 0xfd, 0xf7, 0x7f, 0xdf, 0xff,
-0xff, 0x7f, 0xdf, 0xff, 0xdd, 0xaf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0xfd, 0x89,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xaf, 0xff, 0xd2, 0xc7, 0xbf, 0xaf,
-0xff, 0xfe, 0xbf, 0xaf, 0xff, 0xd6, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xef, 0xff,
-0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf5, 0xff, 0xfb, 0x5f, 0xdf,
-0xf5, 0xff, 0xff, 0xd7, 0xf5, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfd,
-0xff, 0xf2, 0x6f, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xbf,
-0x9f, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff,
-0xff, 0xff, 0xff, 0xed, 0xff, 0x8f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xbf,
-0xef, 0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xfe,
-0xfb, 0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xef, 0xfb,
-0x7e, 0xff, 0xbf, 0xef, 0xfb, 0xf6, 0xff, 0xbf,
-0xee, 0xfb, 0xfe, 0xff, 0xb7, 0xfe, 0xe6, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0x57, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff, 0xd7, 0xe5,
-0xff, 0xff, 0xf7, 0xf5, 0xff, 0xfb, 0xff, 0xd7,
-0xff, 0xef, 0x7f, 0xff, 0xd7, 0xff, 0xff, 0xff,
-0x5f, 0xfe, 0x9b, 0xff, 0xff, 0xff, 0xff, 0x9f,
-0xe7, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xff, 0xfa,
-0x7e, 0x9f, 0xff, 0xde, 0x7e, 0x9d, 0xff, 0xff,
-0xfa, 0x77, 0xff, 0xb7, 0xff, 0xfa, 0x7f, 0xff,
-0xff, 0xe9, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff,
-0xb7, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff,
-0xff, 0xff, 0xd7, 0xff, 0xef, 0xdf, 0xff, 0xff,
-0xdf, 0xff, 0x5f, 0xff, 0xfd, 0xff, 0xfb, 0xff,
-0xff, 0xff, 0xfd, 0x7f, 0xfe, 0x8f, 0xff, 0xff,
-0x9f, 0xe6, 0xe9, 0xbc, 0x7f, 0x9f, 0xe7, 0xf9,
-0xfe, 0x7f, 0x9f, 0xc2, 0xf9, 0xfe, 0x7b, 0xe7,
-0xf9, 0xfe, 0x7f, 0x8b, 0xe7, 0xf8, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xfe, 0x2f, 0x9f, 0xe1, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xf7, 0xaf, 0xff, 0xff,
-0xff, 0xd3, 0xff, 0xfd, 0x7a, 0xff, 0xfb, 0xff,
-0x3f, 0x5f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xff, 0xfd, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0x3f, 0xff, 0xff, 0xff, 0xfb, 0xee, 0xff, 0xff,
-0xff, 0xff, 0xfa, 0xff, 0xff, 0xaf, 0xff, 0xff,
-0x7f, 0xef, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0x77, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfc, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xee,
-0xfb, 0xdf, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xfd, 0xff, 0x9f, 0xff, 0xfd, 0xff,
-0x7f, 0xff, 0xf7, 0xed, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xbf, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x2f, 0xff, 0x8b, 0xff, 0xfe,
-0xbf, 0xaf, 0xeb, 0xfa, 0xfe, 0xbf, 0xa7, 0xe9,
-0xfa, 0xfe, 0xbf, 0xa7, 0xc8, 0xfa, 0x7f, 0xa3,
-0xe9, 0xfa, 0xbe, 0xbf, 0xab, 0xea, 0xfa, 0xbe,
-0xaf, 0xad, 0xeb, 0xfa, 0xfe, 0xbf, 0xd5, 0x7b,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb,
-0xcd, 0xff, 0xfc, 0xcf, 0xfe, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
-0x47, 0xff, 0xff, 0xfb, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x77, 0xff, 0xbf, 0xff, 0xfd,
-0xff, 0xef, 0xbf, 0xba, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xb5, 0xff, 0xdf, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xaf, 0xef, 0xfb, 0xff,
-0xf7, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xef, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf,
-0xf7, 0x5d, 0xff, 0x7e, 0x76, 0xff, 0xff, 0xff,
-0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x3f, 0xff, 0x17, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xff, 0xfd,
-0xff, 0x7f, 0xf7, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdd, 0xff, 0xea, 0x7f, 0xff,
-0xff, 0xef, 0xfe, 0xff, 0xff, 0xf7, 0xff, 0xff,
-0xfd, 0xff, 0xfd, 0xd7, 0xfd, 0xff, 0xf9, 0xfb,
-0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xef,
-0xfd, 0xff, 0x7f, 0xff, 0xbf, 0xff, 0xfe, 0x1f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff,
-0xbe, 0xff, 0xff, 0xef, 0xff, 0xbf, 0xff, 0xbf,
-0x7b, 0xfe, 0xfd, 0xaf, 0xed, 0xf9, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xff, 0xff, 0xdf, 0xef, 0xff,
-0x7f, 0xe7, 0xdf, 0xff, 0xbd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0x7f, 0xff, 0xff, 0xfd, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xef, 0xff,
-0xff, 0x76, 0xfd, 0xff, 0xc7, 0x3f, 0xff, 0xff,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xc7, 0xff,
-0xff, 0xdf, 0xfe, 0x4f, 0xff, 0xff, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xfe, 0x7f, 0xfe, 0xff, 0x9f, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xd5, 0xff, 0xdf, 0xff,
-0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xfd,
-0x3f, 0x4f, 0xff, 0xfd, 0xff, 0xff, 0xf7, 0xf9,
-0xf7, 0x7f, 0xdf, 0xdf, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xf8, 0x3f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0x9f, 0x7f, 0x7f, 0xff,
-0xff, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xa7,
-0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x6e, 0x0f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xc1, 0xb3, 0xff, 0xff, 0x3f, 0xc7, 0xf1,
-0xfc, 0xff, 0xfd, 0x31, 0x5c, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0xf2, 0x5b, 0xff, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x7f, 0x97, 0x3f, 0xff, 0xf7, 0xfd,
-0xf3, 0x7c, 0xaf, 0xff, 0x97, 0xe7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x3b, 0xf5, 0x9b, 0x7f, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xbe, 0xf7, 0xff, 0x2b,
-0x4a, 0xdf, 0xbf, 0xef, 0x3a, 0xfe, 0xed, 0x6a,
-0x6b, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfb, 0xfe, 0xf4, 0x2d, 0xfd, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xed, 0x73, 0x5f, 0xdf, 0xf7, 0xcf, 0x5f, 0xdf,
-0xf7, 0xfd, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xf7, 0x23, 0xff,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xfe, 0xff, 0xff, 0xfe, 0xf5, 0xbd, 0x7f,
-0xfb, 0xfe, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x5f, 0xd8,
-0xbf, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x77, 0xff, 0xff, 0x7f, 0xdf, 0x77, 0x9d,
-0x6f, 0xdf, 0x77, 0xdd, 0xef, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x6b,
-0xd9, 0x37, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xf6, 0xb9, 0xaf, 0xfb,
-0xc6, 0xff, 0xaf, 0xef, 0xfa, 0xda, 0xb5, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xb5, 0x7e, 0xf3, 0xff, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0x57, 0xa5,
-0xfd, 0xfb, 0x7e, 0xb5, 0xfd, 0xff, 0x7f, 0xd7,
-0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xdf, 0x3f, 0xe8, 0xff, 0xb7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xbf, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x8f, 0xff, 0xfa, 0xff, 0xff, 0xf9, 0xff,
-0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xfb, 0xfe, 0xfd, 0xbf, 0x6f, 0xfe,
-0xd5, 0xb7, 0xef, 0xbb, 0xf6, 0xff, 0xbf, 0xef,
-0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xbb, 0xff, 0xee,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf, 0x6f,
-0xff, 0xff, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf6, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
-0xf7, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xde, 0xff, 0xe5, 0xf9,
-0x7f, 0xdf, 0xf7, 0xfd, 0x7b, 0xdf, 0xd7, 0xf5,
-0xeb, 0x7f, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff,
-0xd7, 0xff, 0xef, 0xf9, 0x3f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0xf7, 0x7e,
-0x9f, 0xa7, 0x6d, 0xd3, 0x77, 0xa7, 0xed, 0xf2,
-0x7e, 0x9f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xa7,
-0x7f, 0xfa, 0x7f, 0xff, 0xff, 0x33, 0xfd, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77,
-0xfe, 0xd7, 0x75, 0xfb, 0x7f, 0xdd, 0xf5, 0xff,
-0x7f, 0xdf, 0xd7, 0x7d, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xff,
-0xff, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9, 0xfe,
-0x6f, 0x9f, 0xe2, 0xf8, 0xbe, 0x3f, 0x8f, 0xe6,
-0xbe, 0x3f, 0x9f, 0xe2, 0xf8, 0xfe, 0x7f, 0x9f,
-0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9, 0xff,
-0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xff, 0x9f, 0xe7, 0xff, 0xfc, 0x7f,
-0x1f, 0xfb, 0xfc, 0xff, 0x3f, 0xff, 0xf3, 0xff,
-0xff, 0xff, 0xff, 0xd7, 0xfe, 0xfd, 0x7f, 0xff,
-0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xbf, 0xff, 0x7e, 0xdf, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xdf, 0xaf,
-0xff, 0xff, 0xfd, 0x3f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0xfd, 0xff, 0xff, 0xf7, 0xfc, 0xff,
-0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x4f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xdf,
-0xf7, 0xff, 0xfb, 0x7e, 0xdf, 0xfd, 0xfb, 0x7f,
-0xdf, 0xff, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xe5, 0xdf, 0xf4,
-0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x2b, 0xc9, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x3f,
-0xfe, 0xeb, 0xfa, 0xfe, 0xaf, 0xaf, 0xeb, 0xfa,
-0xfe, 0xaf, 0x25, 0xe8, 0xfa, 0x3e, 0xaf, 0x2b,
-0xfa, 0xf6, 0xaf, 0xab, 0xeb, 0xfa, 0xfe, 0xaf,
-0xaf, 0xea, 0xfa, 0xfe, 0xbf, 0xaf, 0xeb, 0xfd,
-0x87, 0xff, 0xbf, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0x3f, 0xff, 0xf3, 0xfd, 0xdf, 0xb7,
-0xff, 0xff, 0xdf, 0xff, 0x87, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf8, 0x4f, 0x7f, 0xff, 0xff, 0x7f, 0xff,
-0xff, 0xf7, 0xff, 0x6f, 0xdf, 0xbe, 0xff, 0xbb,
-0x56, 0xdf, 0xb7, 0xe9, 0xff, 0xf3, 0xf7, 0x37,
-0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xfa, 0x5f, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x76, 0xfb, 0xec, 0x6f,
-0xff, 0x7f, 0xff, 0xf5, 0x7f, 0xee, 0xdf, 0xf7,
-0xfb, 0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xf1, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff, 0xed, 0xff,
-0xef, 0xde, 0xf7, 0xfe, 0xff, 0xea, 0x7f, 0xde,
-0x8f, 0xab, 0xff, 0x3f, 0xff, 0x7f, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x9f, 0xbf, 0xbf, 0xdf, 0xfd, 0xdb,
-0xff, 0xa7, 0xfa, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xdf, 0xfe, 0x47,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xef, 0xff, 0xfe, 0xfb, 0xfc, 0xaf, 0xbb,
-0x8b, 0xde, 0x1f, 0xbb, 0xee, 0xfd, 0x7f, 0xff,
-0xaf, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xe5, 0xff, 0xff, 0xff, 0xfe, 0x2f, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xfb, 0xf6, 0xfc, 0xbb, 0xef,
-0xcf, 0xf7, 0xbf, 0xff, 0xcb, 0xf2, 0xff, 0xff,
-0xff, 0xcf, 0xff, 0xfd, 0xf7, 0xff, 0xff, 0xff,
-0x7f, 0xf8, 0xbf, 0xff, 0xf7, 0xff, 0xfb, 0xff,
-0xff, 0xff, 0xfd, 0x7f, 0x7f, 0xd6, 0xf5, 0xec,
-0xfe, 0x5e, 0xcc, 0x75, 0x7d, 0xdb, 0xdf, 0xbf,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0xef, 0x7f, 0xff,
-0xfb, 0xff, 0xff, 0xe7, 0x7f, 0xff, 0xff, 0xdc,
-0xff, 0xff, 0xff, 0xf1, 0xfe, 0xff, 0xf7, 0xaf,
-0xf7, 0xca, 0xfe, 0x7f, 0xdb, 0xf9, 0xff, 0xbf,
-0xdf, 0xf1, 0xfd, 0x7f, 0xfd, 0xcf, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xff, 0xe4, 0xef, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xff, 0xdf, 0xf3, 0xfe,
-0xfd, 0xfe, 0xff, 0xdf, 0xef, 0x59, 0x7f, 0x3b,
-0xf7, 0xe3, 0xef, 0xbf, 0xff, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0xfd, 0x9f, 0x7f,
-0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xeb, 0xff, 0xcf, 0xb3, 0xed, 0xeb, 0x7f, 0xff,
-0xbf, 0xfb, 0xff, 0xef, 0xd7, 0xff, 0xff, 0xfd,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9,
-0xf5, 0xff, 0xff, 0xfe, 0xaf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf9, 0xe3, 0xf8, 0xfe, 0x3e, 0x8f,
-0xda, 0xda, 0x96, 0xad, 0xeb, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff,
-0xea, 0x7d, 0xff, 0xef, 0xff, 0xdf, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xdb, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x41, 0xff, 0xff, 0xfc, 0xff, 0x3f,
-0xff, 0xff, 0xfc, 0xfb, 0xff, 0xcf, 0xff, 0x3f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf9, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff,
-0xf9, 0xf3, 0xff, 0x1d, 0xaf, 0xff, 0xff, 0xdf,
-0xef, 0xff, 0xf3, 0xfc, 0xcf, 0x7f, 0xfd, 0xff,
-0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff,
-0x3f, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
-0x3b, 0xff, 0xaf, 0xff, 0x5f, 0x35, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xbf, 0xef, 0xef, 0xfb,
-0xf5, 0x79, 0xdf, 0x37, 0xcd, 0xff, 0xdf, 0x57,
-0xd5, 0xff, 0x7f, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfb, 0xd2, 0xff, 0xef, 0xef, 0x86, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xfd,
-0xf3, 0x7e, 0xff, 0x9f, 0xe7, 0xf9, 0xfe, 0xff,
-0xe7, 0xf9, 0xfe, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfd, 0xff, 0x5f, 0xff, 0xff, 0x60,
-0x3f, 0xb7, 0xff, 0xff, 0xaf, 0xff, 0xfe, 0xff,
-0xbf, 0xbf, 0xfb, 0xa7, 0xed, 0xf5, 0x7f, 0x5f,
-0xef, 0xf7, 0xfd, 0x5f, 0x47, 0xfe, 0xff, 0xff,
-0xeb, 0xff, 0xfe, 0xbf, 0xef, 0x5f, 0xff, 0xff,
-0xfd, 0x5b, 0xff, 0xff, 0xff, 0xf5, 0x7f, 0xff,
-0x77, 0xdd, 0xa7, 0x7d, 0xda, 0xff, 0xbe, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xbb, 0xee, 0xff, 0xdd,
-0xff, 0xfd, 0x5f, 0xff, 0xd5, 0xf7, 0x6b, 0xdf,
-0xff, 0xfd, 0x8b, 0x7f, 0xff, 0xff, 0xfe, 0xbf,
-0xff, 0xfb, 0xfe, 0xde, 0xff, 0xaf, 0x77, 0xed,
-0xff, 0x7d, 0xdc, 0x7d, 0xff, 0x7e, 0xdf, 0xb7,
-0xfb, 0xff, 0xff, 0xaf, 0xff, 0xfa, 0xff, 0xbf,
-0xaf, 0xff, 0x7f, 0xec, 0x7f, 0xff, 0xff, 0xff,
-0xd7, 0xff, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xc7,
-0xff, 0xff, 0xff, 0x1f, 0xeb, 0xfc, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xff, 0xf5, 0xff, 0xff, 0x5f,
-0xdf, 0xf5, 0xff, 0xff, 0xfe, 0x87, 0xfb, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xe7,
-0xfb, 0x6f, 0xfb, 0xbe, 0xe7, 0xbf, 0xfb, 0xb6,
-0xef, 0xbb, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0xff,
-0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xff,
-0xfe, 0xff, 0xff, 0x6f, 0xfa, 0xf6, 0xfd, 0xff,
-0xfb, 0xfe, 0xbf, 0x8f, 0x63, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9,
-0x1f, 0xff, 0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xb3,
-0xef, 0xfb, 0xb6, 0xfd, 0xbc, 0x6f, 0x1b, 0xb6,
-0xfd, 0xee, 0xdb, 0xe6, 0xfd, 0xbf, 0xef, 0xfb,
-0xfe, 0xdf, 0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xbf,
-0xfe, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f, 0xef, 0xfb,
-0xf7, 0xff, 0x7f, 0xf3, 0xfc, 0xfd, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf7,
-0xbd, 0xef, 0xfb, 0xff, 0xbb, 0xee, 0xfb, 0xbe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xff,
-0xfd, 0xff, 0xff, 0x5f, 0xd7, 0xf5, 0xef, 0x7f,
-0xff, 0xff, 0xff, 0xef, 0xfb, 0xff, 0xbf, 0xff,
-0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0x8b, 0xff, 0xff,
-0xff, 0xff, 0x9f, 0xff, 0xe9, 0xf2, 0x7e, 0x9f,
-0xa7, 0xfe, 0x9f, 0xbf, 0xeb, 0xfa, 0xff, 0xbf,
-0xef, 0xfb, 0x7e, 0xb6, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x7f,
-0xff, 0xff, 0xff, 0xf7, 0x7f, 0xfb, 0xff, 0x5f,
-0xff, 0xfd, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xff, 0xbf, 0xff, 0xff, 0xde, 0xff, 0xff,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfe,
-0x67, 0xff, 0xff, 0x9f, 0xe6, 0xf1, 0xfe, 0x7f,
-0x8b, 0xe7, 0xf9, 0xbe, 0x7f, 0x9f, 0xe7, 0xf9,
-0xfe, 0x7f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9b, 0xe7,
-0xf9, 0xfe, 0x7f, 0x9f, 0xc7, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xde, 0xbf,
-0xf5, 0xff, 0xbf, 0x4f, 0xf1, 0xfe, 0xff, 0xff,
-0xe7, 0xf9, 0xff, 0x9f, 0xef, 0xff, 0xff, 0xff,
-0x3f, 0xef, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xfe, 0xbf, 0xf7, 0xe9, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe7, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x57, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xbf,
-0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xff, 0xff,
-0xff, 0xff, 0xef, 0x7f, 0xff, 0xff, 0xdf, 0xf7,
-0xfd, 0xff, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xf7,
-0xfd, 0xff, 0x7f, 0xdf, 0x9f, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xcf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf7, 0xf5, 0xef, 0x7b, 0xdf, 0xf2, 0xfc, 0xbf,
-0xcb, 0xf2, 0xfd, 0x2f, 0x7f, 0xf2, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xfe, 0xbf, 0xaf, 0xeb, 0xfa, 0xfe,
-0xbf, 0xaf, 0xea, 0xda, 0xbc, 0x97, 0xab, 0x6a,
-0xda, 0xb5, 0xab, 0x69, 0xda, 0x76, 0xaf, 0x2f,
-0xea, 0xfa, 0xfe, 0xb7, 0xaf, 0xeb, 0xfa, 0xfe,
-0xaf, 0xf5, 0x7f, 0xff, 0xff, 0xcf, 0xff, 0xff,
-0xff, 0xff, 0xcf, 0xee, 0xfe, 0xfa, 0x3f, 0xbd,
-0xfd, 0x7f, 0xff, 0xfd, 0xf3, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf6, 0x07, 0xff, 0xff, 0xeb, 0xf7,
-0xf7, 0xff, 0xff, 0xab, 0xff, 0xfc, 0xcb, 0xe6,
-0xbd, 0xf7, 0xef, 0xfb, 0x7f, 0xb5, 0xe5, 0xfd,
-0xfd, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xff, 0xff, 0x89, 0x7f, 0xff, 0xff,
-0xff, 0xf7, 0xbf, 0xcf, 0xff, 0xdf, 0xf7, 0xbf,
-0xe7, 0xeb, 0xf6, 0xfb, 0xff, 0xb7, 0xef, 0xdf,
-0xff, 0x7e, 0x7b, 0xff, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xdf,
-0xfe, 0xf6, 0xbf, 0xaf, 0x49, 0xba, 0x7b, 0xa7,
-0x89, 0xda, 0xfd, 0xb7, 0xf7, 0xdf, 0xff, 0xff,
-0xfb, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xe7,
-0xff, 0x7f, 0xff, 0x7f, 0xff, 0xfb, 0xff, 0xfb,
-0xff, 0xff, 0x7b, 0xd7, 0xd5, 0xfd, 0x7a, 0x5b,
-0x95, 0xed, 0x5d, 0x5f, 0xef, 0xff, 0xff, 0xfd,
-0xff, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xfe, 0xff,
-0xec, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe,
-0xff, 0xfc, 0xfe, 0xf3, 0xfc, 0xdf, 0x3b, 0xce,
-0xf3, 0xfb, 0x3f, 0xce, 0xf3, 0xff, 0xef, 0xfb,
-0xfd, 0xfd, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xbf,
-0xff, 0xfd, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xcf, 0x5b, 0xfe, 0xef, 0xfd, 0x7f, 0x5f, 0xd3,
-0xf6, 0xfd, 0xb7, 0x5b, 0xd6, 0xfd, 0xbf, 0xff,
-0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xe2, 0xff, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xfd, 0xff, 0xcf, 0xff, 0xff, 0xff,
-0xdf, 0xd6, 0xed, 0xef, 0x46, 0xd7, 0xb7, 0xbf,
-0xfe, 0xff, 0xdf, 0xfe, 0xff, 0xff, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0x7e, 0xff, 0xff,
-0xfd, 0xff, 0xff, 0xde, 0xff, 0xbf, 0xfc, 0xff,
-0xf9, 0x7e, 0x7f, 0xbf, 0xee, 0xdd, 0x3d, 0xc7,
-0xf3, 0xfb, 0xf6, 0x1f, 0x3f, 0xcf, 0xdb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0xd7,
-0xf9, 0xf5, 0xff, 0xef, 0xff, 0xff, 0xf7, 0xbb,
-0xfd, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb,
-0xbf, 0xec, 0xff, 0x7f, 0xcb, 0xf2, 0xfc, 0xbf,
-0x3e, 0xf3, 0xfe, 0xbe, 0xa5, 0xe7, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7,
-0xfd, 0xff, 0xff, 0xde, 0xf6, 0xbf, 0xad, 0xeb,
-0x6a, 0xff, 0x2d, 0x6b, 0x7a, 0xff, 0xb7, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xaf, 0x7f, 0xde, 0xbf, 0xfd, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xee, 0x3f, 0xff, 0x1f, 0xd7,
-0xff, 0xff, 0xff, 0x3e, 0xdf, 0xf7, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0x3f, 0xcf, 0xff, 0x3c, 0x7f, 0x3f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf1, 0x5a, 0xff, 0xf7,
-0xff, 0xff, 0xfc, 0xef, 0xef, 0xdf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0x3f,
-0xff, 0xf9, 0xff, 0xcb, 0xff, 0xe7, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xe3, 0xdf,
-0xff, 0xff, 0xf2, 0xbf, 0xef, 0xff, 0xfb, 0xff,
-0xf1, 0xd6, 0x75, 0xfd, 0x67, 0x5f, 0xd6, 0x7d,
-0x67, 0x5d, 0x57, 0xfe, 0xfe, 0xe6, 0xbf, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf6,
-0x6f, 0xff, 0xff, 0xff, 0xd7, 0xf7, 0xff, 0xff,
-0x7f, 0xff, 0x3f, 0x7f, 0xd3, 0xf4, 0xfb, 0x3f,
-0x7f, 0xff, 0xfb, 0xbf, 0x7f, 0xff, 0x7c, 0xd7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf6, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb,
-0x2f, 0xef, 0xff, 0xff, 0xfb, 0x7c, 0xdf, 0xff,
-0xd5, 0xfb, 0x7e, 0xb7, 0xf1, 0xff, 0xff, 0xfb,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xcd, 0xbf, 0xff, 0xff, 0xff, 0xf7,
-0xdd, 0xf5, 0x7d, 0xdf, 0xf7, 0xff, 0xef, 0xbb,
-0xfa, 0xfb, 0xff, 0xef, 0xfe, 0xfd, 0xbf, 0xaf,
-0x7d, 0xdc, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xde, 0x1f, 0xff, 0xfd, 0xfd,
-0x4b, 0xfe, 0xfe, 0xb7, 0xbe, 0x7f, 0x55, 0xf1,
-0x76, 0xdd, 0xf7, 0xfd, 0xf1, 0xde, 0x37, 0x7d,
-0xff, 0xff, 0xed, 0x0b, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0x17, 0xff, 0xff,
-0x1f, 0xcd, 0x7f, 0x7f, 0xd7, 0xf7, 0xef, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf7, 0xe9, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xbb, 0xfe, 0xff, 0xbb, 0xee, 0x7b, 0xef,
-0xbb, 0x6e, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xaf, 0xef,
-0xdf, 0xfd, 0xbf, 0x6b, 0xd8, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xc0, 0xff, 0xfb, 0xfe, 0xff, 0xbf, 0xef,
-0xfb, 0x7e, 0xff, 0xb7, 0x6f, 0xdb, 0xd6, 0xf1,
-0xbb, 0xef, 0xde, 0xed, 0xbe, 0x6f, 0xfb, 0xfe,
-0xdf, 0xbf, 0x6f, 0xfb, 0xee, 0xff, 0xbf, 0xef,
-0xfb, 0xf7, 0xe5, 0x6f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xfe,
-0xff, 0xbf, 0xef, 0xf7, 0xff, 0x3f, 0xcf, 0xff,
-0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf6, 0xf7, 0xcf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xef, 0x7b, 0xde, 0xef, 0xbf, 0xfb, 0xbe, 0xef,
-0xbf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xe9, 0x7f, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xf5, 0xfd, 0x7f, 0x5f,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfb,
-0xff, 0xff, 0xad, 0xf9, 0x7f, 0x5f, 0xf7, 0xf5,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x37,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x9f, 0xa7,
-0xe9, 0xff, 0xaf, 0xef, 0xfa, 0xfe, 0xff, 0xaf,
-0xfa, 0xfe, 0x9f, 0xaf, 0x9d, 0xa7, 0xe9, 0xfb,
-0x7e, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7,
-0xf5, 0xe9, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xfb,
-0xfd, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0xf5, 0xfd,
-0x7f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xf9, 0xfe, 0x7f, 0x9f,
-0xe2, 0xf8, 0xbe, 0x2f, 0x9f, 0xe7, 0xf9, 0xfe,
-0x7f, 0x9f, 0xe7, 0xfe, 0x7f, 0x9f, 0xe6, 0xf8,
-0xbe, 0x2f, 0x8f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f,
-0xe7, 0xf9, 0xfe, 0x57, 0xff, 0xe7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xfe, 0xff, 0x9f, 0xef,
-0xfb, 0xfe, 0xff, 0x9f, 0xfb, 0xfe, 0xff, 0xbf,
-0xcf, 0xf9, 0xff, 0xff, 0x7f, 0x5f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
-0xfd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xdf,
-0xf7, 0xfb, 0xff, 0xff, 0xff, 0xbf, 0xeb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xfd, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xaf,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd,
-0xff, 0x7f, 0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7,
-0xff, 0x7f, 0xdf, 0xf7, 0xe7, 0xfd, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x7c, 0x8f, 0xfb, 0xfa, 0xf2, 0xff, 0xbf, 0x2f,
-0xfa, 0xfc, 0xbf, 0xef, 0xca, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
-0xef, 0xf3, 0x2f, 0xff, 0xeb, 0xfa, 0xfe, 0x9f,
-0xa7, 0xeb, 0xfa, 0xde, 0xbf, 0xae, 0xca, 0xfa,
-0x6c, 0x1f, 0xaf, 0x38, 0xbe, 0xbb, 0xa3, 0xe8,
-0xfa, 0x3e, 0x9f, 0xaf, 0xeb, 0x7a, 0xbe, 0xbf,
-0xab, 0xeb, 0xff, 0x56, 0x7f, 0xf3, 0xff, 0xff,
-0xfd, 0xfb, 0xff, 0xfb, 0xff, 0x3e, 0x57, 0xfb,
-0xf5, 0xdf, 0xaf, 0x7f, 0xff, 0xfd, 0xff, 0xff,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff,
-0xff, 0x7f, 0xbf, 0xf7, 0xed, 0xda, 0xff, 0x7f,
-0xdb, 0xdf, 0xff, 0x37, 0x7f, 0xef, 0xff, 0xff,
-0xbd, 0xff, 0xfd, 0xf7, 0xf8, 0xbf, 0xeb, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xdd, 0xfa, 0x9f, 0xff,
-0x5f, 0xff, 0xff, 0xff, 0xef, 0xfa, 0xff, 0x35,
-0xba, 0xff, 0xff, 0xef, 0xff, 0xfb, 0xba, 0x7f,
-0x6e, 0xeb, 0xbf, 0xdb, 0xfb, 0xef, 0xfb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8b,
-0xff, 0xff, 0xff, 0xef, 0xfd, 0xf7, 0x69, 0xfb,
-0xfe, 0x5f, 0xa7, 0xcb, 0xfa, 0xf6, 0xb5, 0xa7,
-0xfa, 0xfe, 0xbf, 0xaf, 0x3d, 0xdf, 0xb6, 0x3f,
-0xfe, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
-0xac, 0x7f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x79, 0xee, 0xff, 0x95, 0xad, 0x7d, 0x5d, 0xd5,
-0xdd, 0xf5, 0xde, 0xf6, 0xfd, 0xbf, 0xff, 0xff,
-0x5f, 0xdf, 0xf7, 0xff, 0xf7, 0x7f, 0xff, 0xff,
-0xff, 0xfe, 0x8f, 0xff, 0xfd, 0xff, 0xff, 0xef,
-0xff, 0x8e, 0xf3, 0x6c, 0xff, 0xb7, 0xee, 0x7b,
-0xee, 0xee, 0xbb, 0x8b, 0xbb, 0xf6, 0xbf, 0xce,
-0xff, 0xff, 0xfd, 0xf7, 0xfe, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0x99, 0xff, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xf5, 0xfd, 0x7f, 0x4f, 0x9e, 0xf6,
-0xfd, 0xff, 0x6f, 0xdb, 0xf4, 0x3f, 0x4f, 0xaf,
-0xfe, 0xff, 0xe7, 0xef, 0x7f, 0xbf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xfe, 0x3f, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xdf, 0xfe, 0xff, 0xff, 0x7e,
-0x3f, 0x95, 0x65, 0xd9, 0x7e, 0x3e, 0xfe, 0x7f,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x25, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xcc, 0xc3, 0x38,
-0xf7, 0x38, 0x4f, 0x73, 0xdc, 0xff, 0xbd, 0x9e,
-0xf8, 0x3e, 0xff, 0xff, 0x73, 0xdf, 0xff, 0x3d,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff,
-0xb7, 0xef, 0xbb, 0x76, 0xff, 0xbf, 0x9f, 0xfd,
-0xfb, 0xff, 0xef, 0xff, 0xdf, 0xfe, 0xaf, 0xff,
-0xe6, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfc, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0x9f, 0xa7, 0xe8, 0xde, 0x77, 0x8c, 0xe5, 0x9d,
-0xfb, 0x63, 0xf7, 0xfd, 0x1b, 0xbe, 0xda, 0xff,
-0xbe, 0xef, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x21, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xfb, 0xe9, 0xea, 0xfe, 0xb7, 0xaf, 0xeb, 0x72,
-0x7e, 0xbf, 0xaf, 0xfe, 0xe7, 0xbf, 0xfd, 0xfb,
-0xff, 0xdf, 0xe7, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xbf, 0xf0, 0x7f, 0xff, 0xff, 0xff,
-0xbf, 0xff, 0xfd, 0xdf, 0x77, 0xdf, 0xf7, 0xfd,
-0xff, 0x7f, 0xdf, 0xf7, 0xff, 0x5e, 0xd7, 0xff,
-0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff,
-0xff, 0xff, 0x3f, 0xd9, 0xff, 0x3f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfc, 0x7f,
-0xff, 0xcf, 0xff, 0xfc, 0xfb, 0x3f, 0xcf, 0xff,
-0x3f, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x31, 0xaf,
-0xff, 0xff, 0xff, 0xf6, 0xbf, 0x3f, 0xe7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xbf, 0x9f,
-0xef, 0x7e, 0xbd, 0xff, 0xff, 0xdf, 0x77, 0xcb,
-0xff, 0xbf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x5a,
-0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x79,
-0xdf, 0xf7, 0x9d, 0xf3, 0x7f, 0xde, 0x75, 0xfd,
-0x75, 0xbb, 0x3f, 0x1f, 0xf3, 0xf5, 0x2f, 0xef,
-0x7e, 0xe6, 0xbf, 0xff, 0xff, 0xfb, 0xff, 0xff,
-0xef, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x3f, 0xe7, 0xf3, 0xfe, 0x7f, 0x3f, 0xcf,
-0xf3, 0xef, 0xf7, 0xcd, 0xff, 0x7e, 0x77, 0xb5,
-0xfd, 0xff, 0x7e, 0x57, 0xff, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xfb, 0x7e, 0xdf, 0xff, 0xf5,
-0xfd, 0x7b, 0x5f, 0x57, 0xbf, 0xff, 0xf9, 0xf7,
-0x71, 0xff, 0xbf, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0xff, 0x7f, 0x9b, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xfb, 0xff, 0xef, 0xfb, 0xff,
-0xff, 0xbf, 0xef, 0xdb, 0xee, 0xdd, 0xa7, 0x6b,
-0x38, 0xef, 0xbd, 0xf7, 0x7d, 0xdf, 0xf7, 0xff,
-0xff, 0xfd, 0xdf, 0xff, 0xfd, 0x89, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x77, 0xfd, 0xfb, 0x7e,
-0xdf, 0xf7, 0xcd, 0xfb, 0x7d, 0xdf, 0xba, 0xfe,
-0xbf, 0xff, 0xff, 0xea, 0xde, 0xff, 0xef, 0xeb,
-0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xe2, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xfc, 0xff, 0x8f, 0xff,
-0x7e, 0xd7, 0xff, 0xeb, 0xff, 0x5f, 0xdf, 0xf7,
-0xfd, 0x79, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf7,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee,
-0x7b, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xbe, 0xe7,
-0xbf, 0xff, 0xaf, 0xff, 0xdf, 0xf7, 0xff, 0xff,
-0xff, 0xf9, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe7, 0xdf, 0xf6, 0xfd, 0xff, 0x7f, 0xda,
-0xf6, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xe7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfb, 0x1f, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xdd, 0xbf, 0xef, 0xdb, 0xee, 0xfd, 0xbd,
-0x6f, 0x1b, 0xbe, 0xfd, 0xef, 0xfb, 0xe6, 0x5f,
-0x9f, 0xef, 0xfb, 0xfe, 0xdf, 0xbf, 0xef, 0xfb,
-0xfe, 0xdf, 0xbf, 0xfe, 0x66, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xff, 0xf7, 0xff, 0xfd,
-0xff, 0xef, 0xfb, 0xfe, 0xff, 0x3f, 0xfb, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x72, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xbf, 0xef,
-0xfb, 0xfe, 0xf7, 0xbd, 0xef, 0xbb, 0xdf, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x97,
-0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf7, 0xf5, 0xff, 0x9f, 0xef, 0xd7, 0xfd, 0xed,
-0x7f, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xcb, 0xff, 0xff, 0xff, 0xfe, 0x9f, 0xff, 0x7e,
-0xff, 0xaf, 0xeb, 0xfa, 0xfe, 0xbf, 0xaf, 0xeb,
-0xfb, 0xfa, 0x7e, 0x9f, 0xff, 0xff, 0xfa, 0x7f,
-0x9f, 0x27, 0xe9, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xd7, 0xff,
-0xdf, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
-0xff, 0x7f, 0xef, 0xde, 0xb7, 0xbf, 0xff, 0x7a,
-0x5f, 0xb7, 0xff, 0xfd, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x6f, 0xff, 0xff, 0x9f, 0xe2,
-0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xfe, 0x6f, 0xe7, 0xf9, 0xde,
-0x6f, 0x0b, 0xe6, 0xe9, 0xfe, 0x2f, 0x9f, 0xe7,
-0xf9, 0xfe, 0x7f, 0x9f, 0xd5, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9,
-0xfe, 0x7f, 0x9f, 0xef, 0xfb, 0xff, 0x1f, 0xcf,
-0xd9, 0xf5, 0xfb, 0xbf, 0xdf, 0xd3, 0xfe, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f, 0xef,
-0xfd, 0xfe, 0xfe, 0xbf, 0xf7, 0xfb, 0xaa, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0x7f, 0x7f, 0xff, 0xbf, 0xff, 0x7f,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff,
-0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd,
-0xff, 0x7f, 0xdf, 0xf7, 0xf9, 0xff, 0xf7, 0xdf,
-0xe6, 0xfd, 0xff, 0x7f, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xfc, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xef, 0xab, 0xeb, 0xfa, 0xfe, 0xbf, 0xaf, 0xe9,
-0xfa, 0xfe, 0xaf, 0xdb, 0xd7, 0xf5, 0xff, 0x2f,
-0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
-0x9f, 0xff, 0xff, 0xba, 0xff, 0xfe, 0xbf, 0xaf,
-0xe9, 0xfa, 0x7e, 0x0f, 0xa3, 0xe8, 0xfa, 0xfe,
-0xb7, 0xab, 0xeb, 0xfa, 0xf7, 0xaf, 0x63, 0xfa,
-0x76, 0xaf, 0xab, 0xea, 0xfa, 0xbe, 0xbf, 0xab,
-0xea, 0xfa, 0xfe, 0xbf, 0x5f, 0x7f, 0xef, 0xed,
-0xff, 0xf3, 0xef, 0x7f, 0xff, 0xfb, 0xfd, 0xff,
-0xdf, 0xef, 0xf5, 0xff, 0x6f, 0x7f, 0x3f, 0xff,
-0xba, 0xff, 0x33, 0xcf, 0xf3, 0x7d, 0xbf, 0xdc,
-0xff, 0xff, 0xfb, 0xff, 0xff, 0xde, 0xa7, 0xff,
-0xff, 0xdf, 0xb2, 0xff, 0xfa, 0xff, 0xff, 0xf7,
-0x7d, 0xff, 0x7d, 0xbf, 0x77, 0xff, 0xf7, 0x7e,
-0xdf, 0xf4, 0xdf, 0x5e, 0xcf, 0xff, 0xfd, 0xff,
-0xff, 0x7f, 0x7f, 0xfd, 0xff, 0xff, 0x7f, 0x85,
-0x5f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xbb,
-0xff, 0xff, 0xfe, 0xef, 0xfb, 0xfe, 0xff, 0xbb,
-0xf3, 0xaf, 0xff, 0xfb, 0x6b, 0xfa, 0xfe, 0x5f,
-0xb7, 0xef, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0x3f, 0xff, 0xfd, 0xf7, 0xf8, 0xd7, 0x76,
-0x9d, 0xa6, 0x4b, 0xda, 0x76, 0x9d, 0xa7, 0x69,
-0xda, 0xdb, 0xbf, 0xad, 0xfa, 0xfe, 0xb7, 0xa7,
-0x7d, 0xff, 0x7e, 0x3f, 0xff, 0x3f, 0xff, 0xff,
-0xff, 0xff, 0xc7, 0xff, 0x7f, 0xff, 0xf5, 0xdf,
-0xff, 0xa7, 0xd9, 0xfe, 0x7e, 0x9f, 0x67, 0xd9,
-0xf6, 0x7f, 0x9f, 0xde, 0xbf, 0x7f, 0xeb, 0x7b,
-0x7e, 0x57, 0xfd, 0xff, 0x5f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xff, 0xfe, 0xef, 0xab, 0xef, 0xfa, 0xfe,
-0x3f, 0xbf, 0xef, 0xfe, 0xfb, 0xb9, 0xe9, 0xa8,
-0xfa, 0xfe, 0xbf, 0xee, 0xfb, 0xfe, 0xff, 0xfb,
-0xef, 0xff, 0x7f, 0xff, 0xed, 0x9f, 0xef, 0xfd,
-0xfb, 0xde, 0x7d, 0x3f, 0x6f, 0xdb, 0xe6, 0xfd,
-0xbf, 0x7f, 0xdb, 0xd6, 0xf9, 0x3d, 0x6b, 0xfb,
-0xfe, 0xff, 0xbb, 0xee, 0xfa, 0xfe, 0xbf, 0xb7,
-0xfb, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbf,
-0xff, 0xff, 0xfb, 0xfb, 0xfd, 0xf9, 0x9e, 0x77,
-0x9f, 0xe3, 0xf9, 0xde, 0x57, 0x9d, 0xfe, 0xef,
-0xef, 0xf6, 0xff, 0x5f, 0xdf, 0x9f, 0xff, 0x7f,
-0x7f, 0xff, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xf3,
-0x7f, 0xff, 0xff, 0x7c, 0xcd, 0xff, 0xfd, 0xf7,
-0xf8, 0xd7, 0xf1, 0x9f, 0xe7, 0x1f, 0xc7, 0xfe,
-0xf5, 0x3f, 0xcf, 0x71, 0xdc, 0x36, 0x3d, 0x8f,
-0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x8f, 0xff, 0xff, 0xef, 0xfa, 0xff, 0xff,
-0xbd, 0xff, 0xff, 0xd7, 0xbf, 0xff, 0xfd, 0xfe,
-0xfb, 0xff, 0xbb, 0x5e, 0xff, 0xdf, 0xf7, 0xfb,
-0xfe, 0xff, 0xf7, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf7, 0xfd, 0x7f, 0x36, 0xdd, 0xf7, 0x3c, 0xcf,
-0x7b, 0xda, 0xff, 0xfa, 0x7e, 0x9c, 0xb3, 0x3d,
-0xbe, 0x7d, 0x9f, 0xf7, 0xed, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0x9f, 0xff, 0xff, 0xff,
-0xfe, 0x7a, 0x5e, 0xbf, 0x2f, 0xeb, 0xaa, 0xdc,
-0xbf, 0xae, 0xab, 0xff, 0xff, 0xaf, 0xab, 0x7a,
-0xdc, 0xbf, 0xad, 0xeb, 0x7a, 0xfe, 0xb7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfa, 0x67, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xf7,
-0x77, 0xdf, 0xf7, 0xfd, 0xff, 0xff, 0xf7, 0xf9,
-0xdf, 0x7f, 0xdf, 0x77, 0xfd, 0xff, 0x7f, 0xdf,
-0xef, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xbf,
-0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xdf, 0xfc,
-0xfd, 0xff, 0xd7, 0xff, 0xff, 0xff, 0xed, 0x9f,
-0xf7, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff,
-0x9f, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xf1,
-0xca, 0xff, 0xff, 0xff, 0xff, 0xab, 0xff, 0xff,
-0xff, 0x9f, 0xff, 0xf9, 0xfe, 0x7f, 0xff, 0xfd,
-0xe3, 0xff, 0xff, 0xcf, 0xf3, 0xff, 0xff, 0xff,
-0xff, 0xfa, 0xff, 0xce, 0xff, 0xff, 0xff, 0xff,
-0xf5, 0xab, 0xdf, 0xff, 0xff, 0xff, 0xfc, 0xd6,
-0x75, 0x9d, 0x7f, 0x59, 0xd7, 0x35, 0xfd, 0xe7,
-0x79, 0xaf, 0x5d, 0xf5, 0x7c, 0xd7, 0x55, 0xd5,
-0xff, 0x7d, 0x57, 0xf5, 0xfe, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0xf0, 0x6f, 0xff, 0xff, 0xff, 0xff,
-0x9f, 0x7f, 0xd3, 0xfe, 0xfb, 0x3f, 0xe7, 0xf9,
-0xfc, 0xff, 0x35, 0xe7, 0xfe, 0x7f, 0xbe, 0xe7,
-0xbb, 0xfe, 0xff, 0x3f, 0x6f, 0xbf, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xf7, 0x47, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf5, 0x7f, 0xde, 0xe7, 0xd5, 0xe3,
-0x7a, 0xdf, 0xff, 0xfc, 0xbf, 0x7f, 0xff, 0xf9,
-0xff, 0x7c, 0x9f, 0xef, 0xcd, 0xf6, 0x7f, 0xfb,
-0xf2, 0xff, 0xff, 0xff, 0xff, 0xd1, 0xbf, 0xff,
-0xff, 0xff, 0xf7, 0xfe, 0xff, 0xe3, 0xf4, 0xfa,
-0xbe, 0xff, 0xff, 0xfe, 0xfd, 0x1d, 0x4f, 0xfa,
-0xfd, 0x3f, 0x4f, 0xab, 0xfa, 0xfb, 0xbe, 0x4f,
-0xe9, 0xdc, 0x57, 0xff, 0xff, 0xff, 0xd8, 0x9f,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f, 0xdf,
-0x77, 0xfd, 0xf7, 0x7d, 0xdf, 0xb7, 0xd2, 0xf7,
-0xdf, 0xf7, 0x7d, 0xff, 0x7f, 0xdf, 0xf7, 0xc5,
-0xf7, 0x77, 0xef, 0xab, 0xff, 0xf5, 0xfd, 0x7e,
-0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe7, 0xff, 0xfe, 0x7f, 0x1f, 0xff, 0xf3,
-0x5e, 0x7f, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xeb,
-0xfb, 0xfe, 0x7f, 0xf7, 0xfd, 0x7f, 0xff, 0xff,
-0xff, 0xe6, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0x9e, 0xe7, 0xbe, 0xee, 0xdb, 0xee, 0xff, 0xbb,
-0xee, 0x7f, 0xef, 0xbf, 0xee, 0xfb, 0xbe, 0xef,
-0xb9, 0xef, 0xbb, 0xee, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0x1b, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf9, 0xf6, 0x7d, 0xff, 0xef, 0xff, 0xf7,
-0xfd, 0xaf, 0x6f, 0xf9, 0xfd, 0xff, 0x6b, 0xd8,
-0xfe, 0x3d, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xb1, 0xff, 0xfb, 0xfe,
-0xff, 0xbf, 0x6f, 0xdb, 0xfe, 0xfd, 0xbb, 0x6f,
-0xdb, 0xd6, 0xf1, 0xbb, 0x6f, 0xfe, 0xfd, 0xbe,
-0x6f, 0xdb, 0xf6, 0xfd, 0xbe, 0x6f, 0xdb, 0xee,
-0xff, 0xbf, 0xef, 0xfb, 0xff, 0xe5, 0x6f, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xf7, 0xff, 0xff, 0x7f,
-0x6f, 0xdf, 0xfe, 0xff, 0xbf, 0x6f, 0xff, 0xff,
-0x3f, 0xcf, 0xdb, 0xfd, 0xfd, 0xff, 0xdf, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x8f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xf7, 0xbf, 0xef, 0x7b, 0xde, 0xfb, 0xff,
-0xfb, 0xbe, 0xef, 0xbb, 0xef, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xff, 0xf5, 0xff, 0xff, 0x5f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xeb, 0xbf, 0xfc, 0x9f, 0xff, 0xe9, 0xff,
-0xbf, 0xeb, 0xfa, 0x7e, 0xff, 0xbf, 0xeb, 0xfa,
-0x7e, 0xba, 0x7f, 0xfa, 0xfe, 0x9f, 0xaf, 0xed,
-0xfa, 0xfe, 0xff, 0xbf, 0xeb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xb3, 0xff, 0xd7, 0xff, 0xfd,
-0x7f, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xdd, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xf8, 0xff, 0xfa, 0xf9,
-0xfe, 0x2f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f,
-0xe7, 0xf9, 0xfe, 0x7f, 0x8b, 0xc7, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xc7, 0xf9,
-0xfe, 0x7f, 0x1f, 0xe7, 0xf9, 0xff, 0x9f, 0xff,
-0xff, 0xfb, 0xfe, 0xff, 0xff, 0xef, 0xfb, 0xfe,
-0xff, 0xbf, 0xff, 0xff, 0xfe, 0x7d, 0x7a, 0xff,
-0xfe, 0x7f, 0xbf, 0xef, 0xf9, 0xfe, 0x7f, 0x9e,
-0xef, 0xff, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0x83,
-0xff, 0xff, 0xff, 0x7f, 0xdf, 0xff, 0xfd, 0xff,
-0xff, 0xdf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xaf,
-0xff, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0x7f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xff, 0xfd, 0xff, 0x7f,
-0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff,
-0x7f, 0xde, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd,
-0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0xff, 0xd1, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xd3, 0xf4, 0xfd, 0x1f, 0x4f, 0xd3, 0xf4,
-0xfd, 0x3f, 0x4f, 0xd8, 0xfd, 0x3f, 0x4f, 0xd1,
-0xf4, 0xfd, 0x3f, 0x47, 0x53, 0xf4, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf6, 0xaf, 0xff, 0xe3,
-0xfa, 0xfe, 0xbb, 0xa4, 0xe9, 0xba, 0xce, 0xab,
-0xae, 0xeb, 0x3a, 0xce, 0xb3, 0x2b, 0x7a, 0xfe,
-0xbf, 0xa3, 0xeb, 0xfa, 0x3e, 0x9f, 0x8f, 0xeb,
-0x7a, 0xbe, 0xaf, 0xad, 0xeb, 0x7b, 0x07, 0xff,
-0xff, 0xff, 0x7f, 0xfe, 0xc7, 0xf2, 0xfd, 0x5f,
-0xff, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0x7f, 0xfb,
-0xee, 0xef, 0xbf, 0xef, 0x7b, 0xae, 0xfb, 0x9a,
-0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2,
-0x7f, 0xff, 0xff, 0xff, 0x79, 0xf7, 0xfa, 0x7d,
-0xff, 0xff, 0xdf, 0x9f, 0xeb, 0xfb, 0xfe, 0xff,
-0xf7, 0xfb, 0x7d, 0xbf, 0xbf, 0xdb, 0xff, 0x7e,
-0xbf, 0xda, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xfa, 0x5f, 0xff, 0xff, 0xff, 0xfe, 0xfb, 0x7f,
-0xf5, 0xb7, 0x3f, 0xef, 0xf7, 0xff, 0xff, 0xaf,
-0x7f, 0xbb, 0x7e, 0xff, 0xff, 0xff, 0xfe, 0xfe,
-0xff, 0xfb, 0x7f, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xff, 0xff, 0xfb, 0xff, 0xeb, 0xff, 0xee, 0x3f,
-0x8d, 0xe3, 0xf8, 0xfc, 0x37, 0x0f, 0x63, 0xc8,
-0xfe, 0x1d, 0xa7, 0xf8, 0x7c, 0x3f, 0x83, 0x23,
-0xf8, 0xdc, 0x1f, 0x87, 0xe3, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xfe, 0x70, 0x7f, 0xf6, 0x7f, 0xff,
-0xdf, 0xf7, 0xf5, 0xff, 0x77, 0x9f, 0x37, 0xf9,
-0xff, 0x7f, 0xdf, 0xfe, 0xed, 0x7f, 0xdf, 0x77,
-0xdd, 0xef, 0x7f, 0xdf, 0x97, 0xf5, 0xf7, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xf0, 0x0f, 0xff, 0xfe,
-0xff, 0xef, 0xef, 0xd7, 0xf7, 0xfb, 0xff, 0xff,
-0x1f, 0xee, 0xf3, 0xbe, 0xbe, 0xf2, 0xbb, 0xbf,
-0xf9, 0xbf, 0xfe, 0xbb, 0xfc, 0x5f, 0xff, 0xff,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0x7f, 0x09, 0xff,
-0x7f, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff, 0xbf,
-0x7f, 0xd7, 0xe5, 0xfd, 0xbf, 0x3b, 0xdf, 0xf4,
-0x3b, 0x5d, 0xcf, 0xfe, 0xfc, 0x7f, 0x7f, 0x3b,
-0xff, 0xff, 0x9f, 0xff, 0xfb, 0xff, 0xff, 0xf0,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xdf, 0xf5,
-0x73, 0xdb, 0x5f, 0xbf, 0xdd, 0xbd, 0xef, 0x7b,
-0xee, 0x7f, 0xff, 0x7b, 0xff, 0xff, 0xfb, 0xef,
-0xff, 0xff, 0xff, 0xfd, 0x7e, 0xff, 0xff, 0xff,
-0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
-0xcf, 0xf1, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xf3,
-0xfe, 0xfe, 0xde, 0xfc, 0xfa, 0xbf, 0x3f, 0x6f,
-0xff, 0xbf, 0x1f, 0xd7, 0xff, 0xfc, 0x7f, 0xff,
-0xff, 0xff, 0xd6, 0xef, 0xff, 0xff, 0xf7, 0xff,
-0xf7, 0xfb, 0x7f, 0xd7, 0xfe, 0xff, 0xfd, 0xef,
-0xdf, 0xff, 0xff, 0xf3, 0xff, 0xb7, 0xfb, 0xff,
-0xf7, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xaf, 0x7b, 0xfc, 0xff, 0xbf, 0xed, 0x72,
-0xff, 0xf3, 0x7d, 0xdf, 0xff, 0xf7, 0xed, 0xf9,
-0x7e, 0xdd, 0x7b, 0xfd, 0x7f, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x11, 0x7f, 0xff,
-0xff, 0xff, 0xef, 0xec, 0xfd, 0x7f, 0xfa, 0xbf,
-0xef, 0xf9, 0xfe, 0xff, 0xff, 0xed, 0xf0, 0xfb,
-0xbf, 0xed, 0xf9, 0xff, 0xaf, 0x6e, 0xfb, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0x7f,
-0xff, 0xff, 0xff, 0xfc, 0xf5, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0x7e, 0xff, 0x5f, 0xdf, 0xfb, 0xef,
-0xf7, 0xcf, 0xfb, 0xf8, 0xef, 0xff, 0xfd, 0x7f,
-0x9f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6,
-0xc3, 0xff, 0xbf, 0xfc, 0xff, 0xf5, 0xcc, 0xf7,
-0x3c, 0xff, 0xfe, 0xcf, 0xf2, 0x6c, 0xcf, 0xdf,
-0xcf, 0xec, 0x7f, 0x3f, 0xff, 0xbf, 0xff, 0xfb,
-0x75, 0xcf, 0xb3, 0xff, 0xff, 0xe7, 0xff, 0xff,
-0xff, 0x35, 0xaf, 0xf7, 0xbf, 0xdf, 0xff, 0xff,
-0xa3, 0xe5, 0xff, 0x3f, 0xdd, 0xfe, 0xa9, 0xef,
-0x7e, 0x7f, 0xfc, 0x5a, 0x3b, 0xdf, 0xf7, 0xff,
-0xff, 0xfe, 0xbb, 0xf6, 0xff, 0xff, 0xfe, 0xbf,
-0xff, 0xff, 0x58, 0xbd, 0xfe, 0xff, 0xff, 0x2b,
-0xff, 0x9f, 0x9d, 0x73, 0x2b, 0xfa, 0xe7, 0xbf,
-0xab, 0x5d, 0xcb, 0x9f, 0xac, 0x6a, 0x9f, 0x7e,
-0x9f, 0xf7, 0xef, 0x7f, 0xfe, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xef, 0x86, 0xff, 0xdf, 0xff,
-0xed, 0x7f, 0xff, 0xcd, 0x93, 0x65, 0x79, 0x7e,
-0xdf, 0x37, 0xed, 0xd3, 0x7f, 0xf5, 0xe5, 0x7f,
-0x76, 0xdd, 0xff, 0x7f, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xdf, 0xff, 0xff, 0xff, 0x78, 0xff, 0xfb,
-0xff, 0xfe, 0xff, 0xeb, 0xfe, 0x7d, 0xdd, 0x2f,
-0xcb, 0xc3, 0xfe, 0xbe, 0x7c, 0xdb, 0xff, 0xff,
-0x2f, 0xff, 0x22, 0xdf, 0xf7, 0xff, 0xeb, 0xfb,
-0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xdb,
-0xff, 0x77, 0xff, 0xff, 0x7d, 0x5f, 0x77, 0x1d,
-0xf7, 0x51, 0x5e, 0x77, 0x95, 0x87, 0x7d, 0xde,
-0xdd, 0x87, 0x79, 0xdf, 0x7b, 0xdd, 0xff, 0x79,
-0x5f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0x99, 0xff, 0xef, 0xff, 0xfe, 0xbf, 0xad, 0xfb,
-0xca, 0xfe, 0xbf, 0xaf, 0xab, 0x42, 0xfe, 0xad,
-0x2f, 0x3f, 0xfe, 0xbe, 0xaf, 0x4b, 0xfe, 0xdf,
-0xfe, 0xaf, 0xef, 0x9f, 0xf7, 0xed, 0xff, 0xff,
-0xff, 0xe3, 0x7f, 0xfd, 0xff, 0xff, 0xd7, 0xf5,
-0xfd, 0xb8, 0x4f, 0xd7, 0xf5, 0xfd, 0xfa, 0x5f,
-0xd6, 0xf7, 0xc6, 0x7f, 0xd7, 0xf5, 0x6d, 0xff,
-0x76, 0xff, 0x35, 0xfd, 0xf3, 0xfe, 0x7f, 0x9f,
-0xff, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf6, 0xfd, 0xbf, 0xed, 0xff, 0xfe,
-0xdf, 0xbf, 0xcd, 0xfb, 0x7f, 0xbf, 0xed, 0xd0,
-0xfc, 0xfd, 0x27, 0xed, 0xff, 0xff, 0xff, 0xef,
-0x5b, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xe3, 0xfe, 0xfe, 0xff,
-0x9f, 0xe7, 0xfa, 0xfe, 0xff, 0xfb, 0xfa, 0xfe,
-0xf9, 0xff, 0xfb, 0x9b, 0xfe, 0x7f, 0xff, 0xff,
-0xff, 0xe7, 0xff, 0xff, 0xff, 0xf9, 0x1f, 0xff,
-0xbf, 0xef, 0xfb, 0xfe, 0xfd, 0x9f, 0x67, 0xdb,
-0x36, 0xdf, 0xbf, 0xee, 0xdb, 0xbe, 0xfd, 0xee,
-0xdb, 0xee, 0x75, 0xbf, 0x67, 0xbb, 0xfe, 0xff,
-0xbf, 0xef, 0xf8, 0xfe, 0xff, 0xbf, 0xfe, 0x56,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf, 0x6f,
-0xdb, 0xfc, 0xff, 0xff, 0xef, 0xf3, 0xfe, 0xfd,
-0xbf, 0xdb, 0xff, 0xfb, 0xbe, 0xdf, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff,
-0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xf7, 0xfd, 0xfe, 0xff, 0xff, 0xf7, 0xfe, 0xff,
-0xbf, 0xbf, 0xfb, 0xff, 0xfe, 0xdf, 0xff, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0x17, 0xfe, 0x5f, 0xff, 0xff, 0xff,
-0x7f, 0x47, 0xd1, 0xf5, 0xfd, 0x7f, 0xdf, 0xd7,
-0xf5, 0xef, 0x7f, 0xd7, 0xb5, 0xfb, 0x1b, 0x5e,
-0xf9, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0x7f,
-0xff, 0xfe, 0xff, 0x8b, 0xff, 0xe9, 0xff, 0xff,
-0xff, 0xe7, 0xeb, 0xfa, 0xfe, 0x9f, 0xa7, 0xe9,
-0xfa, 0x7e, 0x8f, 0xa7, 0xfb, 0x76, 0x9f, 0xe3,
-0xea, 0xd7, 0x3f, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xb0, 0x7b, 0xfd, 0x7f,
-0xfd, 0xff, 0xfd, 0xfb, 0x37, 0x4f, 0xf7, 0xe5,
-0xef, 0x7f, 0x5f, 0xf7, 0xbd, 0xef, 0x7f, 0xf7,
-0x3e, 0xff, 0x77, 0x5c, 0xf7, 0xbf, 0xdf, 0xf7,
-0xfe, 0xfb, 0xbf, 0xff, 0xff, 0xfd, 0x2f, 0xff,
-0xaf, 0x9f, 0xe7, 0xf9, 0xbe, 0x3f, 0x8b, 0xc2,
-0xf8, 0xbe, 0x3f, 0x8b, 0xa7, 0xf9, 0xbe, 0x6f,
-0xe2, 0xf9, 0xfe, 0x2f, 0x89, 0xe6, 0xf9, 0xfe,
-0x7f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xdd,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf5, 0xff,
-0x7a, 0x5f, 0xf7, 0xfc, 0x7f, 0x37, 0xdf, 0xf1,
-0xfd, 0x1f, 0x4f, 0xf1, 0xf5, 0xff, 0x1f, 0xef,
-0xff, 0xfe, 0x7f, 0x9f, 0xe7, 0xff, 0xff, 0xff,
-0xeb, 0x3f, 0xdf, 0xff, 0xff, 0xff, 0xfe, 0x7e,
-0xbf, 0xbf, 0xeb, 0xfa, 0xff, 0xbf, 0xa7, 0xbf,
-0xfb, 0xff, 0xbf, 0xe9, 0xfe, 0xfe, 0xbf, 0xbf,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0x7f, 0xdf, 0xff, 0xfd,
-0xff, 0x7f, 0xff, 0xe7, 0xff, 0x7f, 0xff, 0xff,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xe6, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xf9, 0xff, 0x7f, 0xff, 0xbf, 0xef, 0xff,
-0x7e, 0xdb, 0xfd, 0xfd, 0xfe, 0xdf, 0xb7, 0xff,
-0x7f, 0xdf, 0xb7, 0xf7, 0xfd, 0xff, 0x7f, 0xdf,
-0xfd, 0xfd, 0xff, 0xff, 0xfd, 0x9f, 0xf7, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, 0xf7, 0xfd,
-0xbf, 0xee, 0xdf, 0xf6, 0xfd, 0xad, 0xff, 0xff,
-0xfd, 0xaf, 0x27, 0xde, 0xf2, 0xff, 0xff, 0xab,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff,
-0xf6, 0xbf, 0xa7, 0xe9, 0xfa, 0xde, 0xbb, 0xaf,
-0xea, 0xb8, 0xfc, 0x33, 0xaf, 0xe9, 0xfa, 0xf7,
-0xaf, 0xe3, 0xba, 0xf6, 0xbb, 0xa7, 0x69, 0xfa,
-0x7e, 0xbf, 0xaf, 0xeb, 0xfa, 0xfe, 0xbb, 0xf3,
-0x7f, 0xdf, 0xff, 0xcd, 0xff, 0xff, 0xdf, 0x17,
-0xcd, 0xae, 0xf6, 0xbd, 0xef, 0xf5, 0xc3, 0x73,
-0xef, 0xff, 0xfe, 0xe4, 0x7f, 0x3f, 0xc7, 0xff,
-0x6f, 0xdf, 0xfd, 0xff, 0xb3, 0xff, 0xff, 0xff,
-0xee, 0xa7, 0xff, 0xff, 0xdf, 0xef, 0xff, 0xef,
-0xbe, 0x93, 0xdf, 0xfd, 0x7f, 0x7b, 0xff, 0xff,
-0xe7, 0xef, 0xff, 0x5f, 0xf7, 0xfd, 0xff, 0xdf,
-0xff, 0xe7, 0xfb, 0xff, 0x7f, 0xff, 0xff, 0xfd,
-0xf7, 0xff, 0x95, 0xef, 0xff, 0xfc, 0xff, 0xff,
-0xff, 0xed, 0xaf, 0xcd, 0xf2, 0xff, 0xbf, 0x3f,
-0xfe, 0x3f, 0xff, 0xe7, 0xbb, 0xfb, 0xcf, 0xb3,
-0xe8, 0xf6, 0xff, 0xfd, 0x7f, 0xff, 0xff, 0x3f,
-0xff, 0xff, 0xff, 0xe9, 0xbf, 0xfa, 0xbf, 0xff,
-0xff, 0xff, 0x7e, 0x9a, 0xb7, 0xc9, 0xf9, 0xfd,
-0x9f, 0x6f, 0x79, 0xce, 0xdf, 0xff, 0xaa, 0xff,
-0xfe, 0x9f, 0x8f, 0xf9, 0xef, 0x7b, 0xdf, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0xd5,
-0xff, 0xff, 0xff, 0xff, 0xe7, 0xfd, 0xef, 0xbb,
-0xfd, 0xdf, 0xbb, 0xff, 0xff, 0xfd, 0xff, 0xad,
-0x7f, 0xfc, 0x57, 0xbf, 0xf6, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff,
-0xfe, 0xfd, 0xff, 0xf7, 0xff, 0xbf, 0xff, 0xff,
-0xae, 0xff, 0xff, 0xef, 0x3d, 0xab, 0xee, 0xdb,
-0xfb, 0xff, 0x73, 0xfc, 0xfe, 0xff, 0xcf, 0xff,
-0xf7, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xff, 0xff,
-0x1f, 0xff, 0x37, 0xfb, 0xef, 0xf7, 0xbf, 0xef,
-0xfb, 0xf4, 0xed, 0x7f, 0xff, 0x7b, 0xf3, 0xdf,
-0xff, 0x59, 0xff, 0xff, 0xfa, 0xeb, 0xdb, 0xf5,
-0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x9a, 0x7f, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xdf, 0xff, 0xd7, 0xff, 0x7f, 0xff, 0xfe,
-0xff, 0xff, 0xab, 0xff, 0xed, 0xff, 0xdf, 0xfe,
-0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xfe, 0xff,
-0xff, 0xff, 0xd0, 0x7f, 0xfd, 0xff, 0xff, 0x7b,
-0xfe, 0xff, 0xff, 0x37, 0x7d, 0xf3, 0xfc, 0xfb,
-0xac, 0x87, 0xd1, 0xd9, 0xfe, 0xa9, 0x6f, 0xbf,
-0xf7, 0xff, 0x4d, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xaf, 0xff, 0xbf, 0xff,
-0xdf, 0xff, 0xff, 0xfe, 0xe7, 0xff, 0xfe, 0xbe,
-0xb6, 0xbb, 0xde, 0xa9, 0x7d, 0xbe, 0xff, 0x7f,
-0xf7, 0xff, 0xff, 0xc1, 0xbd, 0xfe, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0xff, 0xbf,
-0xff, 0xff, 0xfb, 0x7f, 0xff, 0xaf, 0x7b, 0xf7,
-0xd7, 0x75, 0xff, 0xf7, 0xfb, 0xff, 0x6f, 0xfe,
-0xfe, 0xd5, 0x7d, 0xef, 0xef, 0xff, 0xd7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x9d,
-0xfb, 0xf7, 0xfd, 0xfe, 0xff, 0x7b, 0xef, 0x4f,
-0xff, 0xbf, 0xff, 0xbf, 0xfb, 0xfb, 0xbe, 0xdf,
-0xef, 0xff, 0xfe, 0x7f, 0x75, 0xef, 0xfb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0x56, 0xfb, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
-0xfd, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xff,
-0xdf, 0xed, 0xff, 0xff, 0xbf, 0xff, 0xfd, 0xbe,
-0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfa, 0x1f, 0xff, 0x35, 0xcf, 0xf1, 0x2f,
-0x7f, 0x33, 0xcf, 0xf7, 0x5c, 0x53, 0x5e, 0xd7,
-0xb1, 0xec, 0xcf, 0xff, 0xf3, 0x5f, 0xff, 0x3f,
-0xcf, 0xf1, 0xef, 0xff, 0xe7, 0xc7, 0xff, 0xff,
-0xff, 0xff, 0xf1, 0xda, 0xff, 0xe8, 0xff, 0x33,
-0xff, 0xf9, 0xf4, 0xff, 0xaf, 0xe7, 0xaa, 0x7c,
-0xdf, 0x97, 0xbf, 0xfa, 0xcf, 0xaf, 0x65, 0xef,
-0xeb, 0xfc, 0x97, 0xbd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf5, 0xe3, 0x5f, 0xff, 0xff,
-0xbf, 0xad, 0x77, 0x4b, 0xd2, 0x3f, 0x9f, 0xf7,
-0xed, 0xd2, 0x7e, 0x8f, 0xbb, 0x5a, 0x7e, 0xbf,
-0xff, 0xfb, 0xfe, 0xfe, 0xef, 0xbf, 0xff, 0xff,
-0xbf, 0xff, 0xff, 0xff, 0xfe, 0xfa, 0x6f, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0x7d, 0x7b, 0x16, 0x4b,
-0xfb, 0xfc, 0xb9, 0x37, 0xcd, 0xff, 0xe7, 0x17,
-0xc7, 0xb7, 0xe5, 0xff, 0x7f, 0xd7, 0xf7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x83,
-0xfb, 0x2f, 0xff, 0xfe, 0xfc, 0x97, 0x7f, 0xbd,
-0xfb, 0x6c, 0x8f, 0xb7, 0xe9, 0xf2, 0x7c, 0xfb,
-0x69, 0xff, 0x7b, 0xff, 0x3e, 0xcf, 0xb3, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xd1, 0xbf, 0xf5, 0x7f, 0xff, 0x77, 0x1b, 0x8f,
-0x7f, 0xdf, 0x77, 0xd5, 0xf7, 0x7d, 0x58, 0x55,
-0x3d, 0xfd, 0xd6, 0xf7, 0xdd, 0x87, 0x69, 0xdf,
-0xd7, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xdf, 0x37, 0xfe, 0xbf, 0xff, 0x7b, 0x8f,
-0xfe, 0xbf, 0xaf, 0xeb, 0x52, 0xf4, 0xff, 0xaf,
-0x6b, 0x9b, 0xff, 0x2f, 0xeb, 0xda, 0xfe, 0xbf,
-0xaf, 0x4f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xde, 0x97, 0xff, 0xd7, 0xff, 0xe5,
-0xfa, 0xf7, 0xd7, 0xf4, 0xcd, 0xba, 0x4e, 0x9b,
-0xb4, 0xc5, 0x33, 0xff, 0xf4, 0xfd, 0x3d, 0x5f,
-0xdf, 0xf7, 0xcf, 0x7f, 0x7e, 0xbf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf6, 0x7f, 0xff, 0xff,
-0xfe, 0xff, 0xfd, 0x3f, 0xff, 0xd9, 0xf6, 0xdd,
-0xff, 0x7b, 0xdb, 0xf7, 0xff, 0xb7, 0xdf, 0xf7,
-0xff, 0xff, 0xff, 0xf9, 0xfe, 0xdf, 0xb7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdf, 0xfb,
-0xff, 0xff, 0xff, 0xef, 0xfa, 0xff, 0xff, 0xbf,
-0xef, 0xfb, 0xff, 0xff, 0xef, 0xef, 0xf9, 0xff,
-0xff, 0xe7, 0xfb, 0xfe, 0xff, 0xff, 0xef, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x91,
-0x7f, 0xbb, 0xfe, 0xff, 0xbe, 0x66, 0xfb, 0xfe,
-0x6d, 0x9e, 0xe7, 0x99, 0xf6, 0x7f, 0x9b, 0xed,
-0xd6, 0x7d, 0x9f, 0x6f, 0xbb, 0xb6, 0xfd, 0xbe,
-0xee, 0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xff,
-0xed, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xff, 0x3f, 0xff, 0xdb, 0xfc, 0xff, 0xff,
-0xff, 0xf7, 0xff, 0x7f, 0x6f, 0xfb, 0xf7, 0xfd,
-0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xf7, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xbf, 0xff, 0xfb, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xff, 0xef, 0xfd, 0xff,
-0xff, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xd1, 0xff, 0xff, 0xff, 0xfe,
-0x5f, 0xf1, 0xff, 0xed, 0x1b, 0x47, 0xd3, 0xfc,
-0x7d, 0x1b, 0x46, 0xdf, 0xff, 0x1f, 0x47, 0xd7,
-0xfd, 0xfd, 0x7f, 0xdf, 0x9f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xe9, 0x3f, 0xff, 0xff,
-0xff, 0x49, 0xfb, 0xbf, 0xff, 0xaf, 0xeb, 0xfa,
-0xfe, 0xbf, 0x2f, 0xcb, 0xfb, 0x7f, 0x2f, 0xeb,
-0xfa, 0x7e, 0x9f, 0x27, 0xe9, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0xff,
-0xff, 0x7f, 0xdf, 0xff, 0xff, 0xff, 0xfc, 0xdf,
-0x3f, 0xdf, 0xf3, 0xf4, 0xfd, 0x3f, 0xfd, 0xfd,
-0xff, 0x7f, 0xde, 0xf7, 0xfd, 0xdf, 0xf6, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
-0xff, 0xbf, 0xf9, 0xfe, 0x7f, 0x9d, 0xe7, 0xf9,
-0xbe, 0x3f, 0x9b, 0xe2, 0xf8, 0xbe, 0x2f, 0x9f,
-0xe6, 0x9c, 0x37, 0x9f, 0xe3, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9,
-0xfd, 0x5f, 0xff, 0xff, 0xf9, 0xf4, 0x7f, 0x7f,
-0xff, 0xf1, 0xf4, 0xfd, 0x7f, 0xcf, 0xf7, 0xfc,
-0x7f, 0xbf, 0xf7, 0xac, 0x7f, 0x7f, 0xcf, 0xf1,
-0xfe, 0xfd, 0x9f, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xa3, 0xfd, 0xff, 0xff, 0xfe, 0xbf,
-0xbf, 0xff, 0xfe, 0xfe, 0xbf, 0xaf, 0xef, 0xfb,
-0xff, 0xbf, 0xf7, 0xfb, 0xfe, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf7, 0x3f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xdf, 0xfb, 0xff, 0xff,
-0x3f, 0xff, 0xff, 0xff, 0xfe, 0xdf, 0xf7, 0xfd,
-0xff, 0xbf, 0xdf, 0xff, 0xff, 0xff, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0xae, 0xff, 0xff,
-0xfd, 0xff, 0x7f, 0xf7, 0xf7, 0xf9, 0xff, 0x7f,
-0xdf, 0xb7, 0xfd, 0xff, 0x7f, 0xdf, 0xef, 0xfb,
-0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0xff,
-0xdf, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0xff, 0xf4, 0x7d, 0xbb, 0x7f, 0xcb, 0xfd,
-0xff, 0xfe, 0xcb, 0xfe, 0xbd, 0xbf, 0x6f, 0xd3,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2,
-0xbf, 0xff, 0xeb, 0xfa, 0xfe, 0xaf, 0xad, 0xe9,
-0xf2, 0xfe, 0xbf, 0xa6, 0xe8, 0xba, 0x76, 0x9d,
-0xaf, 0x7a, 0xbe, 0xbb, 0xa3, 0xeb, 0xda, 0xce,
-0xbb, 0xad, 0xe2, 0xfa, 0xfe, 0xb7, 0xaf, 0xeb,
-0xff, 0xc7, 0xff, 0xff, 0xff, 0x5f, 0xfb, 0xdd,
-0xf1, 0x7c, 0xda, 0x37, 0xcd, 0xb3, 0xf4, 0x37,
-0x37, 0xfc, 0xb8, 0xdf, 0x13, 0xf5, 0xd3, 0x84,
-0x7d, 0xd7, 0xfc, 0xf5, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x74, 0x7f, 0xff, 0xf7, 0xfa, 0xff,
-0x7f, 0xff, 0x67, 0xf9, 0xdf, 0x77, 0xdf, 0xdf,
-0xfd, 0xfc, 0xdf, 0xbf, 0xf3, 0xcb, 0x7f, 0xbf,
-0xff, 0x5f, 0xfb, 0xdf, 0x7e, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xf8, 0x97, 0xff, 0xfb, 0xff,
-0x6f, 0x7e, 0xfa, 0x5f, 0x94, 0xbb, 0xfe, 0xff,
-0x3f, 0x97, 0xe5, 0xff, 0xef, 0x57, 0xff, 0xbf,
-0xf7, 0x4b, 0xef, 0xef, 0xfb, 0xfe, 0xfb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0x99, 0xfd, 0xfd,
-0xff, 0xb7, 0xfe, 0xfd, 0xfe, 0xfa, 0x7e, 0xbd,
-0x27, 0x6b, 0xb9, 0xf6, 0xff, 0x67, 0xf3, 0xfe,
-0x1f, 0x8f, 0xfb, 0xdb, 0xff, 0xbd, 0xfb, 0xff,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x7f,
-0xff, 0xee, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x9e,
-0xfb, 0xf9, 0xfe, 0x7d, 0xff, 0xf7, 0xfb, 0xf5,
-0xee, 0xfd, 0xfb, 0xf5, 0xff, 0xef, 0x7f, 0xff,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xa7, 0xff, 0xfe, 0xfd, 0x77, 0xff, 0xbf, 0xee,
-0xfd, 0xeb, 0xef, 0x3a, 0xf7, 0xff, 0xff, 0x5f,
-0xff, 0xb3, 0xf8, 0xf7, 0x3b, 0xef, 0xfb, 0xf3,
-0xed, 0x3b, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0x89, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde,
-0xf6, 0xfd, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xcf,
-0x7f, 0xdf, 0xe5, 0xff, 0x7e, 0xdb, 0x7a, 0xfe,
-0xaf, 0xef, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x3f, 0xff, 0xfb, 0xff, 0xbf,
-0xfb, 0x7e, 0xd7, 0xed, 0xfe, 0xfe, 0x9f, 0xff,
-0x3f, 0xef, 0xdb, 0xff, 0xef, 0xda, 0xee, 0xe7,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xa7, 0xfd, 0xcf, 0xf3,
-0xde, 0xff, 0xad, 0xcf, 0xef, 0xfb, 0xfe, 0xfd,
-0x2d, 0xff, 0xff, 0xff, 0xfb, 0xbf, 0xbf, 0xf7,
-0x33, 0xff, 0xef, 0xff, 0xbc, 0x1f, 0xbf, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xef, 0xfe,
-0xff, 0x7e, 0xf7, 0xd7, 0xdb, 0x7f, 0xeb, 0xfb,
-0xfe, 0xff, 0x7f, 0xf7, 0xff, 0xfe, 0x79, 0xeb,
-0xff, 0x9b, 0x67, 0xb7, 0xff, 0xff, 0xfa, 0xdf,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x9d,
-0xef, 0xbf, 0xef, 0x5f, 0xdf, 0x77, 0x5f, 0xbd,
-0xfd, 0xdb, 0xff, 0x5a, 0xf7, 0xad, 0x8b, 0x3a,
-0xf7, 0xbf, 0xde, 0x7f, 0xfd, 0xb3, 0xac, 0xd9,
-0x7f, 0xff, 0xbf, 0xdf, 0xfd, 0x7f, 0xff, 0xff,
-0x19, 0xff, 0xff, 0x7f, 0xdf, 0xf7, 0xdf, 0xff,
-0xbf, 0xdf, 0xb5, 0xed, 0x79, 0xee, 0xd7, 0x37,
-0xce, 0xfe, 0xf3, 0xbf, 0xef, 0xbb, 0x7e, 0xdb,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xff,
-0xff, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xef, 0xff, 0xff, 0xcf, 0xfb, 0x7f, 0x7f, 0x3f,
-0xb7, 0xfd, 0xff, 0x5f, 0xf7, 0xf5, 0xff, 0x7f,
-0x5f, 0xdf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0x63, 0xff, 0xf1, 0xfc, 0xcb,
-0x3f, 0xdd, 0x72, 0x7d, 0xcf, 0x1f, 0xdf, 0xb3,
-0x3f, 0x7f, 0xff, 0xfd, 0x7f, 0xff, 0xe7, 0xf9,
-0xff, 0xff, 0x9f, 0x3f, 0xff, 0xf3, 0xff, 0xcf,
-0x3f, 0xff, 0xff, 0xff, 0x35, 0xaf, 0xff, 0x7c,
-0xb9, 0x6f, 0xff, 0x3e, 0xff, 0xfa, 0xfb, 0xff,
-0xa7, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xff, 0xfc,
-0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xf3, 0xff, 0xff, 0xff, 0xff, 0x5c, 0xbd, 0xff,
-0xff, 0xef, 0xef, 0xd6, 0xff, 0xff, 0xbf, 0x4e,
-0xcb, 0xfe, 0xe9, 0xd6, 0x75, 0x9d, 0x73, 0xd7,
-0x55, 0xd5, 0x75, 0x5d, 0x57, 0xfe, 0xfe, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xa6,
-0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0x97,
-0xed, 0xf9, 0x7f, 0xdf, 0x9f, 0x4f, 0xb3, 0xfc,
-0xfe, 0xff, 0xf9, 0xef, 0xff, 0x9f, 0xff, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x6a, 0xff, 0xff, 0xff, 0xbf, 0x3f, 0xf9, 0xfa,
-0xfe, 0x9e, 0xee, 0xdb, 0xd3, 0xff, 0xf7, 0xfc,
-0xde, 0xb7, 0xf5, 0x78, 0xdf, 0x57, 0x9d, 0xe5,
-0x7f, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x1b, 0xff, 0xff, 0xdd, 0xc7, 0x7f,
-0x3f, 0x57, 0xd3, 0xf7, 0x79, 0xde, 0x77, 0xfe,
-0x6f, 0xbf, 0xff, 0xfe, 0xff, 0x9b, 0xef, 0xfb,
-0x7e, 0xef, 0xfd, 0x36, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfd, 0xd9, 0xff, 0xff, 0xfe, 0xda,
-0xf7, 0xed, 0x6b, 0x7a, 0xe6, 0xbe, 0xae, 0x2f,
-0xfd, 0xff, 0x77, 0xdf, 0x5d, 0xdf, 0x7f, 0xdf,
-0xf7, 0x7d, 0xfb, 0xff, 0xaf, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xe5, 0x7f, 0xff, 0xff,
-0x7f, 0xdf, 0xff, 0xc5, 0x7f, 0x5e, 0xdf, 0xf7,
-0xcd, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xfe, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xef, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xff, 0xef, 0xdb, 0xff, 0xfd, 0xa7,
-0xe7, 0xff, 0xfe, 0xdb, 0xbe, 0xe7, 0xbb, 0xfb,
-0xbe, 0xef, 0xbb, 0xee, 0xfb, 0xff, 0xe7, 0xde,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0x3d, 0xaf, 0xff,
-0xfb, 0xff, 0xff, 0xbf, 0xff, 0xfa, 0xfe, 0xfd,
-0xef, 0xfe, 0xfe, 0xbf, 0x8f, 0xe3, 0xfb, 0xfe,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xee, 0x9f, 0xff, 0xbf, 0xef, 0xfb, 0xfe, 0x39,
-0xbf, 0x67, 0x9b, 0xf6, 0xf9, 0xb5, 0x6f, 0x1b,
-0xbe, 0xfd, 0xef, 0xdb, 0xe6, 0xfd, 0xbf, 0x6f,
-0x1b, 0xfe, 0x7d, 0xbf, 0xef, 0xfb, 0xfe, 0xff,
-0xbf, 0xfe, 0x16, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0x3f, 0xdf, 0xdb, 0xfc, 0xfd, 0xbf, 0xef,
-0xfb, 0xfe, 0xfd, 0xff, 0xf3, 0xfc, 0xfd, 0xbf,
-0xcf, 0xfb, 0xfe, 0xff, 0x3f, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x74, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xbf, 0xef,
-0xf7, 0xbd, 0xee, 0xfb, 0xff, 0xbb, 0xee, 0xfb,
-0xbe, 0xfb, 0xbb, 0xfe, 0xff, 0xbf, 0xfb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff,
-0xff, 0xf5, 0xff, 0x3f, 0xff, 0xfb, 0xf5, 0xff,
-0x7f, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xf5, 0xff, 0x9f, 0xdf,
-0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xbb, 0xff,
-0xff, 0xff, 0xfe, 0x9d, 0xeb, 0xfd, 0xd7, 0x7e,
-0x9f, 0xa7, 0xe9, 0xff, 0xbf, 0xed, 0xfa, 0xff,
-0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xbc, 0x9f, 0xf7,
-0xed, 0xfb, 0x7f, 0xff, 0xe7, 0xff, 0xff, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
-0xfd, 0xf7, 0xad, 0xff, 0x7b, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xf7,
-0xff, 0x7b, 0x7f, 0xdf, 0xff, 0x6d, 0xff, 0xff,
-0xfe, 0xcf, 0xf7, 0xff, 0x9f, 0xe7, 0xf9, 0xfe,
-0x7f, 0x9f, 0xe7, 0xe9, 0xba, 0x7f, 0x9f, 0xe7,
-0xf9, 0xfe, 0x7f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f,
-0xe7, 0xf9, 0xfe, 0x3f, 0x8f, 0xe7, 0xf9, 0xbc,
-0x7f, 0x9f, 0x99, 0xff, 0xfe, 0xff, 0xff, 0x5f,
-0xf7, 0xff, 0xff, 0xff, 0xcd, 0xf3, 0x7c, 0xff,
-0xff, 0xef, 0xfb, 0xff, 0x9f, 0xef, 0xfb, 0xff,
-0xff, 0xbf, 0xdf, 0xdb, 0xfd, 0xff, 0x7f, 0xff,
-0xf7, 0xef, 0xff, 0xfd, 0x3f, 0xdf, 0xdf, 0xff,
-0xeb, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xeb, 0xfb,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0x7e, 0xff, 0xbf,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0x27, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0x3f,
-0xef, 0xf7, 0xff, 0xff, 0xbf, 0xef, 0xef, 0xff,
-0xbf, 0xff, 0xff, 0xfe, 0xff, 0x7f, 0x7f, 0xf7,
-0xfd, 0xff, 0xff, 0xde, 0xff, 0xff, 0xd2, 0xff,
-0xff, 0x7f, 0xff, 0xf7, 0xff, 0x7e, 0x7f, 0x9f,
-0xf6, 0xfd, 0xff, 0x7f, 0xf7, 0xfd, 0xff, 0x7f,
-0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xff, 0xfd,
-0xfb, 0xfe, 0xff, 0xff, 0xfb, 0xdf, 0xff, 0xff,
-0xdb, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff,
-0xdf, 0xf2, 0xfd, 0xff, 0x6f, 0xd3, 0xf4, 0x75,
-0x3f, 0xd1, 0xf4, 0xfd, 0x3f, 0x4f, 0xd3, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xe7, 0xff, 0xff,
-0xff, 0xd2, 0xff, 0xbe, 0xaf, 0xad, 0xea, 0xd8,
-0x7e, 0xbd, 0x8e, 0xe9, 0xba, 0x56, 0x9b, 0x86,
-0xe1, 0xba, 0x33, 0x8e, 0xc0, 0xb8, 0x2c, 0xbb,
-0x0b, 0xe3, 0xfa, 0xbe, 0xbf, 0xaf, 0xeb, 0xfa,
-0xfe, 0xbf, 0xf6, 0x7f, 0xff, 0x1f, 0xfd, 0xef,
-0x7c, 0xfb, 0xfa, 0xff, 0xf7, 0xec, 0xdd, 0xfe,
-0xcf, 0xb1, 0xed, 0xdf, 0xf3, 0xb6, 0xff, 0xbf,
-0xd6, 0xc3, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xfe, 0x25, 0xff, 0xcf, 0xdf,
-0xff, 0x7c, 0xfd, 0xff, 0x7f, 0xf7, 0xf6, 0xfb,
-0xfa, 0x77, 0x54, 0xff, 0xff, 0x7f, 0x7f, 0xf7,
-0xdf, 0x7f, 0xd3, 0xff, 0xfb, 0xff, 0x3f, 0xfe,
-0xff, 0xff, 0xef, 0x7f, 0xff, 0xbd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf7, 0xff, 0x3b, 0xff, 0xbf,
-0xec, 0xff, 0xfa, 0xff, 0xfb, 0xef, 0xf7, 0xff,
-0xbb, 0xbf, 0xff, 0xd7, 0xee, 0xfd, 0xff, 0xfd,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xdf, 0x3f,
-0xff, 0xfb, 0xff, 0x7f, 0xef, 0x7c, 0x8f, 0xa7,
-0x3b, 0x5a, 0x7e, 0x37, 0x8f, 0xc3, 0xf1, 0x77,
-0x1f, 0xdf, 0xff, 0xf3, 0xff, 0xbf, 0xfb, 0xcf,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff,
-0x15, 0xff, 0xff, 0xdf, 0xfb, 0xfa, 0xfd, 0xf7,
-0x9e, 0xfe, 0xfe, 0xdd, 0xef, 0xdf, 0xff, 0xff,
-0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xee, 0xf6,
-0xf7, 0xff, 0xff, 0xff, 0xd7, 0xdf, 0xff, 0xff,
-0xef, 0x64, 0xff, 0xbf, 0xef, 0xfb, 0xfb, 0xf3,
-0xf3, 0xfc, 0xf7, 0xee, 0xef, 0xff, 0x7e, 0xfe,
-0xb5, 0xfd, 0x6b, 0xfd, 0xff, 0x7d, 0xe7, 0xf7,
-0xff, 0xcf, 0xff, 0xbf, 0xdf, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xbf,
-0xed, 0x7f, 0xef, 0xff, 0xf2, 0x7d, 0x6b, 0x7f,
-0xd3, 0xb7, 0xfd, 0x7f, 0x5b, 0xf5, 0x3d, 0xff,
-0x4b, 0xdb, 0xf5, 0xf7, 0xb7, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xff, 0xff, 0x93, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xdf, 0x7f, 0xcf, 0xaf, 0xfd,
-0xfb, 0x2f, 0xef, 0xb7, 0xfd, 0x6e, 0xd7, 0xfd,
-0xef, 0xff, 0xfb, 0xbf, 0xff, 0x7f, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xf1, 0x7f, 0xdf,
-0xff, 0xfd, 0xbd, 0x6b, 0xff, 0xff, 0xfe, 0xaf,
-0xe7, 0xfc, 0xf6, 0x3b, 0x9f, 0x33, 0xf8, 0x3f,
-0xcf, 0xf3, 0xb4, 0xef, 0xbd, 0x7f, 0xff, 0x77,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xaf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb, 0xff,
-0xfe, 0xee, 0xff, 0xf7, 0x4d, 0x7b, 0xff, 0xdf,
-0x9d, 0xf7, 0x7f, 0xd6, 0x77, 0xfb, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe,
-0xd1, 0xff, 0xfe, 0xaf, 0xbf, 0xfd, 0xb7, 0xff,
-0xdf, 0x3e, 0x5e, 0x97, 0x79, 0xff, 0xfe, 0xdf,
-0xa3, 0x1e, 0x7b, 0x9c, 0xa3, 0x78, 0xdb, 0xa7,
-0xd9, 0xff, 0x7f, 0xdb, 0xf7, 0xff, 0xff, 0xff,
-0xf7, 0xbe, 0x9f, 0xff, 0xef, 0xfd, 0xf8, 0xff,
-0xf9, 0xff, 0xef, 0xf9, 0x7e, 0xdd, 0xd7, 0xaf,
-0x3f, 0x6f, 0xdf, 0xfd, 0xb3, 0x7c, 0xff, 0x3f,
-0xf9, 0xda, 0x7f, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xff, 0xfe, 0x87, 0xef, 0xff, 0xff, 0xff,
-0x7f, 0x7f, 0xfd, 0xf3, 0xff, 0x5f, 0xbf, 0x9f,
-0xff, 0xfd, 0xff, 0x7f, 0xf7, 0xff, 0x5e, 0xdf,
-0xf7, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0xbe, 0xe4, 0xbf, 0xff, 0x35,
-0xc9, 0xf5, 0xfd, 0x1f, 0x35, 0xcf, 0xf3, 0xfd,
-0xff, 0xff, 0xfd, 0x7f, 0xff, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0x1f,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0a, 0xff,
-0xf7, 0xff, 0x3f, 0xfe, 0xf9, 0xfe, 0xac, 0xfe,
-0xfd, 0xff, 0xff, 0xff, 0xaf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0xf7, 0xff, 0xff,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xcb,
-0xdf, 0x4b, 0xd2, 0xa6, 0xbc, 0xff, 0x3e, 0xd7,
-0xfe, 0xff, 0xfe, 0x77, 0x9d, 0x73, 0x5f, 0xde,
-0x7d, 0xf5, 0x7d, 0x5f, 0x57, 0xce, 0xf5, 0xff,
-0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xf9, 0x6f, 0xfd, 0x79, 0x5e, 0x57, 0x9f, 0xcf,
-0xf9, 0xff, 0xdf, 0x37, 0xcf, 0xf3, 0xfe, 0x7b,
-0x9f, 0xcf, 0xfe, 0x7f, 0x9f, 0xcf, 0xfb, 0x3e,
-0x5f, 0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x9f, 0xef, 0xfd, 0xfe, 0xed, 0xff, 0xfe, 0xde,
-0x7f, 0xcd, 0xfb, 0x7f, 0xd7, 0xdf, 0xfd, 0x7d,
-0xad, 0xb7, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xc5, 0xbf, 0xff, 0x7f, 0xdf,
-0xf7, 0xfb, 0xfd, 0x7f, 0xba, 0x77, 0x9d, 0xaf,
-0xff, 0xee, 0xfb, 0xff, 0xff, 0xfe, 0xfb, 0xbf,
-0xef, 0xa9, 0xde, 0x76, 0x3d, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xdb, 0x9f, 0xfe, 0xbd,
-0xaf, 0xeb, 0xfb, 0xf5, 0xff, 0xff, 0x4b, 0x8a,
-0xf7, 0x7d, 0xdd, 0x17, 0xfd, 0xff, 0xdf, 0xb7,
-0xed, 0xe3, 0x7d, 0x2f, 0x2b, 0x9a, 0xe7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x47, 0xff,
-0xd7, 0x85, 0xfd, 0x73, 0xfe, 0xbf, 0xff, 0xed,
-0xfb, 0x5c, 0x7f, 0x9f, 0xeb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfc, 0xff, 0xa6, 0xe5, 0x7a, 0x5c,
-0xff, 0xff, 0xeb, 0xff, 0xff, 0xff, 0xff, 0x6c,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xb7, 0xff,
-0xde, 0xff, 0xbf, 0x9e, 0xeb, 0xbb, 0xee, 0x7b,
-0xbf, 0xbb, 0xee, 0xfb, 0xbe, 0xef, 0xda, 0x7e,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xec, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xf9, 0xf7, 0xbf, 0xaf,
-0xef, 0xde, 0xfd, 0xef, 0xeb, 0xd8, 0xfe, 0x3f,
-0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xc9, 0xff, 0x5b, 0xfe, 0xdf, 0xbf,
-0xe6, 0xdb, 0xf6, 0x75, 0xbd, 0x6f, 0x5b, 0xd6,
-0xf1, 0xbb, 0xef, 0xde, 0xfd, 0xbe, 0x6f, 0xdb,
-0xd6, 0x7f, 0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xbf,
-0xef, 0xfb, 0xff, 0xea, 0x6f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf3, 0xfc, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xff, 0xbf, 0xef, 0xf3, 0xff, 0x3f, 0xcf,
-0xdb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0x8f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f, 0xef, 0xfb,
-0xfe, 0xef, 0x7b, 0xde, 0xfb, 0xbb, 0xfb, 0xbe,
-0xef, 0xbb, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0xff,
-0xfd, 0xfd, 0x7f, 0xdf, 0xf9, 0xbf, 0xfd, 0x9f,
-0xdf, 0xf7, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0x1b, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee,
-0x3f, 0xfe, 0xdf, 0xa7, 0xd9, 0xff, 0xf6, 0xdf,
-0xef, 0xe9, 0xf2, 0x7f, 0xeb, 0xfb, 0xfe, 0xff,
-0xa7, 0xfa, 0x7e, 0xff, 0xaf, 0xef, 0xaf, 0xe9,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe3, 0xff, 0xf7, 0xf5, 0xff, 0x7f, 0x6f,
-0xff, 0x77, 0xfb, 0x7f, 0xde, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xfb, 0xff, 0xff, 0xbd,
-0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfc, 0xff, 0xfb, 0xf8, 0xbe, 0x6f,
-0x8f, 0xe3, 0xf9, 0x9e, 0x3f, 0x1b, 0xc7, 0xf9,
-0xfe, 0x7f, 0x9f, 0xe7, 0xfe, 0x7f, 0x9f, 0xe7,
-0xf8, 0xfa, 0x6f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xff, 0xdf, 0xff, 0xc7, 0xff,
-0xfd, 0xff, 0xff, 0xef, 0xf1, 0xfc, 0x6b, 0x3e,
-0xe7, 0xfb, 0xfe, 0xff, 0xbf, 0xff, 0xfe, 0xfb,
-0x9f, 0xe7, 0xf7, 0x7c, 0x7f, 0x9f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xef,
-0xef, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xb7, 0xff, 0xff, 0x7f, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xfa, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x7f,
-0xff, 0x7f, 0xff, 0xf7, 0xf7, 0xff, 0xbf, 0xdf,
-0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfe, 0xfe,
-0xff, 0xfb, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x6f, 0xff, 0xb6, 0xff, 0xfe, 0x7e, 0xff, 0xf7,
-0xfd, 0xff, 0x7f, 0xdf, 0xfd, 0xff, 0x7f, 0xdf,
-0xf7, 0xff, 0x7f, 0xd7, 0xf7, 0xfd, 0xed, 0xbf,
-0x7f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xdd,
-0xf4, 0x7d, 0xff, 0xcf, 0xdb, 0xfe, 0xfc, 0xbf,
-0xcf, 0xf3, 0xfe, 0xbf, 0xaf, 0xeb, 0xbc, 0xfd,
-0x3f, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xaf, 0xff, 0xe9, 0xfa, 0xbe,
-0xaf, 0xa7, 0x6b, 0xb8, 0xfe, 0x9b, 0xa7, 0xe9,
-0xba, 0xfe, 0xbf, 0xab, 0x78, 0xfe, 0xaf, 0xa7,
-0xe8, 0xb8, 0xae, 0xbf, 0xad, 0xeb, 0xfa, 0xfe,
-0xbf, 0xaf, 0xeb, 0xfd, 0x27, 0xff, 0xf3, 0xff,
-0xf7, 0xf7, 0xbf, 0xf3, 0xed, 0xfb, 0xdf, 0x7f,
-0x9f, 0xff, 0xf7, 0xff, 0xe7, 0xff, 0xbb, 0x3f,
-0xfd, 0xff, 0x7e, 0xbd, 0xff, 0xf7, 0xfb, 0xff,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x7f, 0xee,
-0xfd, 0xff, 0x7e, 0xfe, 0xba, 0xef, 0xfd, 0xff,
-0x7d, 0x9f, 0xed, 0xf1, 0xfe, 0xef, 0x7d, 0xdf,
-0xff, 0xdf, 0x57, 0xfd, 0x7f, 0xfa, 0xdf, 0xfd,
-0xff, 0xff, 0xfd, 0xdf, 0xf7, 0xff, 0xfb, 0x57,
-0xff, 0x7f, 0xbb, 0xef, 0xfb, 0xfe, 0xfb, 0xf7,
-0xbe, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xbf, 0xba,
-0x7f, 0x64, 0xbf, 0xf5, 0xf7, 0xfe, 0xff, 0xbf,
-0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x93, 0xff, 0xff, 0xdb, 0xd7, 0xf5, 0xff, 0x6f,
-0xf2, 0xd2, 0x9c, 0xaf, 0xe9, 0xea, 0xfe, 0x9f,
-0xaf, 0xfa, 0xfe, 0x9e, 0xaf, 0x6b, 0xfe, 0xb6,
-0xbf, 0xfe, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xff,
-0xdf, 0xf7, 0x7f, 0xfb, 0xff, 0xef, 0x7f, 0xff,
-0xff, 0xbf, 0xde, 0xdb, 0x75, 0xae, 0xbf, 0xaf,
-0x6b, 0x9a, 0x6f, 0xae, 0xeb, 0xfa, 0xfe, 0xbe,
-0xff, 0xf7, 0xaf, 0xff, 0xff, 0xf7, 0x7f, 0xff,
-0xff, 0xff, 0xfe, 0xaf, 0xff, 0xfe, 0xff, 0x7e,
-0xff, 0xfb, 0x4f, 0xad, 0x7c, 0xff, 0xfb, 0xef,
-0xff, 0x9f, 0xef, 0xff, 0x9a, 0x3f, 0xf7, 0x3f,
-0xff, 0xe3, 0xfb, 0xef, 0xfb, 0xfe, 0xff, 0xbf,
-0xef, 0xff, 0xfb, 0xff, 0xc1, 0xff, 0xfe, 0xff,
-0xff, 0x2e, 0xdb, 0xf6, 0xfb, 0xfe, 0x5c, 0xd3,
-0xf5, 0xbf, 0xfb, 0x7f, 0xff, 0xf4, 0xfe, 0xfb,
-0xd6, 0xf7, 0x7d, 0x7f, 0xfe, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xdf, 0xfc, 0xb7, 0xff,
-0xf7, 0xf9, 0xef, 0x7b, 0xff, 0xb5, 0xfe, 0xdf,
-0xff, 0xed, 0xdf, 0xfc, 0xfb, 0xcf, 0xbe, 0xbd,
-0xff, 0xff, 0xff, 0xbd, 0xf9, 0x7f, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xf7, 0xff, 0x57,
-0xfd, 0xcf, 0xf3, 0x48, 0xf3, 0x2d, 0xcd, 0xf3,
-0xff, 0xbf, 0x4f, 0xcf, 0xef, 0xe8, 0xf7, 0xff,
-0x5b, 0xff, 0xbf, 0xaf, 0xef, 0x7a, 0xdf, 0xff,
-0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xe6, 0xef, 0x7d, 0xbf, 0x7f, 0xdf, 0x97, 0xe5,
-0xfd, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xdf,
-0xff, 0xdb, 0xbf, 0xfe, 0xfb, 0x8d, 0xf9, 0xbf,
-0xff, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x5f, 0xfe, 0xb7, 0xef, 0xe1, 0xd6,
-0xf3, 0xbe, 0xef, 0xbd, 0xbf, 0x2b, 0x9e, 0xb7,
-0xe8, 0xcb, 0x7f, 0xd7, 0xad, 0xeb, 0x6f, 0xfc,
-0xff, 0x25, 0xfe, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xfd, 0xff, 0xfb, 0xd9, 0xff, 0xfe, 0x77, 0xff,
-0xff, 0xff, 0xff, 0x67, 0x5b, 0x7e, 0xe7, 0xd7,
-0x3f, 0xfe, 0x37, 0xde, 0xff, 0xdf, 0xbf, 0xeb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xa2, 0x7f, 0xff, 0xd7,
-0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5,
-0xff, 0xff, 0x73, 0xbe, 0xbf, 0xff, 0xff, 0xcf,
-0xf3, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x41, 0xff,
-0xbf, 0x3f, 0xd7, 0xff, 0xfc, 0xf3, 0xff, 0xff,
-0x7e, 0xc9, 0xb3, 0xfc, 0xff, 0xf3, 0xcc, 0xfc,
-0x4f, 0x3f, 0xcd, 0x7f, 0x3c, 0xff, 0x27, 0xc7,
-0xff, 0x2c, 0x7f, 0xff, 0xff, 0xf1, 0xff, 0x65,
-0xaf, 0x97, 0xff, 0xfa, 0xff, 0xff, 0x97, 0x7f,
-0xff, 0xff, 0xc3, 0x37, 0x3e, 0xcf, 0xff, 0xff,
-0xff, 0xf3, 0xff, 0xf5, 0x9f, 0xe7, 0xda, 0x3f,
-0xff, 0xf3, 0x8d, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0x59, 0x35, 0xfe, 0xff, 0xff, 0x3f, 0xff, 0xf3,
-0xf9, 0xef, 0xff, 0x7a, 0xd2, 0xbd, 0x6f, 0x5f,
-0xcf, 0x9f, 0xe1, 0xfe, 0xff, 0xf2, 0xd9, 0xef,
-0xfe, 0x7f, 0xbf, 0xbf, 0xbb, 0xff, 0xff, 0xff,
-0xf9, 0xef, 0x36, 0xff, 0xdf, 0xff, 0xcf, 0xff,
-0xfe, 0xff, 0x3d, 0xed, 0xff, 0x5f, 0xc7, 0xbd,
-0xcd, 0xf9, 0xfe, 0xf3, 0xff, 0xff, 0xde, 0xdb,
-0xb3, 0xef, 0xff, 0xff, 0xdf, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0x9f, 0x7a, 0x3f, 0xfb, 0xdf, 0xf7,
-0xb6, 0xd9, 0x26, 0x7d, 0x9c, 0x7f, 0x5f, 0xf2,
-0x71, 0xfd, 0x75, 0xff, 0xee, 0xcf, 0xff, 0xff,
-0xea, 0x5a, 0xda, 0x6f, 0x5f, 0xfe, 0xfe, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf9, 0x5b, 0xfa, 0x77,
-0xff, 0xf6, 0xff, 0xbf, 0x4d, 0x3b, 0xff, 0x7d,
-0xd4, 0x75, 0xbd, 0x66, 0xdb, 0xdf, 0xdd, 0x6f,
-0xff, 0xda, 0x4f, 0xdd, 0xf7, 0x5b, 0xff, 0x77,
-0x9d, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xa3, 0x7f,
-0xef, 0xff, 0xff, 0xbf, 0xaf, 0x7f, 0xfe, 0xfe,
-0xf7, 0xff, 0xeb, 0xd7, 0xd5, 0xff, 0xaf, 0x7a,
-0xf7, 0xfd, 0x7d, 0xea, 0xfa, 0xfe, 0xf7, 0xff,
-0xfb, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee,
-0x7f, 0xfd, 0xdf, 0xf7, 0xdf, 0xf7, 0x77, 0xff,
-0xff, 0xdf, 0x37, 0xfd, 0x3a, 0xfe, 0x99, 0xf5,
-0xf6, 0x6e, 0x7f, 0xff, 0xfd, 0x7f, 0x6e, 0xf7,
-0xff, 0xfd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x07, 0xfb, 0x75, 0xfd, 0x7f, 0x7f, 0xd3,
-0xf6, 0x7d, 0xff, 0xed, 0xfb, 0xf7, 0xff, 0xb7,
-0x47, 0xfb, 0xdd, 0xaf, 0xe7, 0xfb, 0x74, 0x7d,
-0xa7, 0xff, 0xf9, 0xff, 0xff, 0xb7, 0xff, 0xff,
-0xff, 0xff, 0x9d, 0xbf, 0x9e, 0x7f, 0x9f, 0xf7,
-0xff, 0xaf, 0x7f, 0xdf, 0xfe, 0x7f, 0xef, 0xff,
-0xf9, 0xfe, 0x7f, 0xaf, 0xfa, 0xfe, 0x7f, 0xbf,
-0x67, 0xfb, 0xfe, 0xff, 0x9f, 0xff, 0xf9, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x1f, 0xff, 0x9f, 0xe7,
-0xf8, 0xfe, 0x6f, 0x8f, 0x63, 0xdb, 0xf6, 0xfd,
-0x9f, 0x6f, 0xd9, 0xd6, 0xe5, 0xe7, 0xbb, 0xfe,
-0xef, 0x9f, 0xe6, 0xdb, 0xee, 0xff, 0xbf, 0xef,
-0xfb, 0xfe, 0xff, 0xbf, 0xfa, 0xe7, 0xff, 0xfe,
-0xff, 0xbb, 0xef, 0xff, 0xfe, 0x6f, 0xb3, 0xfc,
-0xfd, 0xff, 0xcf, 0xdb, 0xfe, 0xff, 0xbf, 0xfb,
-0xff, 0xff, 0xfe, 0xff, 0xdb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0xff,
-0xff, 0xbf, 0xed, 0xff, 0xff, 0xff, 0xf7, 0xfd,
-0xff, 0xbf, 0xff, 0xfb, 0xfe, 0xfe, 0xff, 0xef,
-0xfb, 0xff, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0x5f, 0xff, 0xe7, 0xfb, 0xb6, 0x7f, 0x9f, 0x47,
-0xf3, 0xfd, 0xfd, 0x7f, 0x47, 0xd7, 0xfc, 0xff,
-0x7f, 0xb3, 0xfd, 0xfd, 0xfe, 0xe7, 0xd1, 0xfd,
-0xf9, 0x7e, 0x5f, 0xd7, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xb3, 0xfd, 0xfe, 0xff, 0xbf, 0xef, 0xfb,
-0xea, 0xdb, 0xbe, 0x9f, 0x37, 0xeb, 0xfb, 0x7e,
-0xaf, 0xa7, 0xda, 0xf6, 0x9f, 0xb7, 0x5c, 0xfa,
-0xfe, 0xdf, 0xa7, 0xe9, 0xfa, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xf2, 0x3f, 0xdf, 0xff, 0xff, 0xdf,
-0xff, 0x6f, 0xff, 0xdf, 0xff, 0xf7, 0xfd, 0x7b,
-0x7e, 0xf7, 0xbd, 0xfe, 0xdf, 0xf7, 0x6f, 0xff,
-0xb7, 0xd7, 0xff, 0xbf, 0xfd, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xaf, 0xff, 0xf7, 0x1f,
-0xa7, 0x79, 0xfe, 0x77, 0x8f, 0xe7, 0xf8, 0xfe,
-0x27, 0x0f, 0xe2, 0xf9, 0xbe, 0x6f, 0xe6, 0xe9,
-0xfe, 0x7f, 0x9b, 0xc7, 0xf1, 0xfe, 0x2f, 0x9f,
-0xa7, 0xf9, 0xfe, 0x7f, 0x9f, 0xf9, 0xfe, 0xfe,
-0xfb, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xd3, 0xfc, 0x79, 0x1f, 0xcf, 0xf1, 0xff, 0x3f,
-0xc5, 0xfb, 0xfe, 0xff, 0x7a, 0xde, 0x93, 0xff,
-0xfd, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf,
-0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfb, 0xff, 0xff, 0xbf, 0xeb, 0xfb, 0xff,
-0xa7, 0xeb, 0xef, 0x7f, 0xff, 0xef, 0xff, 0xfa,
-0x7f, 0xff, 0xae, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0x77, 0xff, 0xfb, 0xbf, 0xdd, 0xff, 0x4f, 0xff,
-0xff, 0xff, 0xff, 0x6f, 0xf7, 0xb7, 0xff, 0x3f,
-0xff, 0xed, 0xff, 0x7f, 0xff, 0xf3, 0xfd, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf2, 0xd7, 0xff, 0xdf, 0xf3, 0xfd, 0xe9,
-0x7f, 0xdf, 0xf7, 0xff, 0xed, 0xff, 0x7e, 0xdf,
-0xb5, 0xfd, 0xfe, 0xdf, 0xe6, 0xfd, 0xfb, 0xdf,
-0x9d, 0xff, 0x7d, 0xff, 0xff, 0xdb, 0xff, 0xff,
-0xff, 0xff, 0xfc, 0x4a, 0xff, 0x4f, 0xff, 0xbc,
-0xfd, 0x3f, 0xef, 0xd1, 0xfe, 0xfc, 0xbf, 0x7f,
-0xd3, 0xfc, 0xff, 0xff, 0xc8, 0xff, 0xff, 0x9f,
-0xcf, 0xdb, 0xff, 0xff, 0xdf, 0xff, 0xd1, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xab, 0xbf, 0xde, 0xbf,
-0xa5, 0xe9, 0xda, 0xfe, 0x8d, 0xab, 0xea, 0xfa,
-0xae, 0x8d, 0xa3, 0xe3, 0xfa, 0xf7, 0xaf, 0xe8,
-0xfa, 0xfc, 0x8d, 0xa7, 0xea, 0xfa, 0xfe, 0xad,
-0xaf, 0xeb, 0xfa, 0xde, 0xbf, 0xf0, 0x7f, 0xbe,
-0x3e, 0xcb, 0xff, 0xed, 0xbd, 0x3f, 0xce, 0xdf,
-0x78, 0xcf, 0x1f, 0xef, 0xfb, 0xff, 0xff, 0xbf,
-0xff, 0x74, 0xdf, 0x3f, 0x5f, 0xbf, 0xdf, 0xdb,
-0xff, 0xdf, 0xff, 0xff, 0xff, 0x3f, 0xff, 0x07,
-0xff, 0xde, 0xef, 0x7f, 0xc7, 0xff, 0x4e, 0xcb,
-0xbf, 0xec, 0xff, 0x4e, 0xd6, 0xbb, 0xf5, 0xdf,
-0x7f, 0xf7, 0x74, 0xad, 0xff, 0xdd, 0xff, 0xfd,
-0xff, 0xff, 0x7f, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xa5, 0xff, 0xfb, 0xea, 0xff, 0xff, 0xef, 0xbf,
-0xbf, 0xef, 0xfb, 0xef, 0xff, 0x3f, 0xee, 0xfa,
-0xbb, 0xe7, 0xef, 0xfd, 0xfe, 0xe3, 0xdb, 0x77,
-0xfd, 0xbf, 0x7f, 0xff, 0x7d, 0xf7, 0x7d, 0xd5,
-0x7f, 0xf8, 0x9f, 0xff, 0xfb, 0xff, 0xbe, 0xdb,
-0xff, 0xbf, 0xaf, 0xf9, 0xdf, 0x7e, 0x9d, 0xff,
-0xe7, 0xfa, 0xff, 0x77, 0x3f, 0xde, 0xde, 0x37,
-0xad, 0x67, 0xff, 0xfc, 0x7f, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x05, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xee, 0xdf, 0xfe, 0xdd, 0xff, 0xff, 0xb6,
-0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xfe, 0x7e,
-0xef, 0xd5, 0xff, 0xf9, 0xff, 0xfd, 0x7f, 0xf7,
-0xef, 0xff, 0x7f, 0xff, 0xd0, 0x7f, 0xff, 0xef,
-0xd7, 0xed, 0xf3, 0xff, 0xfe, 0xfd, 0xef, 0xfb,
-0xb0, 0xdf, 0x3b, 0xff, 0xef, 0xff, 0xff, 0x7e,
-0xff, 0xff, 0xef, 0xfa, 0xee, 0xfd, 0x7f, 0xff,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xdf, 0xff,
-0x7f, 0xff, 0xf3, 0xed, 0x7f, 0xff, 0xde, 0xe3,
-0xfc, 0xbf, 0xf7, 0xff, 0xff, 0xdd, 0x3f, 0x56,
-0xe5, 0xfd, 0xbf, 0x4f, 0xdb, 0xf2, 0xfd, 0xff,
-0x56, 0xdf, 0x7f, 0xff, 0xff, 0xfb, 0xff, 0x02,
-0xff, 0xfb, 0xff, 0xde, 0xff, 0xfe, 0x7f, 0xfb,
-0xf6, 0xe7, 0xeb, 0xdf, 0xdf, 0xdf, 0xfb, 0xfb,
-0xaf, 0xff, 0xff, 0xed, 0xfe, 0x1e, 0xea, 0xff,
-0x6f, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x74, 0x7f, 0x9f, 0xff, 0x5d, 0xff, 0x30, 0xfe,
-0xfe, 0xff, 0x8f, 0xe3, 0xee, 0xdd, 0xff, 0xce,
-0xfa, 0x75, 0x3f, 0x4f, 0xf3, 0x7c, 0xff, 0x3f,
-0xcf, 0xf3, 0xfc, 0xff, 0x3f, 0xff, 0xff, 0xff,
-0xf7, 0xf4, 0xef, 0xff, 0xff, 0xbf, 0xff, 0xf9,
-0xbf, 0x5f, 0x7f, 0xbd, 0xbf, 0x7f, 0xef, 0xbf,
-0xe3, 0x7f, 0xdd, 0xb7, 0xde, 0xff, 0xbf, 0xef,
-0xfb, 0xfe, 0xe7, 0xbf, 0xef, 0xfa, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xd5, 0xff, 0xed, 0xbf, 0xb2,
-0xed, 0xff, 0xbf, 0xd3, 0x7b, 0x1c, 0xa7, 0x7f,
-0xdd, 0x77, 0xdf, 0xbf, 0xfe, 0x67, 0x9f, 0xa7,
-0xe9, 0xfa, 0x6a, 0x8f, 0xe7, 0x39, 0xfa, 0x7f,
-0xff, 0xff, 0xff, 0xf7, 0xb8, 0x1f, 0xff, 0x7f,
-0xfd, 0xff, 0x7f, 0xfb, 0xb7, 0xcf, 0xfb, 0xfc,
-0xfd, 0xbf, 0xef, 0xff, 0xff, 0xfb, 0xef, 0x73,
-0x3c, 0x4f, 0x37, 0xc7, 0xf3, 0x7c, 0xdf, 0x37,
-0xcf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xa7, 0xff,
-0xfd, 0xef, 0x7f, 0xff, 0xf7, 0xee, 0xfd, 0xff,
-0x7f, 0xd5, 0xef, 0xfb, 0x7d, 0xff, 0xff, 0xf3,
-0x7e, 0xf7, 0xbf, 0xef, 0xfb, 0xfe, 0xfb, 0xbf,
-0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xea,
-0xb7, 0xff, 0xff, 0xcd, 0x77, 0x5c, 0xcf, 0x27,
-0xcf, 0xff, 0xfc, 0x7b, 0x1f, 0xcf, 0xf3, 0xfd,
-0xfe, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff,
-0x3f, 0xff, 0xdf, 0xff, 0xbf, 0xef, 0xfb, 0xff,
-0xf1, 0x1b, 0xff, 0xff, 0xfd, 0xaf, 0xff, 0xb3,
-0xfe, 0x7e, 0xf3, 0xeb, 0xff, 0x3f, 0xfc, 0xf9,
-0x7f, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xcf, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0xff,
-0x7f, 0xf5, 0xd3, 0xff, 0xff, 0x52, 0xd3, 0xfc,
-0xff, 0xfe, 0xcf, 0xbe, 0xbd, 0x7b, 0x3e, 0xce,
-0xe6, 0xb5, 0x7d, 0xff, 0xe7, 0x79, 0xdf, 0x37,
-0x9d, 0xe7, 0x7d, 0x5f, 0x57, 0x9d, 0xfe, 0xff,
-0xbf, 0xef, 0xfe, 0xfa, 0x2d, 0xff, 0xff, 0x5c,
-0xdf, 0xb7, 0xff, 0xfb, 0xfc, 0xdf, 0x3f, 0xef,
-0xfb, 0x7c, 0xd7, 0xf7, 0xcf, 0xfc, 0xff, 0x3f,
-0xef, 0xf3, 0xfc, 0xff, 0x3f, 0xef, 0xf3, 0xff,
-0xdf, 0xf7, 0xfd, 0xff, 0xf6, 0x47, 0xff, 0xaf,
-0xff, 0xff, 0xf1, 0xdf, 0xff, 0xbf, 0xfa, 0xdd,
-0xde, 0x7f, 0x8f, 0xb6, 0xfd, 0xff, 0x6d, 0xff,
-0xff, 0xfc, 0x7f, 0x5f, 0xd7, 0xd5, 0xf6, 0xff,
-0xff, 0x7b, 0xfe, 0xff, 0xbf, 0xff, 0xc8, 0xbf,
-0xf5, 0x7f, 0xdf, 0xf7, 0xff, 0xef, 0xff, 0xdf,
-0x7b, 0x5b, 0xdf, 0x51, 0xda, 0x55, 0x3d, 0x4f,
-0x3f, 0xff, 0xbf, 0xef, 0xfb, 0xfe, 0xfb, 0xbe,
-0xef, 0xfb, 0xea, 0x77, 0xdd, 0xf7, 0x7f, 0xd9,
-0x1f, 0xfe, 0xbf, 0xaf, 0xef, 0xff, 0xfb, 0xff,
-0xaf, 0x6b, 0xfb, 0xff, 0xff, 0xaf, 0x6b, 0xfb,
-0xf7, 0xfd, 0xf7, 0x6d, 0xfb, 0x7e, 0xdf, 0x37,
-0xed, 0xfb, 0x7e, 0xdf, 0xef, 0xfb, 0xfe, 0xff,
-0xfe, 0xf3, 0xff, 0xd7, 0x35, 0xfd, 0xf3, 0xff,
-0xff, 0xf5, 0xc5, 0xff, 0x6f, 0xff, 0xf7, 0xe1,
-0x7f, 0x7f, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xe3, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f,
-0xdf, 0xff, 0xe4, 0xff, 0xb7, 0xff, 0xff, 0xff,
-0xff, 0xb7, 0xff, 0xff, 0xfd, 0xfd, 0xb7, 0xff,
-0xfb, 0x7e, 0x7f, 0xff, 0xdf, 0xee, 0xfb, 0xbe,
-0xef, 0xbb, 0xee, 0x7b, 0xfe, 0xe7, 0xbb, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xdf, 0xf9, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdb,
-0xff, 0xff, 0xbf, 0xff, 0xfb, 0xfd, 0xbf, 0x6b,
-0xd8, 0xf6, 0x3d, 0xef, 0xe7, 0xff, 0xf6, 0x7f,
-0xef, 0xe7, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xfb,
-0xfe, 0xfd, 0xbf, 0xef, 0x5b, 0xfe, 0xf5, 0xbe,
-0xe2, 0xfb, 0xd6, 0xf9, 0xbd, 0x6f, 0x1e, 0x2d,
-0xbe, 0x6f, 0xdb, 0xd6, 0xff, 0xbf, 0x6f, 0xdb,
-0xf6, 0xff, 0xbf, 0xef, 0xfb, 0xff, 0xed, 0x6f,
-0xff, 0xff, 0xff, 0x3f, 0xff, 0xfb, 0xfe, 0xff,
-0xbe, 0xff, 0xbb, 0xfe, 0xfd, 0xbf, 0xef, 0xff,
-0xfb, 0x3f, 0xcf, 0xdb, 0xfe, 0xff, 0xbf, 0xcf,
-0xdf, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xcf, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xfe, 0xff,
-0xbf, 0xef, 0xff, 0xfe, 0xff, 0xbf, 0xef, 0xfb,
-0xff, 0xff, 0xbe, 0xef, 0xbb, 0xee, 0xfb, 0xee,
-0xef, 0xbf, 0xef, 0x7b, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xcd, 0xff, 0xfd, 0xff, 0xfe, 0x7f, 0xd3,
-0xfd, 0xfd, 0x7f, 0x5f, 0xd3, 0xf5, 0xed, 0x7f,
-0xdf, 0x9f, 0xf9, 0x3f, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x5f, 0xff,
-0xff, 0xff, 0xef, 0xbf, 0xff, 0x9f, 0xff, 0xf9,
-0xfa, 0xff, 0xdd, 0xa7, 0x6a, 0xfa, 0xbf, 0x9f,
-0xa7, 0xe9, 0xde, 0x7f, 0xab, 0xfe, 0x9f, 0xaf,
-0xeb, 0xfa, 0xfe, 0xdf, 0xb7, 0xeb, 0xfb, 0xe9,
-0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xf7, 0xff,
-0xed, 0xff, 0xfd, 0xff, 0x75, 0xff, 0x7f, 0xdf,
-0xd7, 0xfd, 0xcd, 0x77, 0x5f, 0xed, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xfe,
-0xf9, 0xfe, 0x6f, 0x9f, 0xe7, 0xf8, 0xbe, 0x2f,
-0x8f, 0xe6, 0xf9, 0xfe, 0x2f, 0x0b, 0xe6, 0xfe,
-0x7f, 0x9f, 0xa7, 0xf9, 0xfe, 0x7f, 0x9f, 0xa7,
-0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9, 0xfe, 0x9f,
-0xff, 0xc7, 0xfb, 0xf5, 0xff, 0xff, 0xef, 0xf1,
-0xfd, 0xfd, 0x7f, 0x6f, 0xf1, 0xfc, 0xf9, 0xbf,
-0xf7, 0xfe, 0xff, 0xbf, 0xe7, 0xf9, 0xfe, 0xff,
-0xff, 0xef, 0xfb, 0xf5, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xfb, 0xff, 0x7e, 0xbf, 0xff, 0xfd,
-0xff, 0xff, 0xbf, 0xaf, 0xf9, 0xff, 0xfe, 0xdf,
-0xe7, 0xfa, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xff, 0xff, 0xbf, 0xff, 0xfe, 0xbf, 0xff, 0xff,
-0xff, 0xf0, 0x7f, 0xfb, 0x7f, 0xff, 0xd7, 0xff,
-0xff, 0xff, 0xdf, 0xf7, 0xfd, 0xfd, 0xff, 0xdf,
-0xd7, 0xb5, 0xfe, 0xdf, 0xfb, 0xfe, 0xdf, 0xff,
-0xff, 0xfb, 0xff, 0xdf, 0xbf, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x4f, 0xff, 0xe7, 0xfd, 0xfa,
-0x7f, 0xdf, 0xf7, 0xfd, 0xfe, 0xdf, 0xf7, 0xe7,
-0xfd, 0xfa, 0x76, 0x9f, 0xef, 0x7f, 0xdf, 0xf3,
-0xfd, 0xff, 0x7f, 0xdf, 0xf3, 0xfd, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xe5, 0xff, 0xff, 0xff,
-0xff, 0x2f, 0xdf, 0xff, 0xff, 0xef, 0x27, 0xeb,
-0xf2, 0xfd, 0xbf, 0xa7, 0xf3, 0xfd, 0xff, 0x4f,
-0xd3, 0xf4, 0xf5, 0x3d, 0x4f, 0xd3, 0xf4, 0xf5,
-0x3d, 0x6f, 0xdb, 0xf7, 0xff, 0xfb, 0x37, 0xf3,
-0xeb, 0xfa, 0x2e, 0xb5, 0xaf, 0xe8, 0xfa, 0xfe,
-0xbf, 0x8f, 0x6b, 0xba, 0xbe, 0xbf, 0xa7, 0x3a,
-0xee, 0xbb, 0xae, 0xeb, 0xba, 0xee, 0x8b, 0xa6,
-0xeb, 0x3a, 0xbe, 0xb3, 0xad, 0xeb, 0xfd, 0x27,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xf5, 0x3f, 0xff,
-0xee, 0xf3, 0xfb, 0xfe, 0xf4, 0xff, 0xb6, 0xff,
-0xbc, 0xdf, 0x17, 0xcd, 0x3f, 0xff, 0xeb, 0x15,
-0xfd, 0xff, 0x7d, 0xfc, 0xff, 0x7f, 0xef, 0xdf,
-0xee, 0x6f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xaf,
-0xed, 0xff, 0x7f, 0xdf, 0x7f, 0xfb, 0x7b, 0xbe,
-0xbf, 0x9d, 0xfd, 0x2e, 0x6b, 0x9f, 0xe7, 0xff,
-0xde, 0xdf, 0xbf, 0xcb, 0xbb, 0x7f, 0xff, 0xff,
-0xff, 0xf8, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xd3, 0xfb, 0x7e, 0xff, 0xbf, 0xff, 0xff, 0xee,
-0xef, 0xbb, 0xf6, 0x57, 0xef, 0xeb, 0xfb, 0xff,
-0xff, 0xfd, 0xf7, 0xff, 0xff, 0x7f, 0x7f, 0xdf,
-0xdf, 0xf7, 0xfe, 0xe1, 0xff, 0xff, 0xff, 0x9e,
-0x9e, 0xff, 0xe4, 0xf8, 0x7a, 0x9f, 0xaf, 0xf9,
-0xde, 0x7e, 0x9f, 0xff, 0xf8, 0xfe, 0xbf, 0xaf,
-0xc8, 0xfa, 0x9e, 0xa5, 0xad, 0xcb, 0xfa, 0xed,
-0xff, 0xff, 0xbf, 0x6f, 0xf1, 0x6f, 0xff, 0xf9,
-0xfd, 0xfb, 0xff, 0xcb, 0xff, 0xbf, 0xf7, 0xd5,
-0xbf, 0xff, 0xb7, 0x57, 0xdf, 0xff, 0xbe, 0xeb,
-0xfa, 0xee, 0xb9, 0xad, 0x6b, 0xfa, 0xde, 0xbb,
-0xaf, 0xfd, 0x7f, 0xff, 0xfb, 0xfe, 0x47, 0xff,
-0xff, 0xff, 0xfa, 0x7f, 0xff, 0xef, 0xff, 0x98,
-0x77, 0xab, 0xbe, 0xfb, 0xbf, 0xff, 0xfb, 0xbb,
-0xbe, 0xff, 0xfb, 0xfe, 0xfb, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xc9,
-0x7e, 0xff, 0xff, 0xed, 0x7f, 0xff, 0xdf, 0xbf,
-0xfd, 0x7d, 0xff, 0xe7, 0xfc, 0xff, 0x6e, 0xdb,
-0xf5, 0xfe, 0x5f, 0xff, 0xfe, 0xfe, 0xf7, 0xef,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f,
-0xf8, 0xbf, 0xfb, 0xf7, 0xfb, 0xed, 0xdf, 0xd7,
-0xdd, 0xff, 0x6f, 0x7f, 0x37, 0xbf, 0xef, 0x7b,
-0xd6, 0xee, 0xe7, 0xfd, 0xff, 0xdf, 0xfd, 0x7b,
-0x7f, 0xf7, 0xff, 0xff, 0x7d, 0x7f, 0xef, 0xff,
-0xff, 0xf7, 0x07, 0xfb, 0xcf, 0xf3, 0xd5, 0x7e,
-0x17, 0xbf, 0x72, 0x7c, 0xff, 0x3d, 0xce, 0xf1,
-0xfc, 0xef, 0x2b, 0xd3, 0x9c, 0xef, 0x3f, 0xae,
-0x73, 0xfd, 0xfd, 0x3c, 0xfe, 0x7f, 0xff, 0xed,
-0xff, 0xff, 0xff, 0xfc, 0xff, 0xdd, 0xbf, 0x75,
-0xff, 0xfd, 0xbf, 0xbb, 0x7b, 0xdf, 0x97, 0x7d,
-0xbd, 0x63, 0xd9, 0xeb, 0xfa, 0x73, 0xf7, 0xed,
-0xde, 0xee, 0x7b, 0xbf, 0xf7, 0xf7, 0xdf, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xfe, 0x99, 0xfe, 0xbe,
-0xee, 0x7f, 0xfb, 0x7d, 0xff, 0xeb, 0xf1, 0xde,
-0x7a, 0xae, 0xd7, 0xfb, 0xff, 0xfa, 0xf5, 0xe9,
-0xeb, 0xfe, 0x5e, 0xff, 0xae, 0xbe, 0xdb, 0xed,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xbf,
-0x6b, 0x7a, 0xfd, 0xf6, 0xce, 0xff, 0xff, 0xff,
-0xbf, 0xe7, 0xf9, 0xee, 0xb9, 0xbf, 0xef, 0xda,
-0xf3, 0x2b, 0xff, 0xfb, 0xff, 0xef, 0xfb, 0xff,
-0xfa, 0xff, 0x9b, 0xef, 0xff, 0xff, 0xff, 0xe4,
-0x7f, 0xbf, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xdf,
-0xff, 0xf7, 0xf3, 0xff, 0x7f, 0xdf, 0xf7, 0xfb,
-0xff, 0x76, 0xef, 0xef, 0xff, 0x5f, 0xff, 0xff,
-0xff, 0xff, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xfe, 0x8f, 0x8d, 0xd5, 0xfd, 0x7f, 0xff, 0xff,
-0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xef,
-0xff, 0xbf, 0xff, 0xdf, 0xfb, 0xfb, 0xbf, 0xef,
-0xfd, 0xff, 0xe9, 0xfe, 0xde, 0xff, 0xbf, 0x7f,
-0xfd, 0xff, 0x7e, 0xff, 0xef, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xfe,
-0xff, 0xff, 0xff, 0xfd, 0xfe, 0xfd, 0x9f, 0xf7,
-0xd9, 0xfe, 0xdc, 0xee, 0x0f, 0xff, 0xd4, 0xff,
-0xfc, 0xfb, 0x3f, 0xcf, 0xbf, 0x3f, 0xff, 0xff,
-0xfc, 0xf3, 0x5f, 0xff, 0x35, 0xf1, 0xfc, 0xff,
-0xfe, 0xff, 0xf3, 0xfd, 0xff, 0xdf, 0xdf, 0xf1,
-0xff, 0xff, 0xfe, 0xff, 0xfc, 0x96, 0xbf, 0xff,
-0xaf, 0xff, 0x3f, 0xcb, 0xfd, 0xf3, 0xeb, 0xef,
-0x7c, 0xff, 0xf9, 0xcf, 0xff, 0xfc, 0xfe, 0xff,
-0xbf, 0xfe, 0x9f, 0xfe, 0xfc, 0xff, 0x7f, 0xfe,
-0xf3, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0x78, 0xf7,
-0xff, 0xe6, 0xb9, 0xfd, 0x5f, 0xcb, 0xd4, 0xbf,
-0xfe, 0x6b, 0x9e, 0xd3, 0xad, 0x6f, 0x2e, 0xcf,
-0x9f, 0xbf, 0xfd, 0xfb, 0xf2, 0xbf, 0xef, 0xfb,
-0xd2, 0xff, 0xa9, 0xae, 0x6b, 0xfb, 0xff, 0xbf,
-0x9b, 0xff, 0xfc, 0xd7, 0xff, 0xff, 0xf3, 0xde,
-0x57, 0xb7, 0xcd, 0x7b, 0x7e, 0x57, 0xf7, 0xcd,
-0xff, 0xcf, 0x97, 0xfe, 0xff, 0x3c, 0xd7, 0xf7,
-0xef, 0x7f, 0x5f, 0xdf, 0xb5, 0xe5, 0x7f, 0x7f,
-0xfd, 0xfb, 0xe7, 0xfd, 0xff, 0x5f, 0xfd, 0x3e,
-0xcf, 0xd2, 0xe9, 0xf7, 0xbf, 0x0f, 0x52, 0xfc,
-0xf7, 0xef, 0x5b, 0x3f, 0x9f, 0x73, 0xed, 0xff,
-0xff, 0xbe, 0x7c, 0xdf, 0xfe, 0xf9, 0xff, 0xff,
-0xef, 0xff, 0xf6, 0x6f, 0xff, 0xff, 0xf7, 0xfd,
-0xad, 0x5b, 0x56, 0x7f, 0xfd, 0xe7, 0xf9, 0xd6,
-0x56, 0x1d, 0xa7, 0x6b, 0x75, 0x9b, 0xcf, 0xfd,
-0xdf, 0xf7, 0xdd, 0xc7, 0x6b, 0xdf, 0x77, 0x3d,
-0xff, 0x7d, 0xdf, 0xf6, 0xc7, 0xff, 0xfe, 0x6b,
-0xff, 0xff, 0xf7, 0xff, 0xeb, 0xfe, 0xba, 0xbe,
-0xab, 0xeb, 0xfa, 0xbe, 0xbf, 0xeb, 0x5a, 0xe3,
-0xfd, 0xbf, 0x7f, 0xfe, 0xf1, 0xad, 0x2f, 0x5b,
-0xea, 0xfe, 0xbf, 0xbf, 0xff, 0xb1, 0xff, 0xfe,
-0xe9, 0x1f, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0x7f,
-0xd7, 0xf7, 0xfd, 0x7f, 0x7f, 0xdf, 0xfd, 0xb9,
-0x7e, 0xbb, 0xd6, 0xc7, 0xff, 0x7c, 0xf7, 0xa5,
-0xcd, 0xff, 0x5f, 0xd7, 0xf7, 0xff, 0xf9, 0xbf,
-0xed, 0xdf, 0xf4, 0x7f, 0x9f, 0xe7, 0xfb, 0xfc,
-0x7f, 0x3f, 0xcf, 0xd3, 0x7e, 0x7d, 0x37, 0xed,
-0xf6, 0xbd, 0xbf, 0x6f, 0xdf, 0xff, 0xff, 0xff,
-0x47, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xa5, 0xfe, 0x79, 0xbe, 0xa7, 0xff, 0xfe, 0xff,
-0xaf, 0x7f, 0xf8, 0xf6, 0xb9, 0x9f, 0xe7, 0x9b,
-0xfe, 0xff, 0xe3, 0xfa, 0xff, 0xbf, 0xff, 0xff,
-0xff, 0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xee, 0x7f, 0xd6, 0x25, 0x9f, 0x6f, 0x5b,
-0xee, 0xef, 0xbf, 0xef, 0x5b, 0xc6, 0x35, 0xbf,
-0x62, 0xfb, 0x37, 0x9f, 0xe6, 0x59, 0x76, 0x7f,
-0xbf, 0xef, 0xd8, 0x7e, 0xff, 0xbb, 0xef, 0xfb,
-0xfe, 0xff, 0xf8, 0x9b, 0xff, 0xf3, 0xbf, 0xcf,
-0xfb, 0xfe, 0xff, 0xfc, 0xef, 0xbf, 0xee, 0xfb,
-0xbf, 0xcf, 0xbb, 0xf6, 0xff, 0xff, 0xfb, 0xfd,
-0xff, 0xbf, 0xff, 0xdb, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xf3, 0xff, 0xff, 0xbf,
-0xfb, 0xfe, 0xff, 0x7f, 0xff, 0xf7, 0xff, 0xff,
-0x7f, 0xef, 0xf7, 0xfb, 0xff, 0x7f, 0xff, 0xfe,
-0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x5f, 0xed,
-0x3f, 0xc7, 0xff, 0xef, 0xff, 0xff, 0x5e, 0xff,
-0xf5, 0xff, 0x3e, 0x5f, 0xd3, 0xfd, 0xfe, 0xc7,
-0xd1, 0xf4, 0xfd, 0x1f, 0xff, 0xd7, 0xfe, 0x6b,
-0x7e, 0x5f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x2f,
-0xff, 0xab, 0xea, 0xff, 0x7f, 0xdf, 0xf7, 0xea,
-0x9b, 0xbe, 0xab, 0x23, 0x69, 0xf2, 0x3e, 0x9f,
-0xeb, 0xfe, 0x7e, 0xbd, 0xaf, 0xfd, 0xf2, 0x7f,
-0x8f, 0xe7, 0x69, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xff, 0xf5, 0xed, 0x7f, 0xfd, 0xff, 0xff,
-0xdd, 0x7f, 0xff, 0xf7, 0xfd, 0xfd, 0x7f, 0xde,
-0xf7, 0xfb, 0x7e, 0x74, 0xd7, 0xf5, 0xff, 0xff,
-0x5e, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf1, 0x3d, 0xff, 0xbe, 0x27, 0x9f, 0xc7,
-0xf9, 0xfc, 0x2f, 0x9f, 0xa2, 0xf9, 0xba, 0x6e,
-0x9f, 0xc6, 0xf1, 0xb7, 0x0b, 0xe2, 0xf8, 0x9e,
-0x7e, 0x8b, 0xe6, 0xf9, 0xbe, 0x7f, 0x9f, 0xe7,
-0xf9, 0xfe, 0x7f, 0x97, 0xfb, 0xd7, 0xf5, 0xff,
-0xfa, 0xef, 0xdf, 0xe5, 0xff, 0x7f, 0xdf, 0xf7,
-0xf4, 0xff, 0x7a, 0xcf, 0xbd, 0xe9, 0xbf, 0xcf,
-0xf1, 0xfc, 0xff, 0xbf, 0x4f, 0xf3, 0xf4, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xfe, 0xff,
-0xbf, 0xff, 0xff, 0xfa, 0xfe, 0xbf, 0xbf, 0xaf,
-0xfb, 0xeb, 0x9e, 0xff, 0xed, 0xfe, 0xbf, 0xaf,
-0xed, 0xff, 0xfe, 0xfa, 0xf7, 0xeb, 0xfe, 0xfe,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff,
-0x5f, 0xd7, 0xf7, 0xfd, 0xbf, 0xfe, 0xff, 0xff,
-0xdf, 0x7f, 0xff, 0xd7, 0x7d, 0xff, 0xfb, 0xb7,
-0xf4, 0xff, 0xff, 0xdf, 0xf3, 0xff, 0xff, 0x3f,
-0xcf, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3,
-0xff, 0xeb, 0x7a, 0x5f, 0xbf, 0xf7, 0xff, 0xdf,
-0xdf, 0xf3, 0xbd, 0xff, 0x3e, 0x7f, 0xf7, 0xf7,
-0xfb, 0xfe, 0x9f, 0xf7, 0xfd, 0xfb, 0x6f, 0xdf,
-0xbd, 0xf9, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0x7f, 0xf7, 0xff, 0xfb, 0xdb, 0xff, 0xf7,
-0xff, 0xcf, 0xda, 0xb7, 0xf5, 0xab, 0xcf, 0xfb,
-0xd7, 0xff, 0x77, 0xd3, 0xff, 0xf5, 0x3d, 0xff,
-0xfe, 0xf2, 0xff, 0xff, 0xfe, 0xff, 0xbf, 0xfc,
-0xbf, 0xfe, 0x0e, 0xfa, 0xfa, 0xfe, 0xad, 0xab,
-0xe1, 0xfa, 0x7e, 0xbb, 0xaa, 0xeb, 0xba, 0xfe,
-0x1f, 0x22, 0xe9, 0x5e, 0x3d, 0xab, 0xeb, 0xfa,
-0xde, 0xbf, 0xac, 0xeb, 0xf8, 0xde, 0xbf, 0xab,
-0xeb, 0xfa, 0xdf, 0x71, 0xbe, 0xff, 0xdf, 0xf7,
-0x7c, 0x71, 0xfc, 0xdb, 0xfd, 0x7f, 0xff, 0x64,
-0xff, 0xdf, 0x55, 0xff, 0xfe, 0xfb, 0xc5, 0xff,
-0x7b, 0xff, 0x7f, 0xf7, 0xf9, 0x7c, 0xff, 0x3f,
-0xff, 0xff, 0xfb, 0xfb, 0xfb, 0x9f, 0xff, 0xfa,
-0x7f, 0xff, 0xf5, 0xfd, 0x77, 0xf7, 0xfd, 0xf7,
-0xe6, 0xff, 0x7f, 0xfb, 0xf7, 0xeb, 0x73, 0x97,
-0xbf, 0xed, 0xee, 0xff, 0xff, 0x6b, 0xae, 0xf7,
-0xcf, 0xdf, 0x6f, 0xff, 0xff, 0x7e, 0x67, 0xff,
-0xff, 0xff, 0xff, 0xf6, 0xbf, 0xb7, 0xfe, 0xff,
-0xfe, 0xff, 0xb7, 0xef, 0xef, 0xf7, 0xfb, 0xdf,
-0xfa, 0xfa, 0xff, 0xbf, 0xfb, 0xbf, 0xbe, 0xfb,
-0xb7, 0xef, 0xbf, 0xff, 0xff, 0xbe, 0xef, 0x78,
-0x5f, 0xdf, 0xd2, 0x5f, 0xfb, 0xeb, 0xdb, 0xd5,
-0xbd, 0xbf, 0xf9, 0xfa, 0xbe, 0x9e, 0xeb, 0xe9,
-0xef, 0xff, 0xaf, 0xfb, 0xfe, 0xd4, 0x3d, 0x6f,
-0x61, 0xbf, 0xdf, 0xde, 0xff, 0xff, 0xff, 0xf7,
-0xfe, 0x5f, 0xef, 0xff, 0x7f, 0xff, 0xff, 0x7f,
-0xdf, 0xef, 0xfe, 0xf7, 0xdb, 0xdf, 0xfb, 0xff,
-0xff, 0x7f, 0xfe, 0xde, 0xc7, 0xff, 0xff, 0xdf,
-0xf7, 0xde, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf5, 0xfd, 0xa1, 0xff, 0xf3, 0xbc, 0x17, 0x9f,
-0xbe, 0xff, 0xfe, 0xef, 0xfb, 0x8e, 0xeb, 0x7a,
-0xbe, 0xfb, 0xbf, 0xef, 0x9e, 0xff, 0xb5, 0xee,
-0xef, 0xeb, 0xbf, 0xef, 0xff, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x6f, 0xfd, 0xff, 0xff,
-0xff, 0xf6, 0xff, 0xef, 0xed, 0x5f, 0xbe, 0xfc,
-0xbe, 0x4f, 0xd3, 0xdf, 0x7d, 0xef, 0xbf, 0xff,
-0xff, 0xef, 0xfb, 0x97, 0xf7, 0xf7, 0x9f, 0xfd,
-0x93, 0xdf, 0xff, 0xfe, 0xfe, 0xef, 0xff, 0xef,
-0xff, 0xdf, 0x56, 0xed, 0xff, 0xfd, 0x7b, 0xdf,
-0xed, 0xeb, 0x5d, 0xff, 0xdd, 0xff, 0x9f, 0xff,
-0xd7, 0xef, 0xfd, 0xff, 0xff, 0x7b, 0x9f, 0xff,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0xfd, 0xe1, 0xff,
-0xdf, 0xcf, 0xbe, 0xf7, 0x8d, 0xeb, 0x48, 0xfb,
-0x3f, 0xcf, 0xf3, 0x9c, 0xfd, 0xf7, 0xcc, 0x65,
-0xfa, 0xb7, 0xff, 0xff, 0xf4, 0xd7, 0x4f, 0xaf,
-0x63, 0xfa, 0xfe, 0x3f, 0xff, 0xf3, 0xff, 0xfd,
-0xbf, 0xef, 0xff, 0xff, 0xfe, 0xfd, 0xdf, 0x7f,
-0xdf, 0xb7, 0xfd, 0xfd, 0x7e, 0xf7, 0xdf, 0xbd,
-0xda, 0xbf, 0xfb, 0xf7, 0xdf, 0xff, 0x77, 0x7f,
-0xfd, 0xff, 0x77, 0xef, 0xf7, 0x7f, 0xff, 0x7f,
-0xff, 0x15, 0x7f, 0xb7, 0x75, 0x8b, 0xfe, 0x9f,
-0xbf, 0x78, 0xfe, 0xba, 0x1f, 0xe7, 0xf1, 0xbf,
-0x3d, 0x9d, 0xfd, 0xfb, 0x7e, 0xdc, 0xbf, 0x6b,
-0xdf, 0x77, 0xfd, 0xaf, 0x7f, 0xf6, 0x3f, 0xff,
-0xe9, 0xff, 0xea, 0xff, 0xfd, 0xdd, 0xbf, 0xfe,
-0xfb, 0xff, 0xff, 0xf3, 0xef, 0xf9, 0xef, 0xdf,
-0xff, 0x8f, 0xfb, 0xff, 0x7e, 0xaf, 0x73, 0xff,
-0xff, 0xf7, 0x2b, 0xff, 0xff, 0xff, 0xff, 0xee,
-0xff, 0x77, 0xff, 0xf8, 0x1f, 0xee, 0xff, 0xef,
-0xff, 0xdd, 0x7f, 0xff, 0xdd, 0xbd, 0xbe, 0xf7,
-0x7b, 0xff, 0x7f, 0xec, 0xff, 0xfe, 0xe7, 0xde,
-0xf7, 0xfb, 0xff, 0xf7, 0xfb, 0xff, 0xff, 0xff,
-0xf5, 0xff, 0xff, 0xff, 0xff, 0xda, 0xff, 0xfc,
-0xff, 0xff, 0xd7, 0xfc, 0x7c, 0xcf, 0xff, 0xcf,
-0xff, 0x5f, 0xd3, 0x3f, 0xcf, 0xbf, 0xff, 0x3f,
-0xcc, 0xf7, 0xfc, 0x9f, 0x3f, 0xd7, 0xf6, 0x7f,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x6b,
-0xe7, 0x4f, 0xff, 0xf7, 0xff, 0xfd, 0xf3, 0xf8,
-0xff, 0xff, 0xe7, 0xf9, 0x3f, 0xfc, 0xff, 0xff,
-0xef, 0xda, 0xab, 0x8e, 0xff, 0xfb, 0xff, 0xff,
-0x8f, 0xff, 0x3f, 0xdf, 0xff, 0xff, 0xff, 0xdf,
-0x4f, 0x79, 0xff, 0x3f, 0x1f, 0xff, 0xf7, 0xfb,
-0x5f, 0xcb, 0xb5, 0xb9, 0xbf, 0xea, 0xcf, 0xf5,
-0xff, 0xeb, 0x7a, 0xff, 0xbf, 0xe9, 0xfe, 0xcf,
-0xff, 0xff, 0xff, 0xfb, 0xfb, 0xff, 0xff, 0xff,
-0xfb, 0xd1, 0xbf, 0xff, 0xcf, 0xf3, 0xff, 0xff,
-0xbf, 0xe7, 0xf3, 0x7e, 0xdf, 0xb7, 0xec, 0xf9,
-0xfe, 0x7f, 0x3d, 0x7f, 0x5f, 0xff, 0xff, 0xff,
-0xf3, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f, 0xff,
-0xff, 0xcf, 0xd9, 0x17, 0xed, 0xfd, 0x7f, 0x5f,
-0xd7, 0xfb, 0xdb, 0x6c, 0xdd, 0xc3, 0xdb, 0xb6,
-0x26, 0xdd, 0xfb, 0x6d, 0xff, 0xfd, 0xd6, 0xf5,
-0xbf, 0xf7, 0xff, 0xfa, 0xff, 0xf7, 0xef, 0xcb,
-0xff, 0xff, 0xf7, 0xfe, 0xc6, 0xfe, 0xbd, 0x6d,
-0x7b, 0xdf, 0xf5, 0x9f, 0xe5, 0x6b, 0xba, 0x75,
-0x9d, 0xc7, 0x6b, 0xdf, 0xce, 0xbf, 0x7d, 0xb6,
-0xf7, 0xbd, 0xff, 0xff, 0xda, 0x57, 0xff, 0xf7,
-0x71, 0x7f, 0xff, 0xff, 0xff, 0x74, 0xdf, 0xff,
-0xdf, 0xfc, 0x7e, 0x7f, 0xff, 0xdb, 0xe7, 0xaf,
-0xea, 0x9a, 0xba, 0xb7, 0xef, 0xff, 0xfe, 0xb9,
-0xaf, 0x5b, 0xce, 0xdf, 0xf7, 0xff, 0x4b, 0x57,
-0x9f, 0xbe, 0xaf, 0xff, 0xff, 0xff, 0xfb, 0xdf,
-0xff, 0xff, 0xff, 0xbf, 0xfd, 0xff, 0xff, 0xf7,
-0xf7, 0xfd, 0xfa, 0x7f, 0xd3, 0xfe, 0xff, 0xbf,
-0x97, 0xb5, 0xcf, 0xf8, 0xfc, 0xfb, 0xf7, 0xe9,
-0x7b, 0xfc, 0xdf, 0xf5, 0xff, 0xff, 0xf7, 0xff,
-0xe9, 0xfe, 0xff, 0xff, 0xe9, 0xff, 0xfd, 0xff,
-0xbf, 0x5f, 0xdf, 0xf4, 0xdd, 0x7f, 0x67, 0xdb,
-0x76, 0x7f, 0xe9, 0xdb, 0x7e, 0xdf, 0xff, 0xe7,
-0xfb, 0x7f, 0xbd, 0x37, 0xff, 0xf7, 0xff, 0xfd,
-0x7f, 0xe4, 0x5f, 0xfb, 0xfb, 0xfe, 0x7f, 0xff,
-0x7f, 0xfe, 0xe6, 0xfd, 0xfe, 0x6f, 0x9b, 0xff,
-0xfb, 0xbf, 0x67, 0xfe, 0xff, 0xbf, 0xef, 0xff,
-0xfe, 0x7f, 0xbf, 0xff, 0x9f, 0xff, 0xfc, 0xff,
-0xff, 0x8f, 0xfa, 0xc7, 0xff, 0x6f, 0x1b, 0xd6,
-0xfd, 0xbf, 0xef, 0xf8, 0xb6, 0x3d, 0x81, 0x62,
-0xf9, 0xf6, 0x71, 0x8f, 0xfb, 0xbe, 0x6f, 0xbb,
-0xef, 0xdb, 0xfe, 0xef, 0xbf, 0xe3, 0xfb, 0x7e,
-0xff, 0xbf, 0xe7, 0xff, 0xb9, 0xbf, 0x6f, 0xfb,
-0xfe, 0xfd, 0xfe, 0xff, 0xff, 0xec, 0xfb, 0x3e,
-0xef, 0xbf, 0xfc, 0xff, 0xfe, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xf3, 0xfe, 0xff, 0xff, 0xff, 0xbb,
-0xff, 0xf3, 0xff, 0xff, 0x3f, 0xf9, 0xbf, 0xfb,
-0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xef, 0xf7, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0x7f, 0xff, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xc7,
-0xff, 0xd7, 0xb5, 0xfd, 0x7f, 0xdf, 0xbb, 0xf4,
-0xff, 0x3f, 0xc7, 0xf3, 0xf4, 0xfd, 0x1f, 0x4f,
-0xef, 0xff, 0x9b, 0xff, 0xbf, 0xff, 0x6b, 0xff,
-0xfe, 0xd1, 0xfd, 0xfd, 0x7f, 0xff, 0xfb, 0xff,
-0xe2, 0xff, 0xfa, 0x7e, 0x9f, 0xa7, 0x7c, 0xbf,
-0xf6, 0x8f, 0x23, 0xe8, 0xda, 0x3e, 0xbd, 0xaf,
-0x6a, 0xff, 0xdf, 0xb7, 0xdd, 0xff, 0x77, 0xdf,
-0xe7, 0xff, 0xfa, 0x3e, 0xdd, 0xaa, 0xff, 0xff,
-0xbf, 0xff, 0x9f, 0xff, 0xdf, 0xd7, 0xe5, 0xff,
-0xff, 0xfe, 0xd7, 0xfd, 0xff, 0x5f, 0xdf, 0xf7,
-0xe5, 0xff, 0x7f, 0xb7, 0xef, 0x5f, 0x7b, 0xff,
-0xbb, 0xff, 0xef, 0xff, 0xf6, 0xb7, 0xf5, 0xff,
-0xff, 0xff, 0xff, 0x93, 0xff, 0xeb, 0xe3, 0xe8,
-0xbe, 0x7f, 0x9f, 0xe2, 0xf8, 0xbe, 0x3f, 0x0f,
-0xe6, 0xf0, 0x9e, 0x2f, 0x9e, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe3, 0xf8,
-0xbe, 0x7f, 0x9f, 0xe7, 0xf2, 0x7f, 0xfd, 0x7f,
-0x45, 0xf7, 0xff, 0xff, 0xbf, 0xdf, 0xff, 0xfd,
-0xeb, 0x7f, 0x46, 0x91, 0xf5, 0xff, 0xe7, 0xff,
-0xff, 0xff, 0x1f, 0x6f, 0xfb, 0xfe, 0xfd, 0x7f,
-0xcf, 0xf7, 0xff, 0xff, 0x9f, 0xfe, 0xaf, 0xff,
-0xaf, 0xeb, 0xea, 0xff, 0xff, 0xf7, 0xfb, 0xff,
-0xff, 0xbf, 0xef, 0xeb, 0xfa, 0xfe, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xef, 0xfb, 0xff, 0x7b, 0xdf,
-0xaf, 0xed, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf1,
-0xfe, 0xfd, 0xfd, 0x7f, 0xdf, 0xff, 0xf7, 0xfd,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xff,
-0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xdf, 0xff, 0xff, 0xff,
-0xf9, 0x3f, 0xfe, 0x9f, 0xa7, 0xeb, 0xff, 0xde,
-0xdf, 0xad, 0xff, 0x7f, 0xdf, 0xf7, 0xf7, 0xf9,
-0xff, 0xdf, 0xe7, 0xff, 0xff, 0x7f, 0xdf, 0xf7,
-0xfd, 0xbf, 0x7f, 0xf7, 0xb7, 0xfb, 0x7f, 0xff,
-0xf7, 0xff, 0x93, 0xff, 0xdb, 0xf7, 0x6d, 0x9f,
-0x2f, 0xd1, 0xdf, 0xff, 0x3f, 0x27, 0xdb, 0xfe,
-0x3f, 0xbf, 0x6f, 0xff, 0xbf, 0xbf, 0xaf, 0xeb,
-0xff, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xfd, 0xbf,
-0xff, 0xfd, 0xff, 0xe2, 0xff, 0xfd, 0x85, 0xe9,
-0xfa, 0xee, 0xbf, 0xad, 0xe8, 0xfa, 0xee, 0x3f,
-0xad, 0xe8, 0xfa, 0xb6, 0xbd, 0xeb, 0xfa, 0xbe,
-0x1f, 0xaf, 0xe9, 0xf8, 0xbe, 0xbf, 0xab, 0xeb,
-0x5a, 0xbe, 0xbf, 0xaf, 0xf4, 0x9f, 0xfe, 0x5f,
-0xef, 0xf3, 0xbf, 0xff, 0xbf, 0xfd, 0xfc, 0xff,
-0xef, 0x0d, 0xd3, 0xf4, 0xbd, 0xf6, 0xff, 0xf7,
-0xdf, 0xef, 0xff, 0xb3, 0x7f, 0xbf, 0xf7, 0xff,
-0xff, 0xf7, 0xff, 0xff, 0xc7, 0xff, 0x99, 0x7d,
-0x7b, 0xff, 0x3d, 0xfb, 0x7a, 0xdf, 0xaf, 0x7c,
-0xfe, 0xf9, 0xde, 0xfc, 0xfd, 0xff, 0xf7, 0x7f,
-0xf7, 0xeb, 0xf7, 0xdf, 0xbd, 0xad, 0xff, 0x7f,
-0xbf, 0xff, 0xdf, 0xff, 0xff, 0xef, 0xff, 0xe6,
-0x67, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x7f, 0xca,
-0xfd, 0xb2, 0xff, 0x6d, 0x7f, 0xff, 0x8e, 0xef,
-0xfd, 0xff, 0xff, 0xff, 0xfb, 0xfa, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0xef, 0xfa, 0xff,
-0xff, 0x45, 0xfc, 0xff, 0x2f, 0xda, 0xfe, 0xbf,
-0x1f, 0xeb, 0xfe, 0xfd, 0xb7, 0xaf, 0xfb, 0xfa,
-0xe7, 0xbf, 0xfd, 0xf0, 0xe4, 0xad, 0x83, 0xef,
-0xe8, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff,
-0xff, 0x7f, 0xcd, 0xff, 0xff, 0x7b, 0xbf, 0xec,
-0x7b, 0xbf, 0xff, 0xbf, 0xbf, 0xdf, 0xfe, 0xff,
-0xff, 0x9f, 0xff, 0xef, 0xff, 0x7f, 0xe7, 0xd7,
-0xef, 0x7f, 0x7f, 0xff, 0xdf, 0xff, 0xf7, 0x77,
-0xff, 0xff, 0xff, 0xf9, 0x9f, 0xff, 0xbb, 0xce,
-0xe3, 0xfb, 0xaf, 0xef, 0xbe, 0xff, 0xef, 0xfe,
-0x3f, 0x8e, 0xff, 0xfb, 0xee, 0xfe, 0xff, 0x7e,
-0xff, 0xaf, 0xef, 0xff, 0xbe, 0xef, 0xfb, 0xff,
-0xff, 0xff, 0xdf, 0x3f, 0xff, 0x15, 0xfb, 0xec,
-0x36, 0xfd, 0xee, 0x7f, 0xdf, 0xfe, 0xff, 0xff,
-0xfb, 0xff, 0xd7, 0xfd, 0xef, 0xef, 0xff, 0x7f,
-0xfd, 0x6d, 0xdb, 0xf6, 0xef, 0xbf, 0x6f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x57, 0xef, 0xe0, 0xff,
-0xdf, 0xbe, 0xf5, 0x6e, 0xef, 0x76, 0xff, 0xf7,
-0xfb, 0xff, 0xff, 0xdf, 0xbd, 0xbb, 0xff, 0x8b,
-0xff, 0xfd, 0x6d, 0xf6, 0x76, 0xde, 0xfd, 0xed,
-0x5f, 0xf7, 0xff, 0xfb, 0xff, 0xff, 0xdf, 0xfc,
-0x5f, 0xf7, 0x23, 0x8f, 0xf3, 0x3b, 0xfd, 0xff,
-0xfd, 0xd3, 0xff, 0xff, 0x5f, 0x8d, 0xf1, 0xbe,
-0xff, 0x4e, 0xe1, 0xd9, 0xdd, 0x2f, 0xcf, 0xfb,
-0xf4, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff,
-0x7f, 0x93, 0xb7, 0xf7, 0xfd, 0xff, 0x7f, 0xff,
-0xff, 0xdf, 0xff, 0x77, 0xfe, 0xff, 0xba, 0xfb,
-0xba, 0x6f, 0xe9, 0xbf, 0x7f, 0xbf, 0xf7, 0xfd,
-0xff, 0x7d, 0xdf, 0xfe, 0xff, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xfa, 0x77, 0xfa, 0x3f, 0x1e, 0xe3,
-0x25, 0xd5, 0x76, 0xfd, 0xe7, 0xed, 0xfb, 0xbf,
-0xd7, 0xff, 0xfe, 0xdf, 0xdf, 0xb7, 0xfd, 0x38,
-0x76, 0x9f, 0xff, 0xf9, 0xfb, 0xff, 0xff, 0x6f,
-0xff, 0xfb, 0xff, 0xff, 0xc6, 0xff, 0xf7, 0xbf,
-0xb6, 0xff, 0xff, 0xef, 0xff, 0x7e, 0x7e, 0x33,
-0xae, 0xfb, 0xff, 0xff, 0xa7, 0x61, 0xfe, 0xff,
-0xff, 0xa7, 0xf3, 0xfe, 0xff, 0xb7, 0xaf, 0xff,
-0xff, 0xff, 0xef, 0xff, 0x7f, 0x89, 0xff, 0xf7,
-0xff, 0xf7, 0x5f, 0xfe, 0xfd, 0x7f, 0xff, 0x5f,
-0xfd, 0xff, 0xfd, 0x5f, 0xff, 0xef, 0xff, 0xff,
-0x3f, 0xdf, 0xef, 0xff, 0x7f, 0xbf, 0xce, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xdf, 0xe8, 0x0f,
-0xf2, 0xff, 0xbf, 0x5f, 0xfb, 0x7e, 0xdf, 0xbf,
-0xff, 0x57, 0x3e, 0xdf, 0xbd, 0xfd, 0xd3, 0x3f,
-0xf5, 0x5c, 0xff, 0x3e, 0xf7, 0xfd, 0x5c, 0xfb,
-0xfe, 0xff, 0xff, 0xef, 0xfb, 0xfe, 0xdf, 0xfc,
-0xe6, 0xbe, 0x97, 0xf3, 0xe5, 0xff, 0x1b, 0xcf,
-0xf7, 0xff, 0xfa, 0x7f, 0xcf, 0xf7, 0xfe, 0xf9,
-0x74, 0xff, 0xab, 0xdf, 0xaf, 0xce, 0xf3, 0xcf,
-0xff, 0x3f, 0xdf, 0xff, 0xfc, 0xff, 0x7f, 0xc7,
-0xfd, 0x7c, 0xf7, 0xfb, 0xfe, 0xbc, 0xaf, 0x2b,
-0xfa, 0xf2, 0xdf, 0xfe, 0x7a, 0xcf, 0xc6, 0x9f,
-0xed, 0xed, 0xff, 0xff, 0xff, 0xfb, 0xfa, 0xfe,
-0xbf, 0xfb, 0xeb, 0xca, 0x7f, 0xff, 0xaf, 0xef,
-0xca, 0x7f, 0xbe, 0x9b, 0xff, 0x5c, 0xd7, 0x35,
-0xcd, 0x7f, 0x7e, 0x55, 0x9f, 0xcf, 0x7b, 0xfe,
-0xd5, 0xff, 0xfc, 0xff, 0xef, 0xfb, 0xff, 0xff,
-0x5e, 0x57, 0xff, 0xed, 0x7b, 0x57, 0xff, 0xf7,
-0xfd, 0xf3, 0x57, 0xfd, 0x93, 0xff, 0xed, 0x32,
-0x4c, 0x93, 0x27, 0xcb, 0xfb, 0x6d, 0xff, 0xff,
-0x8b, 0xa2, 0x5e, 0xbf, 0x33, 0xff, 0x7f, 0xdf,
-0xf6, 0xcb, 0xf7, 0xdf, 0xde, 0xa5, 0x0f, 0xff,
-0xfe, 0xb7, 0xbf, 0xeb, 0xff, 0xf0, 0x6f, 0xfd,
-0xfe, 0x5f, 0xdd, 0xec, 0xf5, 0x5a, 0x7e, 0xbf,
-0xe7, 0x51, 0xdf, 0x4f, 0xfd, 0x87, 0x7f, 0xf7,
-0xff, 0xfe, 0x79, 0x58, 0x7b, 0xff, 0xf5, 0xf9,
-0xff, 0xff, 0xde, 0x67, 0x7d, 0x76, 0xf6, 0x27,
-0xff, 0xbf, 0xab, 0xfa, 0xda, 0xb7, 0xae, 0x6f,
-0xd6, 0xfb, 0xbf, 0xbf, 0x6a, 0xfa, 0xe6, 0xfd,
-0xff, 0xff, 0xf5, 0xde, 0xad, 0xeb, 0xff, 0xfe,
-0xbe, 0xad, 0xff, 0xfa, 0xde, 0xff, 0xef, 0x5f,
-0xb9, 0xff, 0xf7, 0x69, 0x5f, 0x46, 0xd3, 0x35,
-0xfd, 0x3b, 0x7f, 0xf7, 0xfd, 0xe5, 0x6a, 0xff,
-0xdb, 0xdb, 0xb3, 0xee, 0xfb, 0xb5, 0xfd, 0x7f,
-0xef, 0xd1, 0xf5, 0xff, 0xff, 0x7f, 0xdf, 0xf5,
-0xcf, 0xff, 0xbf, 0xff, 0xd7, 0xfc, 0xdd, 0x2f,
-0x6d, 0xfb, 0x76, 0x9f, 0x1f, 0xed, 0xf8, 0xfd,
-0xff, 0xff, 0x6d, 0xf7, 0xfd, 0x8f, 0x7b, 0xf3,
-0xfd, 0xff, 0xb7, 0x4f, 0xf3, 0xff, 0xff, 0x37,
-0xff, 0xfb, 0x7f, 0xf7, 0xfe, 0x79, 0xff, 0xaf,
-0x9e, 0xff, 0xff, 0xbe, 0x6f, 0xdf, 0xfe, 0xff,
-0xfe, 0x7f, 0xff, 0xfe, 0xef, 0xe7, 0xff, 0xfe,
-0xfc, 0xaf, 0xff, 0xfb, 0xe6, 0xbd, 0xaf, 0xff,
-0xef, 0xff, 0xfd, 0xff, 0xf8, 0x5f, 0xfe, 0x75,
-0xbb, 0x65, 0xd9, 0xd6, 0xef, 0x99, 0x6f, 0xdb,
-0xb6, 0xff, 0x8f, 0x6f, 0xf9, 0xbf, 0x9f, 0xe7,
-0xfb, 0x16, 0xe5, 0xbf, 0x6f, 0x99, 0xb6, 0xef,
-0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xf8, 0x5b, 0xff,
-0xfb, 0xff, 0x6f, 0xb3, 0xff, 0xff, 0xfe, 0xef,
-0x9b, 0xfd, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xfb, 0xff, 0xf3, 0xbf, 0x7f, 0xf7, 0xed,
-0xfb, 0xff, 0xff, 0x3f, 0xff, 0xf3, 0xfd, 0xab,
-0xff, 0xfe, 0xff, 0xfb, 0xed, 0xff, 0xff, 0xff,
-0xef, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0x5f, 0xbf, 0x1f, 0xcf, 0xf1, 0xf4, 0xf9,
-0xff, 0x47, 0xd7, 0xf7, 0xff, 0xff, 0xe7, 0xdf,
-0xf4, 0x7e, 0x47, 0xd1, 0xf4, 0x7d, 0x7e, 0x5f,
-0xf5, 0xf4, 0x7d, 0x7f, 0xff, 0xd7, 0xff, 0xfb,
-0xff, 0xfa, 0xaf, 0xfd, 0xe3, 0x7a, 0xfe, 0xbe,
-0xbf, 0xb7, 0x6a, 0xbe, 0xad, 0x9f, 0x77, 0xcc,
-0xfe, 0x76, 0xbf, 0xeb, 0xfa, 0xf4, 0xbf, 0xa2,
-0xec, 0xf7, 0xfe, 0xa9, 0xaa, 0xff, 0xda, 0xbf,
-0xff, 0xf2, 0xff, 0xfd, 0xff, 0xfd, 0xfd, 0x7b,
-0xfd, 0xd7, 0xff, 0xfd, 0x5b, 0xde, 0xff, 0xfd,
-0xeb, 0xfb, 0x7f, 0xd7, 0xb9, 0x7f, 0x55, 0xd5,
-0x75, 0xfd, 0x7f, 0xcd, 0xd7, 0x75, 0xff, 0xff,
-0x5f, 0xff, 0xbf, 0xff, 0xf8, 0xbf, 0xff, 0x9e,
-0x2f, 0x9d, 0xe2, 0xf8, 0xfe, 0x2f, 0x9b, 0xe7,
-0xf8, 0xfe, 0x37, 0x9b, 0xe2, 0x69, 0xa7, 0x8b,
-0xa2, 0xf8, 0xbe, 0x3f, 0x8f, 0xe2, 0x78, 0xfe,
-0x7f, 0x8b, 0xe7, 0xf9, 0xfe, 0x7f, 0xe7, 0xff,
-0xf1, 0xfc, 0xff, 0x1f, 0xdf, 0xf7, 0xf5, 0xfd,
-0x7f, 0xcf, 0xd3, 0xfe, 0xfd, 0x3f, 0xcd, 0xfc,
-0xff, 0x77, 0x4f, 0xd7, 0xf5, 0xff, 0xff, 0x5f,
-0xd7, 0xff, 0xfd, 0x7f, 0xff, 0xff, 0xff, 0xe0,
-0xff, 0xfe, 0xff, 0xbf, 0xef, 0xeb, 0xfe, 0xfa,
-0xbf, 0xef, 0xe9, 0xfa, 0x7e, 0xdf, 0xa7, 0xf9,
-0xef, 0xbf, 0xef, 0xab, 0xfa, 0xfe, 0xff, 0xff,
-0xeb, 0xfa, 0xff, 0xff, 0xaf, 0xbf, 0xff, 0xff,
-0xfd, 0x1f, 0xff, 0xdf, 0xf3, 0xff, 0xfd, 0x7f,
-0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xff, 0xf5,
-0xff, 0xff, 0xbb, 0xff, 0xff, 0x3f, 0x5f, 0xd7,
-0xff, 0xff, 0x7f, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0x5f, 0xff, 0x93, 0xff, 0xfb, 0x7a, 0x5f, 0xb7,
-0xaf, 0xff, 0xbb, 0xdf, 0xb7, 0xa7, 0xf9, 0xff,
-0xde, 0x9f, 0xf6, 0xff, 0x7f, 0xdb, 0xa7, 0xfb,
-0x7b, 0xdf, 0xff, 0xad, 0xef, 0x7f, 0xff, 0xf3,
-0xff, 0xeb, 0x7f, 0xf8, 0x3f, 0xbe, 0xbf, 0xef,
-0xfd, 0xf7, 0x7d, 0xbf, 0x6e, 0xff, 0xf2, 0xfd,
-0x3f, 0x6f, 0xfb, 0xfc, 0xff, 0xf7, 0xff, 0xf4,
-0xfd, 0x3f, 0xef, 0xff, 0xf2, 0xec, 0xbf, 0xff,
-0xd3, 0xf4, 0xfd, 0x3d, 0xfe, 0x2f, 0xff, 0xfa,
-0x7e, 0xbf, 0xaf, 0x6b, 0xfa, 0x7e, 0x8f, 0xae,
-0xeb, 0x5a, 0xb6, 0xaf, 0xa7, 0xeb, 0x5e, 0xbf,
-0xad, 0x6b, 0xba, 0xbe, 0x3f, 0xaa, 0xe1, 0x3a,
-0xde, 0xbd, 0xa7, 0xeb, 0xd2, 0xff, 0x61, 0xff,
-0xff, 0xd9, 0x7b, 0xff, 0xff, 0x73, 0xfc, 0x3f,
-0xf7, 0xff, 0x7f, 0x7d, 0x37, 0x7f, 0xb3, 0x7f,
-0xfb, 0xdd, 0xf1, 0xff, 0x7d, 0xff, 0xfc, 0xfd,
-0xdc, 0xff, 0xff, 0xff, 0x6f, 0xbc, 0xff, 0xfa,
-0x17, 0xf7, 0xfe, 0xfe, 0x7f, 0xf7, 0xf9, 0xf1,
-0xf6, 0xff, 0xf7, 0xdf, 0xfa, 0xfc, 0xdc, 0xbb,
-0xeb, 0xff, 0xfb, 0xbc, 0xbd, 0xdb, 0xfc, 0xff,
-0xf7, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xf7, 0xed,
-0xfe, 0xb7, 0xfb, 0xfa, 0xfd, 0xff, 0xfa, 0xfb,
-0xbd, 0xf3, 0xff, 0xef, 0xfe, 0xfc, 0xe3, 0xff,
-0xff, 0xdf, 0x9e, 0xbf, 0xf7, 0xfd, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff,
-0xcf, 0xff, 0xe4, 0x5f, 0x9f, 0xbe, 0x3f, 0xef,
-0xf9, 0xf8, 0xff, 0xff, 0xf7, 0x63, 0xfe, 0xde,
-0xaf, 0xef, 0x65, 0xff, 0x9f, 0xaf, 0x69, 0xfb,
-0xff, 0xf3, 0xe3, 0xeb, 0xda, 0xf7, 0xff, 0x8d,
-0xff, 0xfb, 0x7f, 0xff, 0x5f, 0xff, 0xff, 0xef,
-0xff, 0xd6, 0xde, 0xff, 0xbf, 0xdf, 0xfe, 0xfd,
-0x7f, 0x57, 0xf7, 0xff, 0xe7, 0xff, 0xdd, 0xf7,
-0xbe, 0xdf, 0xff, 0x7f, 0xff, 0xbf, 0x6e, 0xff,
-0xeb, 0x7f, 0xff, 0xdf, 0xfe, 0xb9, 0xff, 0xff,
-0xbf, 0xfa, 0xbf, 0xff, 0xed, 0xbf, 0xef, 0xd6,
-0xfe, 0xff, 0x7e, 0xe7, 0xba, 0xff, 0xeb, 0xde,
-0xfb, 0x3f, 0xff, 0xbf, 0xf6, 0x1f, 0xbd, 0xfb,
-0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x7f,
-0xfb, 0xff, 0x6e, 0xef, 0xf5, 0xfd, 0x7f, 0xfb,
-0xff, 0xbe, 0x7d, 0xf7, 0x2f, 0xdf, 0xfe, 0xfc,
-0xff, 0xbb, 0xfe, 0xff, 0xbf, 0xff, 0xdf, 0xff,
-0xfc, 0xff, 0xff, 0x7b, 0xff, 0xdf, 0xbf, 0xfe,
-0xaf, 0xfb, 0xfd, 0x7b, 0xbf, 0xff, 0xf7, 0xff,
-0x5f, 0xff, 0x9b, 0xff, 0xbb, 0xef, 0xfb, 0x5f,
-0xef, 0xbe, 0xf7, 0xff, 0xf7, 0x7d, 0x7f, 0xde,
-0xdd, 0xf7, 0xbf, 0xbf, 0xff, 0xff, 0xfd, 0xff,
-0xed, 0xd5, 0x7f, 0xfb, 0x5c, 0xfa, 0x2e, 0xbf,
-0xef, 0xdc, 0x9e, 0x3f, 0xcf, 0xa3, 0xf3, 0xb6,
-0xbe, 0xcf, 0x74, 0xf5, 0x2f, 0xff, 0xf1, 0x58,
-0xfe, 0xff, 0x7f, 0xd3, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xaf, 0xfb, 0x7f, 0x5f, 0xf7,
-0xff, 0xbf, 0xff, 0xdf, 0xf7, 0x33, 0x7f, 0x79,
-0xff, 0xfb, 0xeb, 0x7e, 0xdb, 0xfd, 0xff, 0xff,
-0x7f, 0xdf, 0xff, 0xff, 0xfb, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x13, 0x7a, 0xf7, 0xba,
-0xfe, 0x67, 0xde, 0x7e, 0xfb, 0xde, 0xff, 0xdd,
-0xe7, 0xef, 0xcd, 0x37, 0xfe, 0xf8, 0xde, 0xfe,
-0xff, 0xd3, 0xeb, 0xff, 0xf7, 0xff, 0xeb, 0xff,
-0xf7, 0xff, 0xfb, 0xff, 0xff, 0xee, 0xef, 0xff,
-0x7f, 0xf7, 0xef, 0xff, 0x3a, 0xbf, 0xfd, 0xee,
-0xf7, 0x7e, 0xee, 0xbf, 0xfd, 0xff, 0x7f, 0x77,
-0x2e, 0xff, 0xff, 0xde, 0xbf, 0xab, 0xfe, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x1f,
-0xff, 0x7f, 0xff, 0xf3, 0xfd, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xfb, 0xff,
-0x80, 0xff, 0x5c, 0xcb, 0xdf, 0xf7, 0xb3, 0xfc,
-0xfb, 0xde, 0xfd, 0x33, 0x2f, 0xff, 0xff, 0xdf,
-0xb6, 0x7f, 0x93, 0xcc, 0xf1, 0xec, 0xfb, 0xfe,
-0xdf, 0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xcf, 0x6b, 0xe7, 0xfa, 0x1a, 0x8f, 0xf7,
-0x7f, 0xdf, 0x7b, 0xdf, 0x3f, 0xbd, 0xff, 0xff,
-0xdf, 0xf7, 0xeb, 0xff, 0xff, 0xaf, 0xbd, 0xbf,
-0xdf, 0xdf, 0xf7, 0xfc, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xd6, 0x4f, 0x7f, 0xa9, 0x5f, 0xd2,
-0xf4, 0xfd, 0x7f, 0x4f, 0x9a, 0xfe, 0xed, 0x3f,
-0x5f, 0x9b, 0xde, 0xff, 0xfe, 0x7f, 0x3e, 0xaf,
-0xbf, 0xef, 0x1f, 0xfe, 0xf9, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xcd, 0xbf, 0x95, 0xcd,
-0xff, 0x5e, 0xdf, 0xff, 0xe5, 0x73, 0x5f, 0xff,
-0xf5, 0xef, 0xff, 0x7f, 0xdf, 0xff, 0xff, 0xbe,
-0x57, 0xf7, 0xff, 0x79, 0xff, 0xdf, 0x97, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x3f, 0xff,
-0xff, 0xac, 0xdd, 0xe3, 0x7d, 0xfd, 0x35, 0x4f,
-0xfb, 0xfe, 0x92, 0x2f, 0xdb, 0xfb, 0xff, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0xb6, 0xcb, 0xfb, 0xfe,
-0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x16,
-0xff, 0xfd, 0xf5, 0x7f, 0xfd, 0x6f, 0x75, 0xe7,
-0x59, 0xff, 0xf7, 0xd5, 0xfd, 0x61, 0xdf, 0x77,
-0xfe, 0xff, 0xff, 0xf7, 0xdd, 0xfd, 0xe9, 0x5f,
-0x77, 0xdc, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x70, 0x7f, 0xfa, 0xde, 0xbf, 0xfd, 0xef, 0xdf,
-0xd2, 0xfd, 0x2f, 0xef, 0xfa, 0xfe, 0xfd, 0xaf,
-0xef, 0xff, 0xdf, 0xfd, 0x6b, 0xfb, 0xfe, 0xff,
-0xaf, 0xef, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf9, 0x13, 0xff, 0x5f, 0xd5, 0xfb, 0xff,
-0xb8, 0xfc, 0x51, 0xa5, 0xff, 0xff, 0x47, 0xf7,
-0x15, 0xcd, 0xfa, 0xfe, 0xfe, 0xe1, 0x7f, 0x7f,
-0xf3, 0xf5, 0xfd, 0xff, 0x5f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x9b, 0xfe, 0xdf, 0xff, 0x47,
-0xd3, 0x77, 0xff, 0xff, 0x47, 0xf3, 0x7e, 0xdd,
-0x7f, 0x6f, 0xfb, 0x7f, 0xff, 0xdf, 0xdf, 0xff,
-0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xef, 0xff,
-0xe7, 0xf8, 0xbf, 0xff, 0xf9, 0xee, 0x7d, 0xbf,
-0xe7, 0xbb, 0xfe, 0xbf, 0xbf, 0xef, 0xfb, 0xff,
-0xff, 0xff, 0xf9, 0xf7, 0xff, 0xff, 0xff, 0xf9,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x87, 0xfb,
-0xef, 0x59, 0xfe, 0x39, 0x9f, 0x6f, 0xd9, 0xfe,
-0xf9, 0xbf, 0x67, 0x9b, 0xbe, 0xfb, 0xb3, 0x7b,
-0xfe, 0x7f, 0xbf, 0xed, 0xdb, 0xf6, 0xff, 0xbf,
-0x6d, 0xfb, 0xfe, 0xff, 0xbf, 0x6f, 0xff, 0xa1,
-0xbf, 0xff, 0xfb, 0xef, 0xf1, 0xbf, 0xcf, 0xf7,
-0xfe, 0xf9, 0xbf, 0x6f, 0xf3, 0xfe, 0xff, 0xff,
-0xcf, 0xfe, 0xff, 0xff, 0xef, 0xf3, 0xe6, 0xff,
-0xff, 0x6f, 0xbf, 0xff, 0xff, 0xff, 0xcf, 0xff,
-0xdc, 0x3f, 0xff, 0xfe, 0xfb, 0xff, 0xdf, 0xfb,
-0xff, 0xff, 0x7f, 0xdf, 0xfb, 0xfe, 0xfe, 0xff,
-0xff, 0xfb, 0xff, 0x7f, 0xff, 0xf7, 0xfe, 0xff,
-0x7f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xe5, 0xff, 0xf7, 0xfe, 0x7f, 0x9f,
-0xcf, 0xf7, 0xb4, 0xed, 0x7f, 0xdf, 0xd1, 0xec,
-0x7f, 0x7f, 0x5f, 0xe5, 0x7b, 0x1f, 0xff, 0xd7,
-0xf7, 0xff, 0xff, 0xfe, 0xd7, 0xff, 0xfd, 0x7f,
-0xff, 0xb7, 0xff, 0xf4, 0xff, 0xfe, 0x77, 0xcf,
-0xfb, 0xcb, 0xfe, 0x7e, 0xaf, 0xaa, 0x49, 0xfa,
-0xbf, 0xbf, 0xe7, 0xc9, 0xf6, 0x8f, 0xaf, 0xff,
-0xfa, 0x7d, 0xcb, 0x67, 0xff, 0xfa, 0x3f, 0xff,
-0xa7, 0xff, 0xfb, 0x7f, 0xff, 0x1f, 0xff, 0xdf,
-0xdf, 0xbf, 0xff, 0x7b, 0xdf, 0xd7, 0xb5, 0xff,
-0x77, 0x5e, 0xff, 0xf5, 0xff, 0xff, 0x95, 0xfc,
-0xff, 0xff, 0xfe, 0xdf, 0xff, 0xdf, 0xff, 0x5f,
-0xff, 0xe5, 0xff, 0xff, 0xdf, 0xff, 0x0b, 0xff,
-0xfb, 0xe6, 0x71, 0xda, 0x2f, 0x9b, 0xe2, 0xe8,
-0xfe, 0x2f, 0x89, 0xe7, 0x78, 0xbe, 0x7f, 0x9a,
-0xe8, 0xbe, 0x7f, 0x9f, 0xe7, 0xf9, 0xbe, 0x7f,
-0x8b, 0xe7, 0xf8, 0xbe, 0x7f, 0x8f, 0xe7, 0xf9,
-0x7f, 0xff, 0x3f, 0xef, 0xb3, 0xfc, 0x7f, 0x1f,
-0x47, 0xd7, 0xf4, 0xfd, 0x3f, 0xc7, 0xd3, 0xf4,
-0xff, 0x5d, 0xf7, 0xfe, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xfe, 0x8f, 0xff, 0xe7, 0xff, 0xfa, 0xfa, 0xbf,
-0xef, 0xeb, 0xea, 0xfe, 0x9f, 0xaf, 0xff, 0xfe,
-0x7e, 0x9f, 0xef, 0xeb, 0xff, 0xff, 0xaf, 0xff,
-0xfe, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xbf, 0xff, 0xd4, 0xff, 0xfd, 0xff, 0xbb, 0xed,
-0xf7, 0xff, 0xff, 0x77, 0xdf, 0xf7, 0xfc, 0xff,
-0xff, 0x5f, 0xff, 0xf9, 0x7f, 0xdf, 0xfb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xff, 0xf8, 0xbf, 0xff, 0x9f, 0xfd,
-0xff, 0x7a, 0x7f, 0x9f, 0xa4, 0xef, 0x7e, 0x7e,
-0x97, 0xf7, 0xe9, 0xff, 0x7f, 0xbd, 0xef, 0xff,
-0x7f, 0xff, 0xfd, 0xfb, 0xff, 0xff, 0xf7, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0x47, 0xff, 0xfe,
-0xf6, 0xbf, 0xff, 0xcf, 0xfc, 0xf6, 0xfd, 0xff,
-0x76, 0xdf, 0xf6, 0xfd, 0xbf, 0x2f, 0xff, 0x7f,
-0xff, 0xff, 0xfd, 0xbf, 0xfd, 0xff, 0x6f, 0xcb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xff,
-0xef, 0xaf, 0xea, 0xfa, 0xbe, 0xbf, 0xae, 0xe9,
-0xda, 0xae, 0x8f, 0xae, 0xeb, 0xb2, 0xf6, 0xbd,
-0xeb, 0xfa, 0x7e, 0x8f, 0xa7, 0xeb, 0x3a, 0xfe,
-0x9d, 0xaf, 0xeb, 0xfa, 0xfe, 0xbf, 0xaf, 0xf6,
-0x1f, 0xef, 0xf7, 0xc1, 0xff, 0xfb, 0x1f, 0xcf,
-0xdb, 0x7f, 0xff, 0xf7, 0x8f, 0xdf, 0xe7, 0x7f,
-0xf6, 0xff, 0x6f, 0xff, 0x9f, 0xff, 0xf3, 0xff,
-0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xc9, 0xff, 0xdf, 0xea, 0xfd, 0xf2, 0xdf,
-0xcb, 0xfd, 0xf7, 0xff, 0xff, 0xd3, 0xf7, 0xdf,
-0xee, 0xff, 0xff, 0x7f, 0xfd, 0xbf, 0xde, 0xff,
-0xdf, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xeb, 0x7d, 0xff, 0xf7, 0xff, 0x7e,
-0xfa, 0xfb, 0xea, 0xfd, 0xfe, 0xff, 0xff, 0xef,
-0xef, 0xbb, 0xef, 0x3d, 0xff, 0xfb, 0x6f, 0xbf,
-0xfc, 0x4f, 0xfe, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x25, 0xbd, 0xff, 0xab,
-0xfe, 0xbd, 0xdf, 0xa7, 0xeb, 0xaa, 0xf6, 0x27,
-0xa7, 0xe7, 0x79, 0x97, 0xff, 0xe3, 0xd8, 0xf7,
-0xfe, 0xb7, 0xeb, 0xdf, 0xdf, 0xdd, 0xaf, 0x3f,
-0xf8, 0xff, 0xfb, 0xff, 0xff, 0xf5, 0xff, 0x5f,
-0xf7, 0xbd, 0xff, 0xff, 0xf5, 0xf7, 0x7f, 0xeb,
-0x6f, 0xde, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfe,
-0xff, 0xff, 0xed, 0xfd, 0x97, 0xff, 0xbf, 0xed,
-0xff, 0xff, 0xbe, 0xff, 0xff, 0xbf, 0xfa, 0x9f,
-0xff, 0x37, 0x3e, 0xef, 0x6c, 0xef, 0xaf, 0x87,
-0xef, 0xb6, 0x7e, 0xf2, 0xff, 0x7f, 0xfc, 0xfe,
-0x7e, 0xef, 0xfe, 0xff, 0xfd, 0xef, 0xff, 0xde,
-0xfe, 0x3f, 0xfd, 0xff, 0xff, 0xef, 0xff, 0xff,
-0x14, 0xfb, 0x9b, 0x77, 0xfd, 0x3f, 0x7f, 0xcf,
-0xa7, 0xff, 0xff, 0x3f, 0xdf, 0xff, 0xff, 0xff,
-0x5f, 0xde, 0xfb, 0xe3, 0xe7, 0xfb, 0xf3, 0xbd,
-0xbf, 0x3f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xf6, 0xff, 0xfb, 0xc7, 0xb7, 0xff, 0xfb,
-0x7b, 0xfe, 0xeb, 0x7f, 0xfb, 0xfe, 0xdf, 0xff,
-0xff, 0xff, 0xd9, 0xf5, 0x7f, 0xfd, 0xff, 0xfb,
-0xaf, 0xbf, 0xfb, 0xff, 0xff, 0xf7, 0xfb, 0xff,
-0xdf, 0xff, 0xfc, 0x1f, 0xff, 0x3f, 0xff, 0x7f,
-0xf4, 0x7f, 0x37, 0xce, 0xd6, 0xf7, 0xf7, 0x3f,
-0xcf, 0x73, 0xff, 0xf6, 0x4f, 0x7f, 0xbf, 0xff,
-0xfd, 0xcf, 0xb3, 0xfc, 0xff, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xd3, 0xff, 0xf6, 0xe7,
-0xbf, 0xff, 0xef, 0xf7, 0x3d, 0xf6, 0xf7, 0x7f,
-0xf7, 0xfd, 0xef, 0x7d, 0xff, 0xed, 0xdf, 0xfe,
-0xff, 0x7f, 0x7d, 0xff, 0x7f, 0xdd, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3b, 0xee,
-0xfb, 0xcc, 0xd7, 0xf5, 0xfe, 0xbf, 0x9f, 0xfb,
-0xfe, 0xc8, 0x3c, 0xbb, 0xe5, 0xfe, 0xeb, 0xbe,
-0xd7, 0xff, 0xdb, 0xff, 0x9b, 0xab, 0xb9, 0xef,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xed,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xb6, 0x6f, 0xdf,
-0xfa, 0xee, 0xaf, 0xee, 0xff, 0xef, 0xf7, 0xff,
-0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xb5, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xaf, 0xfb,
-0xfd, 0xff, 0xff, 0xff, 0xfd, 0x5f, 0xff, 0x7f,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff,
-0xfb, 0xff, 0xf7, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xfe, 0x8f, 0xf5, 0xff, 0xb3, 0xef, 0xff,
-0x3f, 0xef, 0xbe, 0x7c, 0xff, 0x7e, 0xff, 0xfd,
-0xff, 0x9b, 0x27, 0xbf, 0xfc, 0xff, 0xff, 0xcf,
-0xff, 0xef, 0x7b, 0xc7, 0xcf, 0xff, 0xfc, 0xff,
-0xff, 0xff, 0xfd, 0x44, 0xac, 0xff, 0xff, 0x7c,
-0xf9, 0xee, 0x7f, 0xf7, 0xcf, 0x3f, 0x3f, 0xde,
-0x3f, 0xfc, 0xf9, 0xde, 0xb7, 0xe6, 0xcf, 0xfe,
-0xbd, 0xff, 0xfd, 0xff, 0xfc, 0xcf, 0xff, 0xff,
-0xdf, 0xff, 0xff, 0xfd, 0x44, 0xd5, 0xff, 0xf3,
-0xff, 0xaf, 0xff, 0x1f, 0xb5, 0xfc, 0xff, 0xfb,
-0xfb, 0xff, 0xff, 0xef, 0xee, 0xfe, 0xff, 0xef,
-0xff, 0xff, 0xf5, 0xfd, 0x2f, 0x2b, 0x9e, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xe7, 0xbc, 0x5b, 0xf9,
-0xfe, 0x7f, 0xf5, 0xe7, 0xf9, 0xff, 0xff, 0x3f,
-0xcd, 0xf9, 0x5f, 0xff, 0xf7, 0xff, 0x7f, 0xdf,
-0x37, 0xff, 0xff, 0xfe, 0x7f, 0x95, 0xe5, 0x7b,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xf1,
-0x7f, 0xdf, 0x7f, 0x6c, 0xbd, 0x7f, 0xff, 0x7a,
-0xff, 0xff, 0x3f, 0xcb, 0xb7, 0xdf, 0x93, 0x2f,
-0xfb, 0x5f, 0xbb, 0x2f, 0xff, 0xff, 0xed, 0xff,
-0xaf, 0x8f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xea, 0x6d, 0xe3, 0xe6, 0xff, 0xd5, 0xef, 0x7b,
-0xff, 0x5f, 0xff, 0x87, 0x61, 0xdf, 0xff, 0xdd,
-0xe5, 0x7b, 0x7f, 0xfd, 0xe7, 0x7f, 0xff, 0xff,
-0xff, 0xf5, 0x51, 0xda, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0xcd, 0xff, 0xfd, 0xff, 0xda, 0xfb,
-0xfe, 0xbf, 0xeb, 0xff, 0xf6, 0xbd, 0x2f, 0xfe,
-0xfe, 0xd0, 0xbe, 0xcf, 0xff, 0xda, 0xbf, 0xff,
-0xfb, 0xfa, 0xde, 0xbf, 0xaf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xb5, 0xbf, 0xfd, 0xff, 0xfd,
-0x5e, 0x9f, 0xf7, 0x7d, 0x7f, 0xfc, 0x57, 0xa5,
-0xff, 0xff, 0x66, 0xd7, 0xfd, 0xdf, 0xff, 0xdf,
-0xff, 0xfd, 0xff, 0x5f, 0xd7, 0xf5, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf8, 0x17, 0xe7, 0xf3,
-0x7f, 0xff, 0xb7, 0xed, 0xf7, 0xfc, 0xdf, 0x9f,
-0xe7, 0xf1, 0xf5, 0xfd, 0x27, 0xed, 0xf4, 0x7f,
-0x9f, 0xed, 0xf9, 0xfc, 0x7f, 0x37, 0xcd, 0xfb,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x77, 0xff,
-0xff, 0xff, 0xff, 0xf9, 0xfe, 0x7b, 0x9f, 0x7f,
-0xff, 0xff, 0xfd, 0xfe, 0x7f, 0xaf, 0xfe, 0x7e,
-0xa7, 0xf9, 0xfe, 0xff, 0xbf, 0x7f, 0xdb, 0xfe,
-0xff, 0x8f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xac,
-0x7f, 0xfe, 0xf5, 0xb5, 0x6f, 0xfb, 0xfe, 0x7d,
-0xbf, 0x6f, 0xfb, 0xfe, 0xff, 0x8d, 0x67, 0xfb,
-0x57, 0x9d, 0x6f, 0xfb, 0x66, 0xe5, 0xbf, 0x6f,
-0x1b, 0x46, 0xd5, 0xbf, 0xef, 0xfb, 0xfe, 0xff,
-0xfb, 0x9f, 0xfe, 0xff, 0xbf, 0xff, 0xfb, 0xff,
-0xf1, 0xbe, 0x6f, 0xff, 0xfe, 0xfb, 0xfe, 0xef,
-0xff, 0xfe, 0xbf, 0xef, 0xff, 0xf6, 0xff, 0xbe,
-0x6f, 0xbb, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0x8b, 0xff, 0x7f, 0xef, 0xff, 0xfd,
-0xff, 0xff, 0xdf, 0xfb, 0xff, 0xff, 0xbf, 0xff,
-0xef, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0x7f,
-0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf3, 0x7f, 0xff, 0xff, 0xef,
-0xff, 0xbd, 0xed, 0x2f, 0x7f, 0xf9, 0xbf, 0xff,
-0x7f, 0xe7, 0xd3, 0xff, 0xfe, 0xe7, 0xf7, 0xff,
-0xff, 0x7f, 0xde, 0xff, 0xf5, 0xfb, 0x7f, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0xff, 0xf3,
-0xfb, 0xf7, 0x7f, 0xdd, 0xab, 0x7a, 0xbf, 0xff,
-0xdd, 0xa2, 0x7e, 0xfa, 0xbf, 0xdf, 0xfe, 0xfa,
-0x7d, 0xdd, 0x37, 0x6e, 0xbe, 0xae, 0xaf, 0xa7,
-0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0xff,
-0xff, 0xef, 0xfb, 0x7f, 0xff, 0x3d, 0xfd, 0x77,
-0xf7, 0xff, 0xf5, 0xff, 0xff, 0x5f, 0xd7, 0xf9,
-0x7f, 0xfe, 0xff, 0xf5, 0xef, 0x77, 0xff, 0xd7,
-0xf5, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xbf, 0xfe, 0xfe, 0x6f, 0x9f, 0xe7, 0xe9, 0xbe,
-0x6f, 0x9f, 0xe7, 0xf8, 0xbe, 0x77, 0x8f, 0xe2,
-0xf9, 0xa7, 0x9f, 0xc7, 0xf8, 0xbe, 0x2f, 0x9b,
-0xc2, 0xf8, 0xba, 0x3f, 0x9f, 0xe7, 0xf9, 0xfe,
-0x7f, 0x67, 0xff, 0xff, 0xfe, 0x7f, 0x9f, 0xfd,
-0xd7, 0xff, 0xff, 0xff, 0xcf, 0xf7, 0xfe, 0xfd,
-0x1f, 0xef, 0xfe, 0xff, 0x7e, 0x6f, 0xf7, 0xfd,
-0xfd, 0x7e, 0x5f, 0xf7, 0xf5, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xf8, 0xff, 0xbf, 0xff, 0xbf, 0xff,
-0xff, 0xea, 0xff, 0xff, 0xff, 0xfb, 0xfa, 0xff,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0xaf, 0x6d, 0xfb,
-0xfe, 0xff, 0xaf, 0xeb, 0xfa, 0xfa, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0x8f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x5f, 0xf7, 0xf7, 0xff, 0xbf,
-0xdf, 0xfb, 0xf5, 0xfd, 0x3f, 0xb3, 0xff, 0xfd,
-0x7f, 0x5f, 0xf7, 0xff, 0xef, 0x7f, 0xdd, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xbf, 0xfd,
-0x7e, 0x7f, 0xdf, 0xf7, 0xeb, 0x7e, 0xdf, 0xdf,
-0xf7, 0xfb, 0x7f, 0xde, 0x97, 0xa7, 0xfb, 0x5f,
-0xdd, 0xa7, 0xe9, 0xfa, 0xdf, 0xb7, 0xad, 0xef,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf1, 0x7f,
-0xfd, 0xff, 0x4f, 0x73, 0xb6, 0x7d, 0xaf, 0x6f,
-0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x67, 0xfd, 0xf7, 0xff, 0xff, 0xff, 0x5b, 0xf7,
-0x7c, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee,
-0x2f, 0xff, 0xba, 0xf6, 0xbf, 0xaf, 0x6a, 0xda,
-0xfe, 0x37, 0xa7, 0xcb, 0x72, 0x7e, 0xbf, 0xab,
-0xeb, 0x56, 0xbf, 0xae, 0xeb, 0x7a, 0xfe, 0xb7,
-0x8e, 0xeb, 0xba, 0xfc, 0xbf, 0xaf, 0xeb, 0xfa,
-0xff, 0x49, 0xff, 0xff, 0xdb, 0x3f, 0xfb, 0xdf,
-0x74, 0xf8, 0xdf, 0x37, 0xfb, 0x3f, 0xff, 0x6e,
-0xcd, 0xf3, 0xfd, 0x16, 0xdd, 0xff, 0xfc, 0xf7,
-0xff, 0x37, 0xbf, 0xff, 0xef, 0xff, 0xcf, 0xff,
-0xff, 0xff, 0xfe, 0x9f, 0xfd, 0xff, 0xbf, 0xfd,
-0xff, 0xef, 0x7f, 0xff, 0xbe, 0xed, 0xdf, 0xff,
-0x7f, 0xef, 0xb5, 0x3b, 0xdf, 0x7f, 0xff, 0x7f,
-0xff, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xf7, 0x7e, 0x64, 0xff, 0xff, 0xbc,
-0xfb, 0xcf, 0xf7, 0x6b, 0x6f, 0xbb, 0xdf, 0xff,
-0xfe, 0xfd, 0xaf, 0x5f, 0xc7, 0x9b, 0xfe, 0xfe,
-0xfb, 0x8d, 0xff, 0xfb, 0xfa, 0xff, 0xfe, 0x7f,
-0xfc, 0xff, 0xff, 0xff, 0xff, 0xee, 0x7f, 0x78,
-0xbf, 0xf7, 0x8f, 0xe5, 0xfa, 0xfe, 0xbf, 0xa7,
-0x6f, 0xfe, 0xff, 0xff, 0xad, 0xdf, 0xfe, 0x3c,
-0xff, 0xe3, 0xff, 0xf7, 0xfd, 0xa6, 0xe9, 0xfa,
-0xfe, 0xbf, 0xff, 0x7f, 0xff, 0xff, 0xef, 0x5f,
-0xfd, 0x7f, 0xbf, 0xd7, 0xdf, 0xf5, 0x6f, 0xfb,
-0x75, 0xff, 0xbf, 0x7f, 0xff, 0xf6, 0x7f, 0xfb,
-0xdf, 0xef, 0xfe, 0xff, 0xfb, 0xff, 0xf5, 0xd7,
-0x7d, 0xdf, 0xfb, 0xbf, 0x7f, 0xff, 0xff, 0xff,
-0xc9, 0xff, 0xff, 0xbc, 0x57, 0x3f, 0xef, 0xfd,
-0x5a, 0xf7, 0x9a, 0xcf, 0x7b, 0xbe, 0x7f, 0xdf,
-0xcb, 0xec, 0xff, 0xff, 0xed, 0xfb, 0xaf, 0x5f,
-0xff, 0xbf, 0x6f, 0x7b, 0xff, 0xff, 0xfd, 0xff,
-0xff, 0xfb, 0x7f, 0xff, 0x9f, 0x7f, 0xdf, 0xff,
-0xbf, 0xfe, 0xbf, 0xcf, 0xff, 0xbc, 0xff, 0x7f,
-0xd7, 0xf5, 0xe9, 0x77, 0xfb, 0xf3, 0xb8, 0xbf,
-0x5f, 0xdf, 0xfe, 0xff, 0xff, 0xef, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0x4e, 0xbf, 0xfd, 0xda, 0xde,
-0xbf, 0xd7, 0x7f, 0xff, 0xf6, 0xff, 0xef, 0x6f,
-0xcc, 0xff, 0xbf, 0xff, 0x9b, 0xff, 0xdd, 0xbf,
-0xbf, 0xff, 0xfe, 0xff, 0xef, 0xfd, 0xff, 0xdf,
-0xff, 0xfe, 0xff, 0xff, 0xc1, 0x76, 0xff, 0x7c,
-0xfb, 0x3f, 0xfd, 0xd3, 0xd8, 0xfd, 0xaf, 0xcc,
-0xf3, 0x7c, 0xf6, 0x3b, 0x9f, 0xf4, 0xbb, 0x37,
-0xff, 0xef, 0xd0, 0x7f, 0x3f, 0xff, 0xb3, 0xff,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3e, 0xff,
-0xff, 0xdc, 0xe7, 0xdf, 0xef, 0x7d, 0xf7, 0x77,
-0xed, 0xf7, 0x79, 0xdf, 0xf7, 0xfb, 0xff, 0xdf,
-0xf7, 0xdf, 0xff, 0xff, 0xde, 0x0d, 0xff, 0xfd,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
-0xff, 0xbb, 0xfb, 0xff, 0xe6, 0xdf, 0x46, 0x6b,
-0xff, 0xfb, 0x9f, 0xef, 0xfb, 0xce, 0x73, 0xcb,
-0xb9, 0xde, 0xff, 0xfe, 0xbf, 0xfd, 0xf7, 0x7e,
-0xdf, 0xef, 0xbf, 0x7f, 0xff, 0xff, 0xff, 0xfe,
-0xee, 0x7f, 0xff, 0x4e, 0xbb, 0xef, 0x73, 0x96,
-0xfe, 0xb2, 0xff, 0xf3, 0xbf, 0xd5, 0xbf, 0xef,
-0xfd, 0xff, 0x3f, 0x2e, 0x7f, 0xdf, 0xff, 0xbf,
-0xd7, 0xf7, 0xf2, 0xff, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xdb, 0x97, 0xff, 0xff, 0xff, 0xfb, 0xfe,
-0xff, 0xd3, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xef,
-0xf5, 0x7d, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xd7, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xa8, 0xff, 0xfd, 0xfb, 0xff,
-0xdd, 0x73, 0xff, 0x1f, 0x35, 0xcf, 0xbf, 0xff,
-0xfb, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xfc, 0xb1,
-0xff, 0xff, 0xff, 0xc7, 0xf7, 0xec, 0xfb, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xc4, 0x4b, 0xfc, 0xff,
-0xbf, 0xff, 0xa7, 0xfd, 0xff, 0xff, 0xe7, 0xf7,
-0xfc, 0xf3, 0x3f, 0xf5, 0x9e, 0xff, 0xff, 0xff,
-0x91, 0xff, 0xff, 0x9f, 0xfb, 0xff, 0xff, 0x39,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x4d, 0x7f,
-0xef, 0xeb, 0xd7, 0xc7, 0xef, 0xae, 0x7e, 0x1e,
-0x32, 0xff, 0xef, 0xeb, 0x4f, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xad, 0x7f, 0x5f, 0x7b, 0xff, 0xf9,
-0xfd, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xed,
-0xbf, 0xf7, 0xcd, 0x7b, 0xff, 0xff, 0xf5, 0xff,
-0xf3, 0x96, 0x5f, 0xf7, 0xcd, 0x79, 0xfe, 0x5f,
-0x3f, 0xff, 0xfc, 0xdf, 0x9f, 0xe7, 0xff, 0xff,
-0xff, 0xbf, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xdf, 0x9f, 0xff, 0xbf, 0xad, 0x9f, 0xff, 0xff,
-0xff, 0xbe, 0xdd, 0xfb, 0xfe, 0xbf, 0xa7, 0xfd,
-0xff, 0x7f, 0xa5, 0xff, 0xfa, 0xff, 0xff, 0xff,
-0xff, 0xf7, 0xfa, 0xfb, 0x3f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xb6, 0xff, 0x9d, 0xe5, 0x93, 0xda,
-0xf6, 0x9f, 0xef, 0x7f, 0x1f, 0x7f, 0xdf, 0xe4,
-0x7f, 0xde, 0xff, 0xf5, 0xbf, 0xff, 0x56, 0xbd,
-0xef, 0x7f, 0xf4, 0xff, 0xf5, 0xa7, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0x7c, 0x7f, 0xee, 0xf2, 0xb7,
-0xff, 0xff, 0xda, 0xfb, 0xff, 0xf7, 0xeb, 0xfa,
-0xda, 0xbd, 0xff, 0xbf, 0xfe, 0xbf, 0xff, 0xeb,
-0x9f, 0xe3, 0xff, 0xff, 0xff, 0x9f, 0xfe, 0xff,
-0xfd, 0x5f, 0xff, 0xff, 0xf9, 0x93, 0xff, 0x7e,
-0x57, 0xf7, 0xff, 0xfd, 0x5f, 0xff, 0xfe, 0xfd,
-0x7f, 0x7f, 0xc3, 0x1e, 0xff, 0xff, 0xdb, 0xaf,
-0xfd, 0x7b, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff,
-0xff, 0xef, 0xdf, 0xf9, 0xfe, 0xff, 0x37, 0xef,
-0xd9, 0xfd, 0xff, 0x7f, 0x5f, 0xdb, 0x7e, 0xdf,
-0x47, 0xf3, 0x7f, 0xbf, 0xa7, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6,
-0x7f, 0xff, 0xff, 0xfb, 0xff, 0xbf, 0xfb, 0xdb,
-0xfe, 0xbf, 0xff, 0x7f, 0xc9, 0xee, 0xf9, 0x9f,
-0xe7, 0xe6, 0x7d, 0xbf, 0xef, 0xf9, 0xfe, 0xbf,
-0xbf, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xe7, 0xff, 0xef, 0xdb, 0xfe, 0xf9, 0xbd,
-0x6e, 0xdb, 0xbe, 0xf5, 0xbd, 0x6f, 0x59, 0x36,
-0x3f, 0xbf, 0x78, 0xfe, 0xe5, 0xb3, 0x6d, 0xfb,
-0x96, 0xed, 0xbd, 0x6e, 0xfb, 0x7e, 0xff, 0xbf,
-0xef, 0xdf, 0x99, 0xff, 0xff, 0xdb, 0xfe, 0xfd,
-0xff, 0xef, 0x9b, 0xff, 0xff, 0xbe, 0xef, 0xbb,
-0xf6, 0xf3, 0xff, 0x6f, 0xef, 0xfb, 0xbf, 0x7f,
-0xff, 0xfe, 0xff, 0x3f, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdb, 0xdd, 0x3f, 0xff, 0xfd, 0xff,
-0x7f, 0xff, 0xf7, 0xfd, 0xff, 0xff, 0xbf, 0xfb,
-0xfe, 0xff, 0x7f, 0xff, 0xf7, 0xff, 0xfe, 0xef,
-0xff, 0xff, 0xfe, 0xff, 0xef, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0x57, 0xfe, 0xff,
-0xfd, 0xff, 0x7f, 0xff, 0xdf, 0xbf, 0xff, 0xdf,
-0x5f, 0xd7, 0xfe, 0x7f, 0x1f, 0xef, 0xe4, 0x6f,
-0x7f, 0x5e, 0xdf, 0xf5, 0xff, 0xbf, 0x5f, 0x9f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xff,
-0xff, 0xff, 0xcf, 0xf7, 0xdd, 0xfe, 0xad, 0xdf,
-0xff, 0x7a, 0x9a, 0xaf, 0xef, 0xab, 0xff, 0xfe,
-0xaf, 0xeb, 0xe9, 0xfe, 0x7c, 0x9f, 0x7f, 0xe9,
-0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0x4f, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xfc,
-0xff, 0x7e, 0xfd, 0x77, 0x5f, 0xff, 0xb5, 0x6f,
-0xff, 0x9d, 0xbd, 0xfd, 0x7f, 0xff, 0xf7, 0xff,
-0xed, 0x7f, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe3, 0xfe, 0xff, 0xe7, 0xf9, 0xfe, 0x7f,
-0x1f, 0xe7, 0xf9, 0xfe, 0x6f, 0x8b, 0xe7, 0x78,
-0xfe, 0x7f, 0x9f, 0xf9, 0xbe, 0x2f, 0x9f, 0xe6,
-0xf9, 0xfe, 0x2f, 0x8f, 0xe7, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe7, 0xe2, 0x7f, 0xff, 0xbf, 0xff, 0xfb,
-0xfe, 0x79, 0x7f, 0x4f, 0xff, 0xfd, 0xff, 0x7f,
-0xe7, 0xd7, 0xff, 0xff, 0xff, 0xf3, 0xf4, 0x7d,
-0x1f, 0x4f, 0xff, 0xfc, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xbf, 0xef, 0xe9, 0xff, 0xff, 0xbf,
-0xaf, 0xfb, 0xfa, 0xff, 0xff, 0xff, 0xfe, 0xfe,
-0xbf, 0xaf, 0xe9, 0xff, 0xfe, 0xbf, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xbd, 0xff, 0x7f, 0x7f,
-0xf7, 0xfd, 0xff, 0xff, 0x5f, 0xdf, 0xfb, 0xff,
-0xcf, 0xdf, 0xff, 0xff, 0x7f, 0xff, 0xf3, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xbf,
-0xff, 0xdf, 0xfd, 0xfd, 0xff, 0x77, 0xb7, 0xa7,
-0xfb, 0xfe, 0xde, 0xf7, 0xfd, 0xeb, 0x7b, 0x7f,
-0xfd, 0xff, 0x7e, 0x7f, 0xdf, 0xe7, 0xef, 0xfa,
-0x7e, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x77, 0xff, 0xff, 0xf4, 0xfd, 0x3f, 0xcf, 0xda,
-0xf7, 0xff, 0x3d, 0x7f, 0xdb, 0xf2, 0x7d, 0xff,
-0xff, 0x7a, 0xbf, 0xff, 0xff, 0xdf, 0xf7, 0xbd,
-0xbb, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe0, 0xff, 0xff, 0xaf, 0x6a, 0xda, 0xde,
-0x97, 0xaf, 0xe2, 0xfa, 0x6e, 0x1f, 0xae, 0xe8,
-0xba, 0xfe, 0xad, 0xeb, 0xf8, 0xfe, 0x9b, 0xaf,
-0xeb, 0xfa, 0xde, 0xbf, 0x8b, 0xcb, 0xfa, 0xfe,
-0xbf, 0xaf, 0xff, 0x5d, 0xff, 0xcd, 0xff, 0xbf,
-0xfb, 0xff, 0x36, 0xaf, 0xbe, 0xbf, 0xef, 0x36,
-0xfe, 0xdd, 0xdf, 0xef, 0xfd, 0xfc, 0x7f, 0xff,
-0xfe, 0xed, 0xb2, 0xff, 0x3d, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xa1, 0xef, 0xff, 0xff,
-0xfd, 0xef, 0x7e, 0xbf, 0xff, 0x7d, 0x6f, 0x7f,
-0xdf, 0x77, 0xff, 0xba, 0xfe, 0xdf, 0xfc, 0xff,
-0xff, 0xff, 0xef, 0xff, 0x7b, 0xae, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0x5b, 0xbd,
-0x5f, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff,
-0xef, 0xdf, 0xff, 0xfb, 0xff, 0xff, 0xed, 0xf7,
-0x37, 0xff, 0x7f, 0xff, 0xff, 0xfd, 0xff, 0x7f,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xef,
-0xff, 0xff, 0xef, 0xfb, 0x7c, 0xd9, 0xa7, 0xcf,
-0xf3, 0xf6, 0x3c, 0x8f, 0xe2, 0xfa, 0x7c, 0x8f,
-0x7b, 0xde, 0xf6, 0xbb, 0xaf, 0x5f, 0xda, 0xfe,
-0xbe, 0xef, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xbd, 0xff, 0xff, 0xf7, 0x7f, 0xef, 0xfb, 0xfd,
-0xff, 0xbd, 0xed, 0x5e, 0x7f, 0xde, 0xdf, 0x5f,
-0xf7, 0xff, 0xf7, 0x77, 0xfb, 0xfd, 0xff, 0xf5,
-0x99, 0x67, 0x7b, 0xff, 0xfb, 0xff, 0xff, 0xff,
-0xff, 0xfa, 0x3f, 0xfb, 0xf7, 0xfe, 0x3b, 0xef,
-0xfe, 0xfa, 0xc6, 0xfb, 0xff, 0xfe, 0xbd, 0xeb,
-0xbf, 0xea, 0xee, 0x3f, 0xfb, 0xaa, 0xfa, 0xff,
-0xcf, 0xfb, 0xfc, 0xf7, 0xfb, 0xfd, 0xff, 0xff,
-0xef, 0xff, 0xfe, 0xc7, 0xff, 0xbf, 0xff, 0xfd,
-0xff, 0xff, 0xdb, 0xf7, 0xff, 0xef, 0x5b, 0xce,
-0xf7, 0xdf, 0xbf, 0xef, 0xdf, 0xfd, 0xff, 0xfb,
-0xf9, 0xff, 0xfd, 0xff, 0x7c, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff,
-0xff, 0xb1, 0xfe, 0xbe, 0xff, 0xbd, 0xf5, 0xff,
-0xfb, 0xd4, 0xdd, 0x7d, 0xbd, 0xdb, 0xed, 0xb5,
-0xfd, 0xff, 0xff, 0xff, 0xe7, 0xfb, 0xff, 0x9b,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x9b, 0xed,
-0xff, 0xfd, 0x41, 0xf0, 0xfc, 0x0d, 0xcb, 0xf3,
-0xff, 0xed, 0x3f, 0xcc, 0xf1, 0xf8, 0xfe, 0x47,
-0xf3, 0xf7, 0xee, 0x3f, 0xcf, 0xde, 0xff, 0xf7,
-0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
-0xff, 0xff, 0xdf, 0xff, 0xdd, 0xdf, 0xfb, 0xf9,
-0xef, 0x7f, 0xff, 0xed, 0xfd, 0xff, 0xbd, 0xde,
-0xef, 0x7d, 0x7b, 0x7a, 0x36, 0xfd, 0xef, 0xfb,
-0xfb, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf8, 0x7f, 0xfb, 0xff, 0xf7, 0xbf, 0x79, 0xf3,
-0xef, 0x5c, 0xe1, 0x2c, 0xff, 0x7f, 0x8e, 0xd7,
-0xf8, 0xfb, 0xfd, 0xe3, 0xff, 0xfe, 0xf2, 0x1b,
-0xf7, 0xaf, 0xfc, 0x3f, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x07, 0xff, 0xff, 0xcb, 0xfe, 0x7f,
-0xb7, 0xf7, 0xfa, 0xff, 0xde, 0x1f, 0x8f, 0xdb,
-0xfe, 0xbd, 0xbf, 0xfb, 0xfc, 0xfe, 0x9f, 0xff,
-0xfb, 0xba, 0xff, 0xff, 0xef, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xe5, 0x7b, 0x7f, 0xff, 0xff,
-0xbf, 0xcd, 0xff, 0x7f, 0x7f, 0x7f, 0xff, 0xff,
-0xfd, 0x7f, 0xbf, 0xcf, 0xff, 0x5f, 0xdf, 0xff,
-0xef, 0xff, 0x7f, 0x7e, 0xff, 0xfb, 0xfd, 0x7f,
-0xff, 0xff, 0xff, 0xfe, 0xfa, 0xaf, 0xff, 0xff,
-0xbf, 0xfd, 0xff, 0xde, 0xc7, 0xbf, 0xff, 0xff,
-0x3f, 0xfc, 0xbf, 0xfc, 0xcf, 0xff, 0xf7, 0xff,
-0x9f, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xc2, 0xbf,
-0xcf, 0xf3, 0xff, 0xff, 0xff, 0xca, 0xf3, 0xff,
-0xff, 0xd7, 0xfe, 0xa1, 0xfe, 0xa3, 0xdf, 0xfd,
-0xbc, 0xf3, 0xff, 0xf6, 0xf7, 0xff, 0x73, 0x3f,
-0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x44,
-0xf7, 0xfe, 0xf4, 0xbd, 0x7d, 0xeb, 0xd2, 0xfe,
-0xb9, 0xaf, 0x3f, 0xff, 0xf2, 0xbf, 0xff, 0xff,
-0xcf, 0xf9, 0xfe, 0x7f, 0x7f, 0xff, 0xf9, 0xfe,
-0x6b, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7,
-0xbd, 0x5b, 0xff, 0x7e, 0x57, 0x9f, 0xcd, 0x7b,
-0x5e, 0xd7, 0xf5, 0xe7, 0xff, 0xfe, 0x57, 0xff,
-0xff, 0x7b, 0xff, 0xbf, 0xcf, 0xfb, 0xff, 0xdf,
-0x3f, 0xed, 0x79, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xfc, 0xfd, 0xe9, 0xff, 0xdb, 0xfa, 0x7e, 0xfd,
-0x3d, 0xa9, 0xa2, 0x7d, 0xb5, 0x77, 0x4b, 0xfb,
-0xcd, 0xff, 0xfd, 0xbf, 0xfa, 0xb5, 0x7f, 0xad,
-0xf2, 0xcd, 0xdc, 0x27, 0xfb, 0xf7, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xe5, 0x6f, 0xd1, 0xde, 0x4d,
-0xbd, 0xe7, 0xbd, 0x3e, 0x4e, 0x1e, 0x6f, 0xd9,
-0x5f, 0x76, 0xbd, 0xef, 0x5b, 0xf7, 0xd6, 0xef,
-0x6b, 0x54, 0x5a, 0xbf, 0xa4, 0xf9, 0xf8, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0xa7, 0xff, 0xef,
-0xab, 0xff, 0xf2, 0xbf, 0xaf, 0xab, 0xfa, 0xdf,
-0xff, 0xaf, 0xeb, 0xff, 0xfb, 0xed, 0xff, 0xda,
-0xdb, 0xff, 0xf7, 0x4b, 0xff, 0xfe, 0xbe, 0xad,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x85, 0xff,
-0xf7, 0xfd, 0x3f, 0xfc, 0x57, 0xf4, 0xfd, 0x3f,
-0x5f, 0xff, 0xf5, 0xfd, 0xdf, 0xff, 0xff, 0x9f,
-0xf1, 0x5f, 0xf7, 0xfa, 0xe9, 0x7f, 0xff, 0xd3,
-0xf7, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0x9f, 0xff, 0xf9, 0xf6, 0xdf, 0xff, 0xcf, 0xdf,
-0xf6, 0x7f, 0x7f, 0xe7, 0xff, 0xf4, 0xdf, 0xff,
-0x49, 0xfe, 0xff, 0x37, 0xed, 0xdf, 0xfc, 0x7f,
-0xbf, 0x7f, 0xf7, 0xf6, 0xdf, 0xff, 0xff, 0xff,
-0xfe, 0xb7, 0xfe, 0x7f, 0x9f, 0xef, 0xf9, 0xfe,
-0xbf, 0xff, 0xff, 0xfb, 0xfe, 0x7f, 0xfe, 0x67,
-0xf9, 0xe7, 0xff, 0xfb, 0xfb, 0xfe, 0xf9, 0xff,
-0xff, 0xfa, 0xfe, 0xfd, 0x9e, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xe6, 0x7f, 0xfe, 0xff, 0x93, 0x6f,
-0xdb, 0x96, 0x7f, 0x9d, 0x6f, 0x9b, 0xfe, 0xff,
-0x9d, 0x6f, 0xf8, 0x77, 0xbf, 0x6e, 0xdb, 0xb6,
-0x35, 0xbd, 0x6e, 0x59, 0xb6, 0xff, 0x9b, 0xef,
-0xfb, 0xfe, 0xff, 0xfa, 0xdb, 0xff, 0xff, 0xff,
-0xdf, 0xf3, 0xee, 0xff, 0xff, 0xff, 0x9b, 0xff,
-0xff, 0xfe, 0xef, 0xfb, 0xec, 0xff, 0x6f, 0xb3,
-0xf6, 0xf3, 0xfc, 0xef, 0xfb, 0xf6, 0xfb, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0x83, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xbb, 0xfd, 0xff, 0xbf, 0xfb,
-0xfe, 0xff, 0x7f, 0xff, 0xef, 0xfb, 0xff, 0x7f,
-0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x7f,
-0xfd, 0x7f, 0x4f, 0xff, 0xff, 0xfd, 0x3f, 0x4e,
-0xdf, 0xfe, 0xfd, 0x7f, 0xe7, 0xd7, 0xe4, 0x7a,
-0xff, 0xf7, 0xbf, 0xff, 0x1b, 0x5f, 0xfb, 0xb4,
-0xed, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x6f, 0xff, 0xa7, 0xeb, 0xf7, 0x7f, 0xef, 0xaf,
-0x6b, 0xfb, 0xbf, 0xfd, 0xa7, 0x7c, 0xfa, 0x76,
-0x8f, 0xfd, 0xff, 0x3f, 0xdf, 0xb3, 0x6a, 0xff,
-0xfe, 0xbd, 0xaa, 0xeb, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe0, 0xff, 0xef, 0xfd, 0x7b, 0xfc, 0xf7,
-0xf5, 0xfd, 0x7f, 0x5f, 0xbf, 0xfd, 0xed, 0xf7,
-0x5d, 0xf7, 0xfb, 0xff, 0xff, 0xff, 0xbd, 0x6d,
-0x77, 0xff, 0xd7, 0xf7, 0xfd, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xbf, 0xff, 0xfe, 0x2f, 0x9b,
-0xe3, 0xf8, 0xbe, 0x2f, 0x8f, 0xe7, 0xf9, 0xbe,
-0x37, 0x8f, 0xe2, 0x79, 0xff, 0x9f, 0xe7, 0xf8,
-0xfe, 0x2f, 0x9f, 0xe2, 0xf9, 0xbe, 0x2f, 0x9f,
-0xe7, 0xf9, 0xfe, 0x7f, 0x27, 0xff, 0xd7, 0xf5,
-0xff, 0xbf, 0xdf, 0xf7, 0xf4, 0xff, 0xff, 0xff,
-0xd3, 0xfe, 0xfd, 0x7f, 0xc7, 0xfe, 0xff, 0xff,
-0x7f, 0xf3, 0xfd, 0xff, 0xff, 0x5f, 0xdf, 0xf5,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0xff, 0xfa,
-0xfe, 0xbf, 0xf7, 0xfb, 0xfb, 0xfe, 0x9f, 0xff,
-0xff, 0xfa, 0x7f, 0xff, 0xaf, 0xeb, 0xff, 0xdf,
-0xff, 0xff, 0xfb, 0xfe, 0xbf, 0xff, 0xeb, 0xfb,
-0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xcf,
-0xf7, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xdf, 0xf7,
-0xfd, 0xff, 0xff, 0xdf, 0xfb, 0xf5, 0xff, 0x7f,
-0x9f, 0xff, 0xff, 0xff, 0xcf, 0xf7, 0xf7, 0xff,
-0x7f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xc3, 0xff, 0xff, 0xfa, 0xff, 0xdf, 0xad, 0xef,
-0xfe, 0x7e, 0xf7, 0xef, 0xf9, 0xff, 0xde, 0xbf,
-0xed, 0xff, 0x7f, 0xf7, 0xf7, 0xef, 0x7b, 0xdf,
-0xff, 0xb7, 0xff, 0x7a, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xfb, 0x77, 0xff, 0xff, 0x7f, 0xd3, 0xff,
-0xfd, 0xff, 0x67, 0xff, 0xf2, 0xff, 0xff, 0x47,
-0xff, 0xf6, 0xff, 0x67, 0xfe, 0xf7, 0xff, 0xff,
-0x2e, 0xdf, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0x6f, 0xff, 0xfa, 0xf6, 0x9d,
-0x8f, 0xeb, 0xfa, 0xf4, 0xbf, 0x2f, 0x6b, 0xfa,
-0xf6, 0xb7, 0xab, 0xe9, 0xde, 0xbf, 0xaf, 0xeb,
-0xf8, 0xae, 0x3b, 0xaf, 0xeb, 0x7a, 0xfe, 0xbf,
-0xaf, 0xeb, 0xfa, 0xfd, 0x59, 0xbf, 0xff, 0xff,
-0xff, 0xfb, 0xff, 0xfb, 0xfd, 0xf7, 0xf4, 0xf7,
-0x7f, 0xff, 0x7f, 0xfd, 0xcd, 0x6c, 0xdf, 0xff,
-0xef, 0xfc, 0xbf, 0xfb, 0xff, 0xff, 0xf7, 0xff,
-0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff,
-0xff, 0x7f, 0x7f, 0xff, 0xe3, 0xfb, 0x7f, 0xfd,
-0xf7, 0xff, 0xfe, 0xef, 0xff, 0xf7, 0xff, 0xff,
-0xde, 0xb7, 0xf7, 0x2f, 0xff, 0xff, 0x77, 0xfb,
-0xff, 0x3f, 0xff, 0xff, 0xfd, 0xff, 0x7e, 0x37,
-0xbf, 0xff, 0xff, 0x7f, 0xdf, 0xff, 0xfd, 0xff,
-0xff, 0xef, 0xbf, 0xff, 0xbf, 0xef, 0xef, 0xff,
-0xde, 0xeb, 0xfb, 0xe5, 0xff, 0xff, 0xfb, 0xdb,
-0xf7, 0xff, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xe4, 0x1f, 0xff, 0xf7, 0xff, 0xaf, 0xeb, 0xb8,
-0xff, 0xbd, 0x6f, 0xe7, 0xdf, 0xfe, 0x7f, 0xef,
-0x3b, 0xde, 0xff, 0xb6, 0xcb, 0xff, 0x7f, 0xa7,
-0xbf, 0xeb, 0xfb, 0xfe, 0xbc, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x9f, 0xff, 0xff, 0xff, 0xfa, 0xfd,
-0x77, 0xbf, 0xdf, 0xdf, 0xff, 0xed, 0xff, 0xff,
-0x67, 0xff, 0xf7, 0xfb, 0x7e, 0xfe, 0x77, 0xf9,
-0xef, 0xde, 0x5f, 0x75, 0xef, 0xb7, 0xff, 0xff,
-0xff, 0xff, 0xbd, 0x99, 0xfe, 0xff, 0xbc, 0xfb,
-0x3e, 0xef, 0xbf, 0xfc, 0x7e, 0xfb, 0xff, 0xff,
-0xbf, 0xff, 0x3b, 0xbf, 0x8f, 0xff, 0xfe, 0xcf,
-0xfb, 0xfc, 0xdf, 0xbe, 0x3f, 0xf3, 0xb2, 0xdf,
-0xff, 0xfe, 0xfe, 0xff, 0xfd, 0x7f, 0xfb, 0xff,
-0x7b, 0xd7, 0xd3, 0xff, 0xbf, 0x5f, 0xfd, 0xff,
-0xdf, 0xff, 0x7e, 0xff, 0xff, 0xfd, 0x7f, 0xfe,
-0xe7, 0xfd, 0xdf, 0x6f, 0xc7, 0xfe, 0xff, 0xff,
-0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0d, 0xff,
-0xff, 0x5a, 0xdf, 0xff, 0xbf, 0xfb, 0xff, 0xdf,
-0x9d, 0xff, 0xfd, 0x7a, 0x6f, 0x97, 0xff, 0xaf,
-0xff, 0xff, 0xbf, 0xe7, 0xee, 0xff, 0xff, 0xfd,
-0xfd, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5,
-0xde, 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc,
-0xf7, 0xff, 0xcf, 0xe3, 0x7f, 0xff, 0x3f, 0xcf,
-0xf4, 0xfd, 0x3f, 0xfd, 0xff, 0xbc, 0xff, 0xff,
-0xef, 0x67, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfa, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xdf, 0xff, 0xfd, 0xdf, 0x7f, 0xfb, 0xf6,
-0xbd, 0xfe, 0xdf, 0xeb, 0xef, 0xdd, 0xfe, 0x5f,
-0x7f, 0xfd, 0xfc, 0xff, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x33, 0xff, 0xbf, 0xdd, 0xff, 0x7f,
-0x5f, 0x97, 0xf9, 0xff, 0xff, 0xbd, 0xeb, 0xed,
-0xdc, 0x7b, 0x8c, 0xa9, 0xdf, 0x6f, 0xdb, 0xf7,
-0xfb, 0xdf, 0x7a, 0x5f, 0xd7, 0xf1, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xea, 0xff, 0xef, 0xff, 0x3b,
-0xff, 0xfb, 0xfe, 0xbf, 0xbf, 0x76, 0xdf, 0xff,
-0xef, 0x3f, 0xee, 0xdf, 0xbf, 0xf7, 0xcd, 0xfb,
-0xbe, 0xff, 0xff, 0x0e, 0xdb, 0xfe, 0xbf, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xfa, 0x1f, 0xff, 0xff,
-0xf7, 0xf7, 0xff, 0x5b, 0xdf, 0xd7, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xfd, 0xfd, 0xdf, 0x9f, 0xfd,
-0x7c, 0xff, 0x57, 0xfd, 0xff, 0xff, 0x77, 0xbf,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc2, 0xff,
-0xef, 0xd7, 0x1f, 0xff, 0xff, 0x3c, 0xff, 0xe7,
-0xcf, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xb7, 0xfb,
-0xdf, 0xff, 0xf3, 0xef, 0xff, 0xff, 0xff, 0xbf,
-0x3f, 0xfb, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xca,
-0x2e, 0xfd, 0xf9, 0xfb, 0xff, 0xff, 0xbf, 0xdf,
-0xff, 0xcd, 0xff, 0xff, 0xff, 0xf7, 0xcf, 0xf7,
-0xff, 0x7f, 0xff, 0xf7, 0x7c, 0xff, 0xff, 0xff,
-0xf3, 0xeb, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xd7, 0x8e, 0x5f, 0xbf, 0x5e, 0xff, 0xd3, 0xff,
-0xaf, 0x5b, 0xfe, 0xdf, 0xff, 0xff, 0x3f, 0xca,
-0xfe, 0xfc, 0xff, 0xff, 0xff, 0xbf, 0xaf, 0xff,
-0x9f, 0xf2, 0x9c, 0xf7, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xfb, 0xc4, 0xbf, 0xf7, 0xef, 0xf3, 0xfe,
-0xff, 0x95, 0xfd, 0xff, 0x7f, 0xff, 0xff, 0xcf,
-0xfb, 0x5f, 0xdf, 0x3f, 0xff, 0xff, 0xff, 0x35,
-0xe7, 0xf3, 0xfe, 0xc7, 0x3a, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xd8, 0x9f, 0xfe, 0xfe, 0xff,
-0xdf, 0xa6, 0xf5, 0xdf, 0xae, 0xd9, 0xff, 0xdf,
-0xf7, 0xf6, 0x89, 0x73, 0x7f, 0xbf, 0xff, 0xfb,
-0xfe, 0x9f, 0x75, 0xfb, 0xa2, 0x3e, 0xdf, 0xac,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0x22, 0xdf, 0xdd,
-0xff, 0x53, 0xd6, 0xf5, 0xbd, 0xf5, 0xf9, 0xdf,
-0xff, 0xff, 0xfd, 0xe9, 0x78, 0x7f, 0xf7, 0xff,
-0xff, 0x77, 0xd3, 0xde, 0x1b, 0xd6, 0x77, 0x9d,
-0xf7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0x6c, 0x7f,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfe, 0xbe,
-0xef, 0xff, 0xff, 0xe7, 0xff, 0xaf, 0xef, 0xd6,
-0xf7, 0xff, 0xfb, 0xfa, 0xff, 0xff, 0xff, 0xeb,
-0xca, 0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf9,
-0x4f, 0xff, 0x7f, 0xdf, 0xf7, 0xff, 0xff, 0x4f,
-0xd7, 0xf6, 0xff, 0xdf, 0xf7, 0xff, 0xf5, 0x7d,
-0xff, 0xdf, 0xff, 0xff, 0x7f, 0x4f, 0xdb, 0xff,
-0xfd, 0x31, 0x4f, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xb3, 0xff, 0xff, 0xff, 0xe7, 0xfb, 0x7e,
-0xfd, 0xb7, 0xcd, 0xd9, 0xf5, 0xfd, 0x7f, 0xed,
-0xf3, 0x77, 0xff, 0xcd, 0xfb, 0xff, 0xfd, 0xff,
-0x5f, 0xff, 0xf6, 0xfd, 0xb7, 0xdf, 0xff, 0xff,
-0xff, 0xff, 0xf3, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xbf, 0xeb, 0xbf, 0xf6, 0x7b, 0xfe, 0x7f, 0x9f,
-0xff, 0xfe, 0xbe, 0x6f, 0xf2, 0xff, 0xaf, 0xef,
-0xfb, 0xf6, 0x7f, 0xbf, 0xfb, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x67, 0xff, 0xed, 0xfb,
-0xf6, 0xf9, 0xbb, 0x67, 0xfb, 0xfe, 0x7f, 0x9f,
-0xe7, 0xfb, 0xd6, 0xfb, 0x8e, 0xfb, 0xe6, 0xed,
-0xbe, 0x67, 0x18, 0xf6, 0xed, 0x9f, 0xe6, 0xfb,
-0xfe, 0xff, 0xbf, 0xef, 0xfe, 0x91, 0xbf, 0xff,
-0xfb, 0xfc, 0xfd, 0xbf, 0xcf, 0xfb, 0xef, 0xff,
-0xfe, 0xff, 0xbf, 0xff, 0xff, 0xfe, 0xff, 0xe6,
-0xfd, 0xff, 0x7f, 0xff, 0xe6, 0xff, 0x3f, 0xef,
-0xfb, 0xef, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xbf,
-0xff, 0xfd, 0xff, 0xbf, 0xdf, 0xfb, 0xfb, 0xff,
-0xff, 0xff, 0xbf, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xef,
-0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xa7, 0xff, 0xff, 0xed, 0xff, 0x7f, 0xff, 0xd1,
-0xf7, 0xfd, 0x1f, 0xee, 0xf9, 0xfe, 0xff, 0x3f,
-0xcf, 0xe7, 0xff, 0x7f, 0x7f, 0xd3, 0xb4, 0xff,
-0xff, 0xc7, 0xf1, 0xb7, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xae, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xdd,
-0xf2, 0xff, 0xab, 0xaf, 0xfe, 0xff, 0xbf, 0xff,
-0xeb, 0xfa, 0xfe, 0xe9, 0xf7, 0xfd, 0xfa, 0xfc,
-0x8f, 0xf7, 0xfb, 0xfe, 0xfe, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xfc, 0x9f, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xff, 0x5f, 0xd7, 0xf5, 0xff, 0xf7, 0xff,
-0xf7, 0xf5, 0xff, 0x7b, 0xbf, 0xff, 0xff, 0xf7,
-0x5f, 0xf7, 0xef, 0xff, 0x3f, 0xcf, 0xd7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xd1, 0xff, 0xff, 0xe7,
-0xf9, 0xfe, 0x7f, 0x89, 0xe6, 0xf8, 0x9e, 0x7f,
-0x9d, 0xe6, 0xf8, 0xbe, 0x6f, 0x9f, 0xf9, 0xfe,
-0x7f, 0x8b, 0xe2, 0xf9, 0xfe, 0x6f, 0x9b, 0xe3,
-0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff, 0xd7,
-0xfe, 0x7f, 0x9f, 0xff, 0xf7, 0xfd, 0xff, 0xff,
-0xfb, 0xf7, 0xfd, 0x7f, 0x5f, 0xff, 0xfd, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xcf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xaf, 0xff,
-0xfa, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfb, 0xbf,
-0xef, 0xff, 0x7f, 0xbf, 0xaf, 0xeb, 0xfe, 0xff,
-0xbf, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xcd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0xff, 0x7f, 0xdf, 0xff, 0xff, 0xff, 0x7f, 0xdf,
-0xd7, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f,
-0xff, 0xf7, 0xfd, 0xff, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0x3f, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xbf, 0xed, 0xeb, 0xff, 0xdf, 0xf7, 0xef,
-0xeb, 0x3a, 0xdf, 0xfd, 0xfd, 0xff, 0xfe, 0xbf,
-0xad, 0xff, 0xff, 0xff, 0xff, 0xbd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x77, 0xff, 0xeb, 0xb6, 0xff,
-0xfb, 0x77, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xf2, 0xff, 0x3f, 0x67, 0xf2, 0xbf, 0xff, 0x2f,
-0xcb, 0xf6, 0xfc, 0xbf, 0x2f, 0xfb, 0xfa, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xfe, 0xbf, 0xff, 0xaf,
-0x69, 0xfa, 0x3e, 0xb7, 0xa7, 0xe1, 0xfa, 0xfe,
-0x3f, 0xa4, 0xe9, 0xfa, 0xee, 0x3d, 0xea, 0xfa,
-0xee, 0xbd, 0xab, 0xeb, 0x72, 0xae, 0xb7, 0xa5,
-0xeb, 0xfa, 0xfe, 0xbf, 0xaf, 0xf7, 0xdf, 0xff,
-0xff, 0x9f, 0xff, 0xfe, 0xff, 0xdf, 0xbc, 0xfd,
-0xff, 0x3f, 0xff, 0xfb, 0x7f, 0xdd, 0x7f, 0xed,
-0xff, 0xef, 0x3f, 0xfb, 0xce, 0xfb, 0xfb, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1,
-0x7d, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0xbf, 0xdf,
-0xfd, 0xf3, 0xdf, 0xff, 0xfb, 0xfd, 0xff, 0xff,
-0xdf, 0x7f, 0xf5, 0xaf, 0xbf, 0x7f, 0xfb, 0xdb,
-0xfa, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0x5f, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xee,
-0xff, 0xfe, 0xef, 0xfb, 0xdf, 0xff, 0xff, 0xfe,
-0xed, 0xe9, 0xfb, 0xbf, 0xef, 0xfb, 0xde, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0xcf, 0xff, 0xff, 0xeb, 0xf9, 0xfe,
-0xbf, 0x8d, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xee, 0xef, 0xba, 0xfe, 0x3f, 0x9f,
-0xff, 0xe8, 0xff, 0xbf, 0xbf, 0xe3, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xdd, 0xff, 0xff, 0xf5, 0x7f,
-0xfd, 0xfb, 0xfb, 0xfb, 0xf5, 0x7f, 0xfe, 0xdf,
-0xff, 0xfd, 0xff, 0xff, 0xff, 0x99, 0x6f, 0x6e,
-0xff, 0xdf, 0xff, 0xff, 0xdf, 0xfe, 0xf6, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf8, 0xbf, 0xff, 0xfd,
-0xfe, 0xdb, 0xfb, 0x5f, 0xfb, 0xcf, 0xfb, 0xbf,
-0xed, 0xfb, 0xff, 0xff, 0xbc, 0xee, 0xce, 0xf3,
-0xbf, 0xff, 0x2f, 0xc3, 0xeb, 0xbf, 0xe3, 0x3b,
-0xce, 0xff, 0xff, 0xef, 0xff, 0xff, 0xd7, 0xff,
-0xfe, 0xfe, 0xfd, 0xef, 0x57, 0xdf, 0xf5, 0xbd,
-0xfb, 0xfb, 0xff, 0xff, 0xfd, 0xb7, 0x5f, 0xd6,
-0x7d, 0xbf, 0xfb, 0xbe, 0xf5, 0xfc, 0xef, 0xef,
-0xdf, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
-0xff, 0xff, 0xff, 0xff, 0xe7, 0xbf, 0xde, 0xff,
-0xf9, 0xe3, 0xff, 0x7f, 0xd7, 0xfd, 0xef, 0xff,
-0xdb, 0xbf, 0xe9, 0x3e, 0xdf, 0xff, 0xfd, 0xed,
-0xff, 0xfb, 0xdf, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x1f, 0xef, 0xff, 0xbf, 0x03, 0x7c, 0xff,
-0xff, 0xcf, 0x73, 0xbc, 0x7f, 0xfd, 0xfc, 0xff,
-0xcc, 0xef, 0x4e, 0xff, 0xfc, 0xdf, 0xf1, 0xcf,
-0xf3, 0xec, 0x77, 0xf7, 0xcf, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xeb, 0xfe, 0xbf, 0xff, 0xbf, 0x7f,
-0xdf, 0xff, 0xf9, 0xff, 0x6f, 0xf7, 0xff, 0xff,
-0xdf, 0xf7, 0xdf, 0xed, 0xff, 0xef, 0xae, 0xff,
-0x7d, 0xfb, 0x7f, 0xf7, 0xdf, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff, 0xfe, 0x5f,
-0xeb, 0xf9, 0xfd, 0x7f, 0x5f, 0xa7, 0xff, 0xd7,
-0xf7, 0xfd, 0xff, 0xf9, 0xfa, 0x15, 0xb7, 0xfd,
-0xf7, 0xfb, 0x9f, 0xeb, 0xef, 0xef, 0xff, 0x8f,
-0xff, 0xff, 0xdf, 0xff, 0xee, 0x27, 0xff, 0xff,
-0xfb, 0xfe, 0xde, 0x37, 0xed, 0xff, 0x7c, 0xff,
-0xdf, 0xff, 0xff, 0xfe, 0xff, 0x8e, 0xe9, 0xa8,
-0xdf, 0xbf, 0xef, 0xfa, 0x5e, 0xdf, 0xf7, 0xff,
-0xd7, 0xdf, 0xff, 0xff, 0xff, 0xbd, 0xa1, 0xff,
-0xff, 0xfe, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff,
-0xdd, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xcd, 0xff,
-0xff, 0xff, 0xd7, 0xfb, 0xfc, 0xff, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9,
-0xb1, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xd7,
-0xdf, 0xbd, 0x5c, 0xcf, 0x3e, 0xcf, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfc, 0x36, 0xbf, 0xff, 0xf7, 0xff, 0xff, 0x3f,
-0xcf, 0x93, 0xfc, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0x69, 0xbf, 0xf3, 0xcd, 0xea, 0xfb, 0xcb, 0xff,
-0xff, 0xff, 0xfb, 0xcf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0x7c, 0xf7, 0xff, 0xff, 0xf9, 0xaf,
-0xfb, 0xca, 0xde, 0xaf, 0xef, 0xff, 0xfb, 0xf4,
-0xbc, 0xff, 0xfb, 0x56, 0xb9, 0xfa, 0x7e, 0xd2,
-0xf3, 0xf7, 0xef, 0xff, 0xd2, 0xf5, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xbc, 0x9b, 0xff, 0xfe, 0x7f,
-0x95, 0xfd, 0xf3, 0x5f, 0xcf, 0xf7, 0xff, 0xff,
-0x7e, 0xd7, 0x9f, 0xff, 0xf9, 0xd7, 0xff, 0xcf,
-0xf9, 0x5e, 0x7f, 0xb7, 0xff, 0xf9, 0x5e, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xff,
-0xff, 0xf4, 0xff, 0xac, 0xc9, 0xd2, 0x6c, 0xbb,
-0x7f, 0xef, 0xef, 0xff, 0xff, 0x7d, 0x5b, 0xdd,
-0xff, 0xff, 0xe9, 0xff, 0xf0, 0xb3, 0x77, 0xe9,
-0xe2, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x6f,
-0xff, 0xff, 0xf5, 0x9f, 0xf7, 0xa9, 0x3e, 0x47,
-0x9f, 0xff, 0xfd, 0xdf, 0xf7, 0xfd, 0x4d, 0x7f,
-0x5a, 0x3d, 0x6f, 0x79, 0x3e, 0xf7, 0x96, 0xaf,
-0xfd, 0x34, 0x5d, 0xbf, 0xff, 0xff, 0xff, 0xf7,
-0xe7, 0xff, 0xff, 0xff, 0xfa, 0xfe, 0xb7, 0xaf,
-0xa9, 0xea, 0xdf, 0xff, 0xbf, 0xeb, 0xff, 0xff,
-0xff, 0xeb, 0xff, 0xff, 0xfe, 0xaf, 0xbf, 0xea,
-0xff, 0xfd, 0x2f, 0xeb, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xe9, 0xbf, 0xff, 0xff, 0xff, 0x5f, 0xdf,
-0xf4, 0xfd, 0x3b, 0x7f, 0xff, 0xf7, 0xfd, 0x7f,
-0xff, 0xf5, 0xfd, 0x7f, 0xff, 0xdf, 0xf4, 0xfd,
-0xff, 0x5f, 0xfb, 0xa4, 0xfd, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xf9, 0x2e, 0xff, 0xff, 0xff, 0xff,
-0x7f, 0xc7, 0xdf, 0xf7, 0xbf, 0x7f, 0xff, 0xfb,
-0x7f, 0xff, 0xbf, 0x5f, 0xfc, 0xff, 0x9f, 0xef,
-0xdb, 0x7e, 0xdf, 0x7f, 0x6f, 0xdb, 0x7d, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0x17, 0xfe, 0xff, 0xff,
-0xef, 0xdb, 0xfe, 0xff, 0xff, 0xef, 0xdb, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xe7, 0xff, 0x2b, 0xff,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0xee, 0xbf, 0xbf,
-0x6f, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x7f, 0xee,
-0xfd, 0xbc, 0x6e, 0xdb, 0xb6, 0x7f, 0xb3, 0x6f,
-0xbb, 0xfe, 0xdf, 0xb7, 0xed, 0xf9, 0xd7, 0xbb,
-0xef, 0xdb, 0xd6, 0x7f, 0xbf, 0x6f, 0xf9, 0xbe,
-0x6f, 0xbe, 0xef, 0xfb, 0xfe, 0xfd, 0xfa, 0x9b,
-0xff, 0xff, 0x7f, 0xef, 0x9b, 0xe6, 0xff, 0xff,
-0xdf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xfc, 0xef, 0xf7, 0xfe, 0xff, 0xff, 0x6f, 0xbb,
-0xfe, 0xff, 0xbe, 0xff, 0xff, 0xff, 0xfd, 0xbd,
-0x9b, 0xff, 0xff, 0xff, 0xfb, 0xfd, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xf7, 0xef, 0xff, 0xff, 0xbf, 0xff, 0xf7,
-0xfe, 0xfe, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xfa, 0x5f, 0xff, 0xfb, 0x7f, 0xdf, 0xff,
-0xfd, 0x3f, 0xff, 0xdf, 0xff, 0xfd, 0x7f, 0xff,
-0xd7, 0xb4, 0x6f, 0xdf, 0xf7, 0xfd, 0xfd, 0x3f,
-0xdf, 0xff, 0xf4, 0x7d, 0x3b, 0xff, 0xff, 0xff,
-0xff, 0xfa, 0xff, 0x6f, 0xff, 0xff, 0xdd, 0xfe,
-0xae, 0xef, 0xaf, 0x7f, 0xde, 0xaf, 0xff, 0xa7,
-0xff, 0xfa, 0x7e, 0x8f, 0xfc, 0xb3, 0x7f, 0xdf,
-0xaf, 0xfd, 0xfe, 0xb6, 0xbf, 0xaf, 0xfe, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xd1, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xd7, 0xf5, 0xfb, 0xff, 0x5e, 0xff,
-0xff, 0xff, 0xfe, 0x5e, 0xb7, 0xfb, 0xff, 0xde,
-0xff, 0xf5, 0xdb, 0xfb, 0x5d, 0xd3, 0xf5, 0xef,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x3f, 0xff,
-0xfe, 0x7f, 0x9f, 0xe2, 0xf8, 0xbe, 0x7f, 0x9b,
-0xe7, 0xf9, 0xfc, 0x7f, 0x8b, 0xe6, 0x79, 0xff,
-0x8b, 0xe7, 0xf8, 0xbe, 0x7f, 0x8b, 0xe2, 0xf8,
-0xbe, 0x6f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0xb7,
-0xff, 0xff, 0xfe, 0xfd, 0x7f, 0xff, 0xf7, 0xfe,
-0x7f, 0xff, 0xef, 0xd7, 0xef, 0xfd, 0x3f, 0x4f,
-0xff, 0xff, 0x7f, 0xef, 0xd7, 0xfe, 0xff, 0xff,
-0x47, 0xd7, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xea, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xfa,
-0xff, 0xff, 0xff, 0xfd, 0xfa, 0xff, 0xff, 0xa7,
-0xeb, 0xff, 0xff, 0xbf, 0xfd, 0xfa, 0xff, 0xdf,
-0xef, 0xeb, 0xfa, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xf6, 0xdf, 0xfe, 0xff, 0xfb, 0xfd, 0xff,
-0xff, 0xdf, 0xdf, 0xfd, 0xff, 0xff, 0xfe, 0xff,
-0xfd, 0xff, 0x3f, 0xbf, 0xfd, 0xff, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0x7f, 0xdf, 0xf7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x7f,
-0xb7, 0xbd, 0xeb, 0xfb, 0x7f, 0xb7, 0xf7, 0xff,
-0xdf, 0xff, 0x9f, 0xed, 0xff, 0xde, 0xff, 0xf7,
-0xeb, 0xff, 0x7f, 0xb7, 0xa7, 0xef, 0xfa, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0x2f, 0xff, 0xff,
-0xaf, 0xfb, 0xff, 0xfc, 0xbf, 0x7f, 0xd9, 0xff,
-0x7d, 0x1f, 0xff, 0xdf, 0xfc, 0xff, 0x2f, 0xd3,
-0xf6, 0xbc, 0xbf, 0x6f, 0xff, 0xff, 0xfc, 0x9d,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xef, 0xfb,
-0xfa, 0xfe, 0xbf, 0xaf, 0xeb, 0xba, 0xb6, 0xbf,
-0xaf, 0xeb, 0xda, 0xfe, 0xad, 0x8b, 0xe3, 0x4e,
-0xb7, 0xad, 0xeb, 0x58, 0xd6, 0xbf, 0xab, 0xeb,
-0xba, 0xfe, 0xbf, 0xaf, 0xeb, 0xfa, 0xff, 0xc9,
-0xff, 0xff, 0xff, 0x3f, 0x7f, 0xff, 0xef, 0xfb,
-0x3e, 0x37, 0xbf, 0xff, 0xff, 0xf7, 0xf7, 0xf3,
-0xbf, 0xf7, 0xbf, 0xcf, 0xff, 0xfd, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
-0xf9, 0x1f, 0xff, 0xfd, 0xbf, 0x7f, 0xff, 0x7f,
-0xff, 0xaf, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xfe,
-0x7a, 0xfb, 0xfe, 0xbf, 0xb7, 0xaf, 0xfe, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xfd,
-0xff, 0xde, 0x85, 0xfb, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf7, 0xdd, 0xef, 0xbf, 0x3f, 0xff, 0xf3, 0xff,
-0xff, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xff, 0xbf, 0xec, 0x7f, 0xff, 0xff, 0xbf,
-0xaf, 0xeb, 0xfe, 0xfe, 0x79, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xbf, 0x7f, 0xfe, 0x3d, 0xaf, 0x68,
-0xcb, 0x3a, 0x5f, 0xee, 0xab, 0xfb, 0xfa, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xf8, 0x9f, 0xff, 0xff,
-0x5f, 0xf5, 0xdf, 0x77, 0xbf, 0xff, 0xfb, 0xff,
-0xf7, 0xff, 0xff, 0xfd, 0xff, 0xdf, 0x1f, 0xdd,
-0xdf, 0x76, 0xed, 0xff, 0xef, 0xfd, 0x7e, 0xdd,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x91, 0xff,
-0xff, 0xbf, 0xff, 0xdf, 0xbf, 0xf3, 0xfe, 0xef,
-0xbb, 0xfb, 0xff, 0xff, 0x7f, 0xbf, 0xcd, 0xee,
-0xfe, 0x3f, 0x8f, 0xfb, 0xfe, 0xee, 0xbb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xe3,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xb6, 0xfd, 0xbf,
-0x3f, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xf7,
-0xfd, 0x7d, 0xff, 0xf5, 0xfc, 0xff, 0x17, 0xce,
-0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x6f, 0xbf, 0xff, 0xff, 0xbf, 0xff, 0xbd,
-0xef, 0xfb, 0xf6, 0xff, 0xf3, 0xff, 0xff, 0x5e,
-0x6f, 0xad, 0xb9, 0xbf, 0xff, 0xff, 0xef, 0xff,
-0xbb, 0xfd, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xd5, 0xf7, 0xff, 0xfc, 0xbf, 0xff,
-0xdf, 0xff, 0xf8, 0xfb, 0xff, 0xff, 0xfe, 0x5f,
-0xff, 0xfb, 0xfb, 0xf7, 0xce, 0x1f, 0xfb, 0xe2,
-0xdf, 0xef, 0xb9, 0xfe, 0xfe, 0x7f, 0xf7, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xbe, 0xff, 0xff, 0xdf,
-0xff, 0xfb, 0xf9, 0xff, 0x9f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfb, 0xff,
-0xe7, 0xdf, 0x7f, 0x77, 0xff, 0xfb, 0xfb, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xbf, 0xff,
-0xfb, 0xff, 0xf7, 0xfd, 0x33, 0xff, 0xfd, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0x7f, 0xdb, 0xc7, 0x5d, 0x7f, 0x1b, 0xf7, 0xf3,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xbf,
-0xff, 0xdf, 0xff, 0xff, 0xfe, 0xfa, 0xff, 0xf9,
-0xeb, 0xff, 0xff, 0xdf, 0xf7, 0xff, 0xfb, 0xff,
-0xf7, 0xcd, 0x79, 0xee, 0xf6, 0x3f, 0xf7, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
-0x5f, 0xef, 0xff, 0xff, 0xff, 0x7f, 0xd7, 0x7f,
-0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
-0xff, 0xfd, 0xfd, 0xfc, 0xdf, 0xdd, 0xfd, 0xf7,
-0xff, 0xff, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x3f, 0xff, 0xff, 0xdf, 0xf3, 0xfd, 0xff, 0xff,
-0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x3f, 0xff, 0xbf, 0x3f, 0xfb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xc9, 0x6b, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0x9f, 0xbf, 0xff, 0xfe, 0xff, 0xff,
-0xff, 0xef, 0xdf, 0xf3, 0xfc, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xd7, 0x6f, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xfc, 0xb7, 0xff, 0xff, 0xf4, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0x9f, 0xe7,
-0xff, 0xff, 0x5b, 0xff, 0xfe, 0xbd, 0x27, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xd1, 0xbf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x36, 0xff, 0xff, 0xfe,
-0xd7, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff,
-0xfc, 0xff, 0xff, 0xef, 0xff, 0x7e, 0xd7, 0xb6,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xb7,
-0xff, 0xff, 0xff, 0xff, 0xfa, 0xfe, 0xb7, 0xaf,
-0xeb, 0xef, 0xff, 0xff, 0xff, 0xeb, 0xff, 0x7f,
-0xaf, 0xfb, 0xff, 0xf5, 0xfe, 0x7f, 0xeb, 0x42,
-0x79, 0xbb, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x46, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0xd6,
-0xf5, 0x7d, 0x5f, 0xf7, 0xff, 0xff, 0xfd, 0x5f,
-0x7e, 0xb5, 0x7f, 0xde, 0xf7, 0xfd, 0x8f, 0x69,
-0x6e, 0x4d, 0x1f, 0xf7, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0x7a, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xeb,
-0xfa, 0xfe, 0xbf, 0xaf, 0xeb, 0xff, 0xf5, 0xff,
-0xaf, 0xff, 0xde, 0xbf, 0xff, 0xbf, 0xff, 0xff,
-0xf7, 0xad, 0xab, 0xfa, 0xfe, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfa, 0x1f, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0x7f, 0x5f, 0xd7, 0xf5, 0xe9, 0x7f, 0xff,
-0xff, 0xf5, 0xff, 0xf1, 0xd7, 0xff, 0xfd, 0xff,
-0x7f, 0xff, 0xa5, 0xfd, 0x3f, 0x7f, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf3, 0xfe, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0xdf, 0xe7, 0xff,
-0xff, 0xff, 0xbf, 0xef, 0xf7, 0xf7, 0xff, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfe,
-0x7f, 0xbf, 0xff, 0xfa, 0xff, 0xbf, 0xbf, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x87,
-0xff, 0xef, 0xfb, 0xfe, 0xff, 0xbf, 0x6f, 0xfb,
-0x7e, 0xff, 0xb7, 0xef, 0xfb, 0xfe, 0xff, 0xbc,
-0x7b, 0xf6, 0xef, 0xbf, 0xee, 0xdb, 0xf6, 0xf9,
-0x9f, 0xef, 0xfb, 0x7e, 0xff, 0xbf, 0xef, 0xff,
-0x89, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xfc, 0xff, 0xbf, 0xef, 0xf3, 0xfc,
-0xf9, 0xff, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xda, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xbf, 0xdf, 0xf7, 0xfe,
-0xff, 0xbf, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x25, 0xff, 0xff, 0xbf, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xef, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xcf, 0xef, 0xff, 0xfb, 0xde,
-0xb7, 0xff, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xbe, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdb, 0xbf, 0xff, 0xe7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xf7, 0xdf, 0xf7,
-0xfd, 0xdf, 0x7d, 0xdf, 0xbb, 0xeb, 0xdf, 0xaf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f,
-0xaf, 0xff, 0xfe, 0xff, 0xff, 0xbf, 0xfd, 0x7b,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3,
-0xff, 0xff, 0xe7, 0xf9, 0xfe, 0x7f, 0x8f, 0xe7,
-0xf9, 0xbe, 0x7f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f,
-0x9e, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf8, 0xfe,
-0x2f, 0x1b, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7,
-0xf5, 0x7f, 0xff, 0xff, 0xef, 0xff, 0xfe, 0xfd,
-0x7f, 0xef, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xfc, 0x7f, 0xff, 0xfb, 0xfe, 0x7f, 0xbf, 0xe7,
-0xd7, 0xfd, 0xeb, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xde, 0x6f, 0xff, 0xff, 0xfd, 0xff, 0xff,
-0xdf, 0xaf, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xf7,
-0xef, 0xfa, 0xfe, 0xff, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xcd, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xff, 0xf9, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xf7, 0xff, 0xff, 0x7e, 0xf7, 0xf7, 0xf9, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0x7f, 0xef, 0xed,
-0xff, 0x7f, 0xdf, 0xf7, 0xef, 0x7b, 0xf6, 0xb7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xff,
-0xfd, 0xaf, 0x7f, 0xdf, 0xf6, 0x7c, 0xbf, 0x73,
-0xdb, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec,
-0xfd, 0xff, 0xab, 0xeb, 0xfa, 0xbe, 0xbf, 0xaf,
-0xeb, 0xfa, 0xfe, 0xbf, 0xaf, 0xeb, 0xfa, 0xfe,
-0xad, 0xeb, 0x7a, 0xde, 0xbd, 0xae, 0xcb, 0x32,
-0xf4, 0xb7, 0xaf, 0xeb, 0xfa, 0xfe, 0xbf, 0xaf,
-0xf5, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfd, 0xff, 0x3f, 0xff, 0xff, 0xfc,
-0x78, 0xdf, 0xff, 0xf3, 0xfe, 0xff, 0xff, 0x9d,
-0xff, 0xff, 0xff, 0x3f, 0xef, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xc9, 0xfd, 0xff, 0xf7, 0xfd, 0xff,
-0xff, 0xff, 0xf7, 0xff, 0xaf, 0xff, 0xff, 0xff,
-0xfe, 0xbf, 0xf9, 0xdf, 0x7f, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xf9, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xe2, 0x5f, 0xff, 0xfd, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xdc, 0xef, 0xbf, 0xbe,
-0xbf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xa7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xa7, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfe,
-0xfe, 0xaf, 0xef, 0xa7, 0xf8, 0xfe, 0x3f, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xf5, 0xdf, 0xff,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x7b,
-0xf5, 0xbd, 0xfb, 0x7f, 0xbf, 0xff, 0xbf, 0xef,
-0x7f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfe,
-0x1f, 0xdf, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xff,
-0xfa, 0xff, 0xff, 0xfa, 0xfe, 0xbf, 0xef, 0x7a,
-0xff, 0xbe, 0xef, 0xfb, 0xff, 0xff, 0xef, 0xff,
-0xff, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xfb, 0xdf, 0x77, 0xff, 0x6f, 0x9e, 0xf3,
-0xfc, 0xef, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf4, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xab, 0xf7, 0xff, 0xed, 0xfb,
-0x6f, 0xbf, 0xeb, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xff, 0xff, 0xf3, 0xfd, 0x5f, 0x7f, 0xff, 0xff,
-0xff, 0xef, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xbf, 0x8f, 0x7f, 0xbf, 0xff,
-0xff, 0xfd, 0x4f, 0xf3, 0xfc, 0xfd, 0x3f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xef, 0xbf,
-0xff, 0xfb, 0xff, 0xfd, 0xff, 0x7d, 0xdd, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xf0, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x5d, 0xff, 0xaf, 0xe3, 0xff, 0x1f, 0xc7, 0xf9,
-0xfe, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x07, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xca, 0xbf, 0xfb, 0xbf, 0xef, 0xfb, 0xfe,
-0xff, 0x3b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xb1, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0xbf, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xf7, 0xff, 0xff, 0xf7, 0xff, 0xef, 0xfb, 0xfe,
-0xdf, 0xd7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xfe, 0x0b, 0xff, 0xff, 0xbf, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7,
-0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xd4, 0xff, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfd, 0xe6, 0xd7, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xbf,
-0xff, 0xff, 0x9f, 0xff, 0xbc, 0xaf, 0x4b, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xbe, 0xcb,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
-0xd7, 0xff, 0xff, 0xff, 0xfe, 0x5f, 0xb5, 0xfd,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7d,
-0xd9, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xbf, 0x4f, 0xd2, 0xc9,
-0xbd, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xea, 0x2d, 0xff, 0xff, 0x77, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7b, 0xdf,
-0x5a, 0x9f, 0xa7, 0xbf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0x4d, 0xff, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xfe,
-0xff, 0xeb, 0xfa, 0xde, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff,
-0xff, 0xff, 0xfd, 0x7f, 0x5f, 0xd7, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xbf, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x3f, 0xc7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x07,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xfb, 0xde,
-0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xe8, 0x7f, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xfe,
-0xff, 0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xbf, 0xef,
-0xfb, 0xff, 0xbf, 0xef, 0x5b, 0xf6, 0xfd, 0xbf,
-0x6f, 0xdb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xfe,
-0xff, 0xfb, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd,
-0xfe, 0xdf, 0x9b, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xd3, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xf5,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xdf, 0xff, 0xef, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xaf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9,
-0xff, 0xfd, 0xdd, 0x77, 0x6a, 0xfb, 0xae, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0x7f, 0xff, 0xff, 0xff, 0xfd, 0xf3, 0xfd,
-0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf3, 0x3f, 0xff, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9,
-0xfe, 0x7f, 0x9f, 0xe2, 0xe9, 0xfe, 0x7f, 0x9f,
-0xe7, 0xf9, 0xef, 0x9f, 0xe6, 0xe9, 0xbe, 0x6f,
-0x1f, 0xe2, 0xe9, 0xfe, 0x7f, 0x9f, 0xe7, 0xf9,
-0xfe, 0x7f, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xf7, 0xf9, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xef, 0xfe, 0xfd, 0xbf, 0xef, 0xef, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff,
-0xff, 0xf7, 0xff, 0xff, 0xfd, 0xff, 0xf7, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3b, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xfe, 0xfd, 0xff, 0xd6, 0xf7, 0xbd,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4,
-0x3f, 0xff, 0xff, 0x4f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xfe, 0xff, 0xf2, 0xfd, 0xff, 0xff, 0xff,
-0xf2, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xee, 0x8f, 0xff, 0xfa, 0xfe, 0xbf, 0xab, 0xeb,
-0xfa, 0xbe, 0xbf, 0xab, 0xcb, 0xfa, 0xbe, 0xbf,
-0xaf, 0xeb, 0xde, 0xaf, 0xaf, 0xeb, 0xda, 0xde,
-0xaf, 0xae, 0xea, 0xfa, 0xde, 0xbf, 0xaf, 0xeb,
-0xfa, 0xff, 0xc5, 0xff, 0xff, 0xfa, 0xfd, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xef, 0xef,
-0xff, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xf8, 0x9f, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x7e, 0x65, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xfd, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf2, 0x7f,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe3, 0xff, 0xff, 0xfe, 0xfd, 0xff, 0x7f,
-0xdf, 0xf7, 0xe3, 0xfe, 0x7f, 0x9f, 0xae, 0xed,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0x9f, 0xff, 0xfb, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xff, 0x7d, 0xdf, 0xdd, 0xff, 0xbf, 0x7f, 0xea,
-0xff, 0xbf, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff,
-0xff, 0xe1, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xe7, 0xef, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0x7f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xf1, 0x7f, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xd7, 0xfb, 0x7d, 0xff, 0xfd, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xfb, 0x9f, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff,
-0xff, 0xff, 0xfe, 0xff, 0xff, 0xd5, 0xff, 0xbf,
-0xbf, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xff,
-0xff, 0xc7, 0xdf, 0xff, 0xfb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfd, 0xbf,
-0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe,
-0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xb7, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xf3, 0xeb, 0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff,
-0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfb, 0xff, 0xef, 0xf7, 0xfd, 0xff, 0x7f, 0xdf,
-0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfb, 0xff,
-0xff, 0xf7, 0xfa, 0xdf, 0xef, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xdf, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xff, 0xff, 0xb0, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xe7, 0xf9, 0xff, 0xff, 0xf5, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfe, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x6b, 0xfc,
-0xff, 0x3b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfe, 0xbf, 0xaf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xd7, 0xcf,
-0x7f, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfb,
-0xfd, 0xbf, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
-0xff, 0xdb, 0x37, 0xff, 0xbd, 0x6f, 0xdf, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xeb, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xef, 0xff,
-0xff, 0xff, 0xbf, 0xa6, 0xff, 0xdd, 0xa7, 0x77,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0x5f, 0x57, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x7d,
-0xdf, 0xff, 0xff, 0xff, 0x7a, 0xdf, 0xfe, 0xff,
-0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xaf, 0xeb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xbf, 0xbf, 0xff, 0xff, 0xff, 0xf8, 0xdf, 0xff,
-0x7f, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xf5, 0xfd, 0x7f, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xd7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xd3,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xfb, 0x7e, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9,
-0xf5, 0x7f, 0xef, 0xf9, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x9f, 0xeb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xbe, 0x07, 0xfe, 0xed, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xff, 0xb7, 0xfb, 0xfe, 0xff, 0xbe, 0xef,
-0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xff, 0xb1, 0xbf, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xde, 0xbf, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0xff,
-0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xed, 0x7f, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xf4,
-0xff, 0xfa, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xa7, 0xe9, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xff, 0xff,
-0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x7f,
-0xff, 0xff, 0xeb, 0xff, 0xff, 0xe7, 0xf9, 0xfe,
-0x7f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7,
-0xf9, 0xfe, 0x7f, 0x9f, 0xf9, 0xfe, 0x7f, 0x1f,
-0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xe7, 0xe9, 0xfe,
-0x2f, 0x9f, 0xe7, 0xe3, 0x7f, 0xfd, 0x7f, 0xff,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xd7, 0xf4,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xfe, 0x4f, 0xff, 0xaf,
-0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfa,
-0xfe, 0x9d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xed, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0x3f, 0xfd, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff,
-0x7f, 0xf7, 0xfd, 0xff, 0x77, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xef,
-0xfb, 0xf7, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff,
-0xff, 0xff, 0xc0, 0xdd, 0xff, 0xad, 0xeb, 0x7a,
-0xfe, 0xbf, 0xad, 0xeb, 0xfa, 0xfe, 0xbf, 0xaf,
-0xeb, 0xfa, 0xfe, 0x8f, 0xe9, 0x7a, 0xbe, 0xaf,
-0xaf, 0xea, 0xfa, 0xfe, 0xbf, 0x2b, 0xeb, 0xda,
-0xfe, 0xbf, 0xaf, 0xfd, 0x5f, 0xfd, 0xff, 0xff,
-0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xa9, 0x5f,
-0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfd,
-0xfb, 0xff, 0xff, 0xdf, 0xff, 0xf7, 0xbf, 0xef,
-0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff,
-0x47, 0xfd, 0xf7, 0xfd, 0xff, 0xff, 0xf7, 0xfe,
-0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xff,
-0xff, 0xbf, 0xaf, 0xbf, 0xff, 0xfd, 0xff, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xff, 0xfe, 0xbf, 0xff,
-0xff, 0xc1, 0xff, 0xff, 0xe7, 0xf5, 0xff, 0xfd,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb,
-0xff, 0xfb, 0xdf, 0x1f, 0xfd, 0xdf, 0xff, 0xf3,
-0xff, 0xff, 0xff, 0xef, 0xf3, 0xfc, 0xff, 0xfb,
-0xff, 0xfb, 0xf6, 0xfe, 0xef, 0xff, 0xff, 0xff,
-0xfd, 0x7f, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0x97, 0xff, 0xd7, 0x75,
-0x7d, 0xbf, 0x7f, 0xfb, 0xfb, 0xfd, 0xff, 0xff,
-0xd3, 0xff, 0xfd, 0xbf, 0x2f, 0xc4, 0xff, 0xbf,
-0xff, 0xfb, 0x7f, 0xbc, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xff, 0xff,
-0xff, 0xff, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xef,
-0xff, 0xff, 0xff, 0xff, 0xe7, 0x6f, 0xf9, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x5f,
-0xf7, 0xf7, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5,
-0x7f, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf,
-0xfb, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff,
-0xff, 0xef, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0x7d, 0xff, 0x5f, 0x5f, 0xd7, 0xff,
-0xff, 0xff, 0xff, 0xd6, 0x75, 0x5f, 0xf7, 0xde,
-0xff, 0xff, 0xff, 0xdf, 0xfd, 0x3f, 0xdf, 0xf7,
-0x5d, 0xf7, 0xdd, 0xff, 0xff, 0x5f, 0xff, 0xff,
-0x7f, 0xff, 0xde, 0xe7, 0xdf, 0x8f, 0xfb, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff,
-0xeb, 0xfe, 0xdf, 0xbf, 0xf7, 0xfe, 0xff, 0xbf,
-0xff, 0xff, 0xfc, 0xff, 0xbf, 0xff, 0xfb, 0xff,
-0xff, 0xbf, 0xff, 0xff, 0x95, 0xf7, 0xff, 0xff,
-0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff,
-0xff, 0xfd, 0xfb, 0xb3, 0xf7, 0x6f, 0xff, 0xbf,
-0xf7, 0xbf, 0xff, 0xff, 0xdf, 0xd7, 0xff, 0xff,
-0x77, 0xff, 0xef, 0xbf, 0xfb, 0xfc, 0xbb, 0xff,
-0x8f, 0xe7, 0xf9, 0x7e, 0x7f, 0x9b, 0xe7, 0xf9,
-0xfe, 0x7f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0xe7,
-0xf9, 0xf6, 0x5f, 0x9f, 0xe7, 0xf9, 0xfe, 0x7f,
-0x9f, 0xe7, 0xf9, 0xfe, 0x7f, 0x9f, 0xfc, 0x16,
-0xff, 0xf3, 0xfa, 0xff, 0xb7, 0xed, 0xfb, 0x7e,
-0xff, 0xbf, 0xcf, 0xfb, 0x7a, 0xfe, 0xbf, 0xcf,
-0xfe, 0xfe, 0xbd, 0xcf, 0xfb, 0xfe, 0xff, 0xbf,
-0xcf, 0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xff,
-0xa4, 0xcf, 0xfe, 0x7f, 0x9d, 0xe7, 0xfb, 0xfe,
-0xff, 0xbf, 0xe7, 0xb9, 0xfe, 0xff, 0xbf, 0xe7,
-0x78, 0xfd, 0x9f, 0x67, 0xfb, 0xf8, 0xf5, 0xaf,
-0x67, 0xdb, 0xfe, 0xff, 0xbf, 0xef, 0xeb, 0xac,
-0xff, 0xfe, 0x9f, 0xff, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
-0xff, 0xff, 0xef, 0xff, 0xff, 0xbf, 0xf7, 0x7f,
-0xff, 0xff, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xfd,
-0xfd, 0xff, 0xfd, 0xc3, 0xff, 0xfb, 0xde, 0xf7,
-0xbf, 0xef, 0xfb, 0xbe, 0xff, 0xae, 0xe7, 0xfb,
-0xfe, 0xff, 0xbd, 0xe7, 0xfe, 0xbd, 0xbf, 0xe7,
-0xfb, 0xfe, 0xef, 0xbd, 0xef, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xfb, 0xff, 0xfa, 0x7f, 0xfc, 0xff,
-0x37, 0xcf, 0xf3, 0xfc, 0xff, 0x3f, 0xcf, 0xd3,
-0x7c, 0xff, 0x3f, 0xcf, 0xf3, 0xff, 0x3f, 0xcf,
-0xf3, 0xfe, 0xef, 0x3f, 0xcf, 0xf3, 0xfc, 0xff,
-0x3f, 0xcf, 0xfb, 0xf6, 0xef, 0xfe, 0x0f, 0xff,
-0xb7, 0xed, 0xfb, 0x7e, 0xff, 0xbf, 0x6f, 0xfb,
-0x7e, 0xdb, 0xbf, 0xef, 0xfb, 0x7a, 0xdf, 0xed,
-0xeb, 0x7e, 0xff, 0xbe, 0xef, 0xdb, 0x7e, 0xff,
-0xbf, 0xcf, 0xfb, 0xfe, 0xff, 0xbf, 0xfb, 0xe5,
-0xff, 0xfb, 0xfe, 0xff, 0xbf, 0xe5, 0xf9, 0x7e,
-0x5f, 0xbf, 0xef, 0xf9, 0x7e, 0x5f, 0xbf, 0xef,
-0xfa, 0xff, 0xbf, 0xe5, 0xf9, 0x7e, 0xdf, 0xbf,
-0xe5, 0xf9, 0x7e, 0x5f, 0x97, 0xed, 0xf9, 0x7f,
-0xf9, 0xbf, 0xff, 0x5b, 0xd7, 0xf5, 0xfd, 0xff,
-0x7d, 0xdf, 0xf5, 0xfd, 0x7f, 0x7f, 0xdb, 0xf5,
-0xfd, 0x37, 0xd7, 0xf5, 0x7d, 0xf7, 0x7f, 0xd7,
-0xf5, 0xfd, 0xef, 0x7b, 0xdf, 0xf7, 0xfd, 0x7f,
-0x7f, 0xff, 0x97, 0xff, 0xf7, 0xfd, 0xff, 0x7f,
-0xff, 0xff, 0xbf, 0xff, 0x7f, 0xdf, 0xff, 0xff,
-0xff, 0x7f, 0xdf, 0xbd, 0xff, 0x7f, 0xff, 0xff,
-0xfd, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xdf, 0xff, 0xfb, 0xf0, 0xff, 0xed, 0xff, 0x6f,
-0xdb, 0xf6, 0xfd, 0xb7, 0xed, 0xdf, 0xf7, 0xfd,
-0xff, 0x7f, 0xde, 0xf5, 0xfb, 0x6f, 0xdb, 0xf7,
-0xfd, 0xbf, 0x7d, 0xdb, 0xf7, 0xff, 0xff, 0x6f,
-0xfb, 0xf7, 0xfd, 0xff, 0x7e, 0xdf, 0xff, 0xf7,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff,
-0xdf, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff,
-0xfb, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xfd,
-0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f,
-0xd7, 0xf7, 0xfd, 0xff, 0x7d, 0xdf, 0xf7, 0xff,
-0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xdf, 0xf7,
-0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0xf5,
-0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xbf, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xdf,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
-0xff, 0xfc, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
-0xff, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xf7,
-0xfb, 0xff, 0xb7, 0xff, 0xff, 0xfe, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
-0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xbf, 0xef, 0xff, 0xff,
-0xff, 0xff, 0x7f, 0xf4, 0xff, 0xff, 0xef, 0xff,
-0xff, 0xfe, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xff,
-0xcf, 0xfb, 0xff, 0xbe, 0x3f, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xfd, 0xff, 0x7f, 0xdf, 0xff, 0xfd, 0xff,
-0x7f, 0xdf, 0xf7, 0xff, 0xff, 0xff, 0xee, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
-0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe,
-0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xef, 0x8b, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xf5, 0x7f, 0xff, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb,
-0xfe, 0xff, 0xbf, 0xef, 0xfe, 0xff, 0xbf, 0xef,
-0xfb, 0xfe, 0xff, 0xbf, 0xef, 0xfb, 0xfe, 0xff,
-0xbf, 0xef, 0xfb, 0xfe, 0xcf, 0xff, 0xcf, 0xf3,
-0xfc, 0xff, 0xbf, 0xef, 0xfb, 0xfc, 0xff, 0x3f,
-0xef, 0xf3, 0xfc, 0xff, 0x3f, 0xb3, 0xfc, 0xff,
-0x3f, 0xef, 0xf3, 0xfc, 0xff, 0x3f, 0xef, 0xf3,
-0xfe, 0xff, 0x3f, 0xef, 0xff, 0xfd, 0xff, 0xff,
-0xbf, 0xef, 0xff, 0xff, 0xef, 0xff, 0xfe, 0xff,
-0xff, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf7, 0xff,
-0xfb, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f,
-0xfe, 0xfe, 0xbb, 0xaf, 0xeb, 0xfa, 0xff, 0xbf,
-0xae, 0xeb, 0xba, 0xfe, 0xfb, 0xee, 0xeb, 0xfb,
-0xbb, 0xae, 0xef, 0xbe, 0xff, 0xbb, 0xee, 0xef,
-0xbe, 0xff, 0xfb, 0xef, 0xfb, 0xbe, 0xef, 0xff,
-0x17, 0xff, 0x75, 0xad, 0xab, 0x4a, 0xba, 0xef,
-0xeb, 0xaf, 0x6a, 0xda, 0xae, 0xb5, 0xfb, 0x7a,
-0xd2, 0xbd, 0xab, 0x7a, 0x5f, 0xaf, 0xed, 0x7b,
-0x7a, 0x5f, 0xaf, 0xe5, 0xfa, 0xfe, 0xdb, 0xbf,
-0xe2, 0xd4, 0xff, 0xff,
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
deleted file mode 100644 (file)
index b8fb370..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-SECTIONS
-{
-  .resetvec 0xFFFFFFFC :
-  {
-    KEEP(*(.resetvec))
-  } = 0xffff
-
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    arch/powerpc/cpu/ppc4xx/start.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: */
-  . = (. + 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 e86996c55f164011d425d81c5fabf7b9dee28d66..062ae67276157e3287a0fdec2bde0fd235281e34 100644 (file)
@@ -12,7 +12,6 @@
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
-
 #include <common.h>
 #include <libfdt.h>
 #include <fdt_support.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-extern flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
+extern flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
 extern void __ft_board_setup(void *blob, bd_t *bd);
 
 ulong flash_get_size(ulong base, int banknum);
-int pci_is_66mhz(void);
+static int pci_is_66mhz(void);
 int is_monarch(void);
-int bootstrap_eeprom_read(unsigned dev_addr, unsigned offset,
-                         uchar *buffer, unsigned cnt);
+static int bootstrap_eeprom_read(unsigned dev_addr, unsigned offset,
+                                uchar *buffer, unsigned cnt);
 
 struct serial_device *default_serial_console(void)
 {
@@ -58,23 +57,24 @@ struct serial_device *default_serial_console(void)
        if (((val & 0xf0000000) >> 29) != 7)
                return &eserial2_device;
 
-       ulong scratchreg = in_be32((void*)GPIO0_ISR3L);
+       ulong scratchreg = in_be32((void *)GPIO0_ISR3L);
        if (!(scratchreg & 0x80)) {
                /* mark scratchreg valid */
                scratchreg = (scratchreg & 0xffffff00) | 0x80;
 
+               i2c_init_all();
+
                i = bootstrap_eeprom_read(CONFIG_SYS_I2C_BOOT_EEPROM_ADDR,
                                          0x10, buf, 4);
                if ((i != -1) && (buf[0] == 0x19) && (buf[1] == 0x75)) {
                        scratchreg |= buf[2];
 
                        /* bringup delay for console */
-                       for (delay=0; delay<(1000 * (ulong)buf[3]); delay++) {
+                       for (delay = 0; delay < (1000 * (ulong)buf[3]); delay++)
                                udelay(1000);
-                       }
                } else
                        scratchreg |= 0x01;
-               out_be32((void*)GPIO0_ISR3L, scratchreg);
+               out_be32((void *)GPIO0_ISR3L, scratchreg);
        }
 
        if (scratchreg & 0x01)
@@ -93,10 +93,7 @@ int board_early_init_f(void)
        mtdcr(EBC0_CFGADDR, EBC0_CFG);
        mtdcr(EBC0_CFGDATA, 0xf8400000);
 
-       /*
-        * Setup the GPIO pins
-        * TODO: setup GPIOs via CONFIG_SYS_4xx_GPIO_TABLE in board's config file
-        */
+       /* Setup the GPIO pins */
        out_be32((void *)GPIO0_OR,    0x40000102);
        out_be32((void *)GPIO0_TCR,   0x4c90011f);
        out_be32((void *)GPIO0_OSRL,  0x28051400);
@@ -259,7 +256,7 @@ int misc_init_r(void)
         * USB suff...
         */
        if ((act == NULL || strcmp(act, "host") == 0) &&
-           !(in_be32((void*)GPIO0_IR) & GPIO0_USB_PRSNT)){
+           !(in_be32((void *)GPIO0_IR) & GPIO0_USB_PRSNT)) {
                /* SDR Setting */
                mfsdr(SDR0_PFC1, sdr0_pfc1);
                mfsdr(SDR0_USB2D0CR, usb2d0cr);
@@ -326,16 +323,16 @@ int misc_init_r(void)
                mtsdr(SDR0_SRST1, 0x00000000);
                mtsdr(SDR0_SRST0, 0x00000000);
 
-               if (!(in_be32((void*)GPIO0_IR) & GPIO0_USB_PRSNT)) {
+               if (!(in_be32((void *)GPIO0_IR) & GPIO0_USB_PRSNT)) {
                        /* enable power on USB socket */
-                       out_be32((void*)GPIO1_OR,
-                                in_be32((void*)GPIO1_OR) & ~GPIO1_USB_PWR_N);
+                       out_be32((void *)GPIO1_OR,
+                                in_be32((void *)GPIO1_OR) & ~GPIO1_USB_PWR_N);
                }
 
                printf("USB:   Host\n");
 
        } else if ((strcmp(act, "dev") == 0) ||
-                  (in_be32((void*)GPIO0_IR) & GPIO0_USB_PRSNT)) {
+                  (in_be32((void *)GPIO0_IR) & GPIO0_USB_PRSNT)) {
                mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
 
                usb2phy0cr = usb2phy0cr &~SDR0_USB2PHY0CR_XOCLK_MASK;
@@ -414,30 +411,31 @@ int misc_init_r(void)
 #endif
 
        /* turn off POST LED */
-       out_be32((void*)GPIO1_OR,  in_be32((void*)GPIO1_OR) & ~GPIO1_POST_N);
+       out_be32((void *)GPIO1_OR, in_be32((void *)GPIO1_OR) & ~GPIO1_POST_N);
        /* turn on RUN LED */
-       out_be32((void*)GPIO0_OR,  in_be32((void*)GPIO0_OR) & ~GPIO0_LED_RUN_N);
+       out_be32((void *)GPIO0_OR,
+                in_be32((void *)GPIO0_OR) & ~GPIO0_LED_RUN_N);
        return 0;
 }
 
 int is_monarch(void)
 {
-       if (in_be32((void*)GPIO1_IR) & GPIO1_NONMONARCH)
+       if (in_be32((void *)GPIO1_IR) & GPIO1_NONMONARCH)
                return 0;
 
        return 1;
 }
 
-int pci_is_66mhz(void)
+static int pci_is_66mhz(void)
 {
-       if (in_be32((void*)GPIO1_IR) & GPIO1_M66EN)
+       if (in_be32((void *)GPIO1_IR) & GPIO1_M66EN)
                return 1;
        return 0;
 }
 
-int board_revision(void)
+static int board_revision(void)
 {
-       return (int)((in_be32((void*)GPIO1_IR) & GPIO1_HWID_MASK) >> 4);
+       return (int)((in_be32((void *)GPIO1_IR) & GPIO1_HWID_MASK) >> 4);
 }
 
 int checkboard(void)
@@ -495,7 +493,7 @@ void pci_target_init(struct pci_controller *hose)
        out32r(PCIL0_PMM0MA, 0x00000000);       /* PMM0 Mask/Attribute */
                                                /* - disabled b4 setting */
        out32r(PCIL0_PMM0LA, CONFIG_SYS_PCI_MEMBASE);   /* PMM0 Local Address */
-       out32r(PCIL0_PMM0PCILA, CONFIG_SYS_PCI_MEMBASE); /* PMM0 PCI Low Address */
+       out32r(PCIL0_PMM0PCILA, CONFIG_SYS_PCI_MEMBASE); /* PMM0 PCI Low Addr */
        out32r(PCIL0_PMM0PCIHA, 0x00000000);    /* PMM0 PCI High Address */
        out32r(PCIL0_PMM0MA, 0xc0000001);       /* 1G + No prefetching, */
                                                /* and enable region */
@@ -532,7 +530,8 @@ void pci_target_init(struct pci_controller *hose)
 
        if (is_monarch()) {
                /* BAR2: map FPGA registers behind system memory at 1GB */
-               pci_hose_write_config_dword(hose, 0, PCI_BASE_ADDRESS_2, 0x40000008);
+               pci_hose_write_config_dword(hose, 0,
+                                           PCI_BASE_ADDRESS_2, 0x40000008);
        }
 
        /*
@@ -562,10 +561,10 @@ void pci_target_init(struct pci_controller *hose)
                                           CONFIG_SYS_PCI_CLASSCODE_NONMONARCH);
 
                /* PCI configuration done: release ERREADY */
-               out_be32((void*)GPIO1_OR,
-                        in_be32((void*)GPIO1_OR) | GPIO1_PPC_EREADY);
-               out_be32((void*)GPIO1_TCR,
-                        in_be32((void*)GPIO1_TCR) | GPIO1_PPC_EREADY);
+               out_be32((void *)GPIO1_OR,
+                        in_be32((void *)GPIO1_OR) | GPIO1_PPC_EREADY);
+               out_be32((void *)GPIO1_TCR,
+                        in_be32((void *)GPIO1_TCR) | GPIO1_PPC_EREADY);
        } else {
                /* Program the board's subsystem id/classcode */
                pci_hose_write_config_word(hose, 0, PCI_SUBSYSTEM_ID,
@@ -595,14 +594,14 @@ void pci_master_init(struct pci_controller *hose)
 
 static void wait_for_pci_ready(void)
 {
-       if (!(in_be32((void*)GPIO1_IR) & GPIO1_PPC_EREADY)) {
+       if (!(in_be32((void *)GPIO1_IR) & GPIO1_PPC_EREADY)) {
                printf("PCI:   Waiting for EREADY (CTRL-C to skip) ... ");
                while (1) {
                        if (ctrlc()) {
                                puts("abort\n");
                                break;
                        }
-                       if (in_be32((void*)GPIO1_IR) & GPIO1_PPC_EREADY) {
+                       if (in_be32((void *)GPIO1_IR) & GPIO1_PPC_EREADY) {
                                printf("done\n");
                                break;
                        }
@@ -641,34 +640,73 @@ int is_pci_host(struct pci_controller *hose)
 #endif /* defined(CONFIG_PCI) */
 
 #ifdef CONFIG_RESET_PHY_R
-void reset_phy(void)
+static int pmc440_setup_vsc8601(char *devname, int phy_addr,
+                               unsigned short behavior, unsigned short method)
 {
-       char *s;
-       unsigned short val_method, val_behavior;
+       /* adjust LED behavior */
+       if (miiphy_write(devname, phy_addr, 0x1f, 0x0001) != 0) {
+               printf("Phy%d: register write access failed\n", phy_addr);
+               return -1;
+       }
 
-       /* special LED setup for NGCC/CANDES */
-       if ((s = getenv("bd_type")) &&
-           ((!strcmp(s, "ngcc")) || (!strcmp(s, "candes")))) {
-               val_method   = 0x0e0a;
-               val_behavior = 0x0cf2;
-       } else {
-               /* PMC440 standard type */
-               val_method   = 0x0e10;
-               val_behavior = 0x0cf0;
+       miiphy_write(devname, phy_addr, 0x11, 0x0010);
+       miiphy_write(devname, phy_addr, 0x11, behavior);
+       miiphy_write(devname, phy_addr, 0x10, method);
+       miiphy_write(devname, phy_addr, 0x1f, 0x0000);
+
+       return 0;
+}
+
+static int pmc440_setup_ksz9031(char *devname, int phy_addr)
+{
+       unsigned short id1, id2;
+
+       if (miiphy_read(devname, phy_addr, 2, &id1) ||
+           miiphy_read(devname, phy_addr, 3, &id2)) {
+               printf("Phy%d: cannot read id\n", phy_addr);
+               return -1;
        }
 
-       if (miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x1f, 0x0001) == 0) {
-               miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x11, 0x0010);
-               miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x11, val_behavior);
-               miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x10, val_method);
-               miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, 0x1f, 0x0000);
+       if ((id1 != 0x0022) || ((id2 & 0xfff0) != 0x1620)) {
+               printf("Phy%d: unexpected id\n", phy_addr);
+               return -1;
        }
 
-       if (miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x1f, 0x0001) == 0) {
-               miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x11, 0x0010);
-               miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x11, val_behavior);
-               miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x10, val_method);
-               miiphy_write("ppc_4xx_eth1", CONFIG_PHY1_ADDR, 0x1f, 0x0000);
+       /* MMD 2.08: adjust tx_clk pad skew */
+       miiphy_write(devname, phy_addr, 0x0d, 2);
+       miiphy_write(devname, phy_addr, 0x0e, 8);
+       miiphy_write(devname, phy_addr, 0x0d, 0x4002);
+       miiphy_write(devname, phy_addr, 0x0e, 0xf | (0x17 << 5));
+
+       return 0;
+}
+
+void reset_phy(void)
+{
+       char *s;
+       unsigned short val_method, val_behavior;
+
+       if (gd->board_type < 4) {
+               /* special LED setup for NGCC/CANDES */
+               s = getenv("bd_type");
+               if (s && ((!strcmp(s, "ngcc")) || (!strcmp(s, "candes")))) {
+                       val_method   = 0x0e0a;
+                       val_behavior = 0x0cf2;
+               } else {
+                       /* PMC440 standard type */
+                       val_method   = 0x0e10;
+                       val_behavior = 0x0cf0;
+               }
+
+               /* boards up to rev. 1.3 use Vitesse VSC8601 phys */
+               pmc440_setup_vsc8601("ppc_4xx_eth0", CONFIG_PHY_ADDR,
+                                    val_method, val_behavior);
+               pmc440_setup_vsc8601("ppc_4xx_eth1", CONFIG_PHY1_ADDR,
+                                    val_method, val_behavior);
+       } else {
+               /* rev. 1.4 uses a Micrel KSZ9031 */
+               pmc440_setup_ksz9031("ppc_4xx_eth0", CONFIG_PHY_ADDR);
+               pmc440_setup_ksz9031("ppc_4xx_eth1", CONFIG_PHY1_ADDR);
        }
 }
 #endif
@@ -729,7 +767,6 @@ int bootstrap_eeprom_write(unsigned dev_addr, unsigned offset,
         * 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;
@@ -771,8 +808,8 @@ int bootstrap_eeprom_write(unsigned dev_addr, unsigned offset,
        return rcode;
 }
 
-int bootstrap_eeprom_read (unsigned dev_addr, unsigned offset,
-                          uchar *buffer, unsigned cnt)
+static int bootstrap_eeprom_read(unsigned dev_addr, unsigned offset,
+                                uchar *buffer, unsigned cnt)
 {
        unsigned end = offset + cnt;
        unsigned blk_off;
@@ -820,10 +857,10 @@ int board_usb_init(int index, enum usb_init_type init)
        int i;
 
        if ((act == NULL || strcmp(act, "host") == 0) &&
-           !(in_be32((void*)GPIO0_IR) & GPIO0_USB_PRSNT))
+           !(in_be32((void *)GPIO0_IR) & GPIO0_USB_PRSNT))
                /* enable power on USB socket */
-               out_be32((void*)GPIO1_OR,
-                        in_be32((void*)GPIO1_OR) & ~GPIO1_USB_PWR_N);
+               out_be32((void *)GPIO1_OR,
+                        in_be32((void *)GPIO1_OR) & ~GPIO1_USB_PWR_N);
 
        for (i=0; i<1000; i++)
                udelay(1000);
@@ -834,7 +871,7 @@ int board_usb_init(int index, enum usb_init_type init)
 int usb_board_stop(void)
 {
        /* disable power on USB socket */
-       out_be32((void*)GPIO1_OR, in_be32((void*)GPIO1_OR) | GPIO1_USB_PWR_N);
+       out_be32((void *)GPIO1_OR, in_be32((void *)GPIO1_OR) | GPIO1_USB_PWR_N);
        return 0;
 }
 
@@ -858,8 +895,8 @@ void ft_board_setup(void *blob, bd_t *bd)
                rc = fdt_find_and_setprop(blob, "/plb/pci@1ec000000", "status",
                                          "disabled", sizeof("disabled"), 1);
                if (rc) {
-                       printf("Unable to update property status in PCI node, err=%s\n",
-                              fdt_strerror(rc));
+                       printf("Unable to update property status in PCI node, ");
+                       printf("err=%s\n", fdt_strerror(rc));
                }
        }
 }
diff --git a/board/evb64260/ecctest.c b/board/evb64260/ecctest.c
deleted file mode 100644 (file)
index 5d3679a..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-indent: Standard input:27: Warning:old style assignment ambiguity in "=*".  Assuming "= *"
-
-#ifdef ECC_TEST
-static inline void ecc_off (void)
-{
-       *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) &= ~0x00200000;
-}
-
-static inline void ecc_on (void)
-{
-       *(volatile int *) (INTERNAL_REG_BASE_ADDR + 0x4b4) |= 0x00200000;
-}
-
-static int putshex (const char *buf, int len)
-{
-       int i;
-
-       for (i = 0; i < len; i++) {
-               printf ("%02x", buf[i]);
-       }
-       return 0;
-}
-
-static int char_memcpy (void *d, const void *s, int len)
-{
-       int i;
-       char *cd = d;
-       const char *cs = s;
-
-       for (i = 0; i < len; i++) {
-               *(cd++) = *(cs++);
-       }
-       return 0;
-}
-
-static int memory_test (char *buf)
-{
-       const char src[][16] = {
-               {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-               {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-                0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
-               {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-                0x02, 0x02, 0x02, 0x02, 0x02, 0x02},
-               {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
-                0x04, 0x04, 0x04, 0x04, 0x04, 0x04},
-               {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
-                0x08, 0x08, 0x08, 0x08, 0x08, 0x08},
-               {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-                0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
-               {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-                0x20, 0x20, 0x20, 0x20, 0x20, 0x20},
-               {0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-                0x40, 0x40, 0x40, 0x40, 0x40, 0x40},
-               {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-                0x80, 0x80, 0x80, 0x80, 0x80, 0x80},
-               {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-                0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
-               {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-                0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa},
-               {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-                0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
-       };
-       const int foo[] = { 0 };
-       int i, j, a;
-
-       printf ("\ntest @ %d %p\n", foo[0], buf);
-       for (i = 0; i < 12; i++) {
-               for (a = 0; a < 8; a++) {
-                       const char *s = src[i] + a;
-                       int align = (unsigned) (s) & 0x7;
-
-                       /* ecc_off(); */
-                       memcpy (buf, s, 8);
-                       /* ecc_on(); */
-                       putshex (s, 8);
-                       if (memcmp (buf, s, 8)) {
-                               putc ('\n');
-                               putshex (buf, 8);
-                               printf (" [FAIL] (%p) align=%d\n", s, align);
-                               for (j = 0; j < 8; j++) {
-                                       s[j] == buf[j] ? puts ("  ") :
-                                               printf ("%02x",
-                                                       (s[j]) ^ (buf[j]));
-                               }
-                               putc ('\n');
-                       } else {
-                               printf (" [PASS] (%p) align=%d\n", s, align);
-                       }
-                       /* ecc_off(); */
-                       char_memcpy (buf, s, 8);
-                       /* ecc_on(); */
-                       putshex (s, 8);
-                       if (memcmp (buf, s, 8)) {
-                               putc ('\n');
-                               putshex (buf, 8);
-                               printf (" [FAIL] (%p) align=%d\n", s, align);
-                               for (j = 0; j < 8; j++) {
-                                       s[j] == buf[j] ? puts ("  ") :
-                                               printf ("%02x",
-                                                       (s[j]) ^ (buf[j]));
-                               }
-                               putc ('\n');
-                       } else {
-                               printf (" [PASS] (%p) align=%d\n", s, align);
-                       }
-               }
-       }
-
-       return 0;
-}
-#endif
index 89dd9efe7849c9f52d9e2d22f02d7954a73764b5..fdb46b1f3598530fd37cef2ab135f1d0ff339cd5 100644 (file)
@@ -210,11 +210,7 @@ static int _draminit (uint base, uint noMbytes, uint edo, uint delay)
 
        switch (noMbytes) {
        case 4:                         /* 4 Mbyte uses only CS2 */
-#ifdef CONFIG_ADS
-               memctl->memc_mamr = 0xc0a21114;
-#else
                memctl->memc_mamr = 0x13a01114; /* PTA 0x13 AMA 010 */
-#endif
                memctl->memc_or2 = 0xffc00800;  /* 4M */
                break;
 
@@ -226,11 +222,7 @@ static int _draminit (uint base, uint noMbytes, uint edo, uint delay)
                break;
 
        case 16:                        /* 16 Mbyte uses only CS2 */
-#ifdef CONFIG_ADS      /* XXX: why PTA=0x60 only in 16M case? - NTL */
-               memctl->memc_mamr = 0x60b21114; /* PTA 0x60 AMA 011 */
-#else
                memctl->memc_mamr = 0x13b01114; /* PTA 0x13 AMA 011 */
-#endif
                memctl->memc_or2 = 0xff000800;  /* 16M */
                break;
 
@@ -674,42 +666,6 @@ int testdram (void)
  * Check Board Identity:
  */
 
-#if defined(CONFIG_FADS) && defined(CONFIG_SYS_DAUGHTERBOARD)
-static void checkdboard(void)
-{
-       /* get db type from BCSR 3 */
-       uint k = (*((uint *)BCSR3) >> 24) & 0x3f;
-
-       puts (" with db ");
-
-       switch(k) {
-       case 0x03 :
-               puts ("MPC823");
-               break;
-       case 0x20 :
-               puts ("MPC801");
-               break;
-       case 0x21 :
-               puts ("MPC850");
-               break;
-       case 0x22 :
-               puts ("MPC821, MPC860 / MPC860SAR / MPC860T");
-               break;
-       case 0x23 :
-               puts ("MPC860SAR");
-               break;
-       case 0x24 :
-       case 0x2A :
-               puts ("MPC860T");
-               break;
-       case 0x3F :
-               puts ("MPC850SAR");
-               break;
-       default : printf("0x%x", k);
-       }
-}
-#endif /* defined(CONFIG_FADS) && defined(CONFIG_SYS_DAUGHTERBOARD) */
-
 int checkboard (void)
 {
 #if   defined(CONFIG_MPC86xADS)
@@ -732,27 +688,12 @@ int checkboard (void)
        puts (" rev ");
 
        switch (r) {
-#if defined(CONFIG_ADS)
-       case 0x00:
-               puts ("ENG - this board sucks, check the errata, not supported\n");
-               return -1;
-       case 0x01:
-               puts ("PILOT - warning, read errata \n");
-               break;
-       case 0x02:
-               puts ("A - warning, read errata \n");
-               break;
-       case 0x03:
-               puts ("B\n");
-               break;
-#else  /* FADS */
        case 0x00:
                puts ("ENG\n");
                break;
        case 0x01:
                puts ("PILOT\n");
                break;
-#endif /* CONFIG_ADS */
        default:
                printf ("unknown (0x%x)\n", r);
                return -1;
@@ -865,12 +806,6 @@ int pcmcia_init(void)
 #endif
        case 5:
                printf("; using 5V");
-#ifdef CONFIG_ADS
-               /*
-               ** Enable 5 volt Vcc.
-               */
-               *((uint *)BCSR1) &= ~BCSR1_PCCVCCON;
-#endif
 #ifdef CONFIG_FADS
                /*
                ** Enable 5 volt Vcc.
index fa49080fb73064eb9037af4731a3f442bbee9741..1be00b904838dc35b1c1d1c8308f85e2e3e192c7 100644 (file)
  * motherboard and FEC Ethernet on daughterboard. All new PQ1 chips have
  * got FEC so FEC is the default.
  */
-#ifndef CONFIG_ADS
 #undef CONFIG_SCC1_ENET                /* Disable SCC1 ethernet */
 #define        CONFIG_FEC_ENET                 /* Use FEC ethernet  */
-#else                                  /* Old ADS has not got FEC option */
-#define        CONFIG_SCC1_ENET                /* Use SCC1 ethernet */
-#undef CONFIG_FEC_ENET                 /* No FEC ethernet  */
-#endif /* !CONFIG_ADS */
 
 #if defined(CONFIG_SCC1_ENET) && defined(CONFIG_FEC_ENET)
 #error Both CONFIG_SCC1_ENET and CONFIG_FEC_ENET configured
index 4e58291c06970ae638c8fba00adb26b5a083d942..ffcc2b3c41fd553dfac71e4ac8752b2af64dbe39 100644 (file)
@@ -1,7 +1,5 @@
 #include <config.h>
 
-#ifndef CONFIG_ADS /* Old ADS has not got any user-controllable LED */
-
 #include <common.h>
 
 void
@@ -43,5 +41,3 @@ fast_blink(unsigned int n)
     signal_delay(0x00100000);
   }
 }
-
-#endif /* !CONFIG_ADS */
index 99fe0b4fb97db038b47777693b03dd5fe1f8a0c1..996f032f644a7565e96ab374676986e7c1ae1868 100644 (file)
 
 #ifdef CONFIG_PCMCIA
 
-#ifdef CONFIG_ADS
-#define        PCMCIA_BOARD_MSG "ADS"
-#else
 #define        PCMCIA_BOARD_MSG "FADS"
-#endif
 
 int pcmcia_voltage_set(int slot, int vcc, int vpp)
 {
@@ -33,9 +29,6 @@ int pcmcia_voltage_set(int slot, int vcc, int vpp)
 
        switch(vcc) {
                case 0: reg = 0; break;
-#ifdef CONFIG_ADS
-       case 50: reg = BCSR1_PCCVCCON; break;
-#endif
 #ifdef CONFIG_FADS
        case 33: reg = BCSR1_PCCVCC0 | BCSR1_PCCVCC1; break;
        case 50: reg = BCSR1_PCCVCC1; break;
@@ -45,9 +38,6 @@ int pcmcia_voltage_set(int slot, int vcc, int vpp)
 
        /* first, turn off all power */
 
-#ifdef CONFIG_ADS
-       *((uint *)BCSR1) |= BCSR1_PCCVCCON;
-#endif
 #ifdef CONFIG_FADS
        *((uint *)BCSR1) &= ~(BCSR1_PCCVCC0 | BCSR1_PCCVCC1);
 #endif
@@ -55,9 +45,6 @@ int pcmcia_voltage_set(int slot, int vcc, int vpp)
 
        /* enable new powersettings */
 
-#ifdef CONFIG_ADS
-       *((uint *)BCSR1) &= ~reg;
-#endif
 #ifdef CONFIG_FADS
        *((uint *)BCSR1) |= reg;
 #endif
index e5cc054a01510a66bd699b1a84711d4e99853ac6..0acd2a9aa4a02e3ad2b495ecb80e61610f644aff 100644 (file)
@@ -4,9 +4,14 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
 obj-y  += b4860qds.o
-obj-y  += ddr.o
 obj-$(CONFIG_B4860QDS)+= eth_b4860qds.o
-obj-$(CONFIG_PCI)      += pci.o
+obj-$(CONFIG_PCI)      += pci.o
+endif
+
+obj-y  += ddr.o
 obj-y  += law.o
 obj-y  += tlb.o
index 57b726eead82de1794091602445a068e8f8d51bf..05377bac5bb248fd6706cbec1ec91f31720053e0 100644 (file)
@@ -22,6 +22,9 @@
 09110024 00100008
 09110028 00100008
 0911002c 00100008
+#slowing down the MDC clock to make it <= 2.5 MHZ
+094fc030 00008148
+094fd030 00008148
 #Flush PBL data
 09138000 00000000
 091380c0 00000000
index 187c3b3ebcae5092868c1f72a50c621cab47f96d..2c17156586dfa20ae5542039070845441379d15f 100644 (file)
@@ -179,6 +179,7 @@ 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();
@@ -186,7 +187,9 @@ phys_size_t initdram(int board_type)
        dram_size = setup_ddr_tlbs(dram_size / 0x100000);
        dram_size *= 0x100000;
 
-       puts("    DDR: ");
+#else
+       dram_size =  fsl_ddr_sdram_size();
+#endif
        return dram_size;
 }
 
diff --git a/board/freescale/b4860qds/spl.c b/board/freescale/b4860qds/spl.c
new file mode 100644 (file)
index 0000000..3aa5a78
--- /dev/null
@@ -0,0 +1,114 @@
+/* Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/spl.h>
+#include <malloc.h>
+#include <ns16550.h>
+#include <nand.h>
+#include <i2c.h>
+#include "../common/qixis.h"
+#include "b4860qds_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 & 0x0C) >> 2) {
+       case QIXIS_CLK_100:
+               return 100000000;
+       case QIXIS_CLK_125:
+               return 125000000;
+       case QIXIS_CLK_133:
+               return 133333333;
+       }
+       return 66666666;
+}
+
+unsigned long get_board_ddr_clk(void)
+{
+       u8 ddrclk_conf = QIXIS_READ(brdcfg[1]);
+
+       switch (ddrclk_conf & 0x03) {
+       case QIXIS_CLK_100:
+               return 100000000;
+       case QIXIS_CLK_125:
+               return 125000000;
+       case QIXIS_CLK_133:
+               return 133333333;
+       }
+       return 66666666;
+}
+
+void board_init_f(ulong bootflag)
+{
+       u32 plat_ratio, sys_clk, uart_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);
+
+       /* compiler optimization barrier needed for GCC >= 3.4 */
+       __asm__ __volatile__("" : : : "memory");
+
+       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;
+       uart_clk = sys_clk * plat_ratio / 2;
+
+       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+                    uart_clk / 16 / CONFIG_BAUDRATE);
+
+       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);
+
+#ifndef CONFIG_SPL_NAND_BOOT
+       env_init();
+       env_relocate();
+#else
+       /* relocate environment function pointers etc. */
+       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                           (uchar *)CONFIG_ENV_ADDR);
+       gd->env_addr  = (ulong)(CONFIG_ENV_ADDR);
+       gd->env_valid = 1;
+#endif
+
+       i2c_init_all();
+
+       puts("\n\n");
+
+       gd->ram_size = initdram(0);
+
+#ifdef CONFIG_SPL_NAND_BOOT
+       nand_boot();
+#endif
+}
index 00798a1c190da6ac3350b436e44df26f1468f3fb..7b55b860d088f00a85a3d301dd2bf4cb995552a1 100644 (file)
@@ -62,6 +62,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      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,
@@ -96,6 +97,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 9, 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,
@@ -118,6 +120,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * entry 14 and 15 has been used hard coded, they will be disabled
         * in cpu_init_f, so we use entry 16 for SRIO2.
         */
+#ifndef CONFIG_SPL_BUILD
 #ifdef CONFIG_SYS_SRIO1_MEM_PHYS
        /* *I*G* - SRIO1 */
        SET_TLB_ENTRY(1, CONFIG_SYS_SRIO1_MEM_VIRT, CONFIG_SYS_SRIO1_MEM_PHYS,
@@ -140,6 +143,13 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_G,
                      0, 17, BOOKE_PAGESZ_1M, 1),
 #endif
+#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, 17, BOOKE_PAGESZ_2G, 1)
+#endif
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 6da1d4b5f5cef55d0672302018b0ade6809a3323..61b83bfc63db0c7612f25f438092bde8405c13b9 100644 (file)
@@ -22,6 +22,7 @@ SECTIONS
          /* WARNING - the following is hand-optimized to fit within    */
          /* the sector layout of our flash chips!      XXX FIXME XXX   */
 
+         *                                     (.vectors)
          arch/arm/cpu/arm1136/start.o          (.text*)
          board/freescale/mx31ads/built-in.o    (.text*)
          arch/arm/lib/built-in.o               (.text*)
similarity index 63%
rename from board/mousse/Makefile
rename to board/freescale/qemu-ppce500/Makefile
index e2951d54ad924709cf498007ccbafc0d9aaae623..2d2749205f17235dd95e37ad46b9a55ed8911b74 100644 (file)
@@ -1,8 +1,9 @@
 #
+# Copyright 2007 Freescale Semiconductor, Inc.
 # (C) Copyright 2001-2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y  = mousse.o m48t59y.o pci.o flash.o
+obj-y  += qemu-ppce500.o
diff --git a/board/freescale/qemu-ppce500/qemu-ppce500.c b/board/freescale/qemu-ppce500/qemu-ppce500.c
new file mode 100644 (file)
index 0000000..3dbb0cf
--- /dev/null
@@ -0,0 +1,348 @@
+/*
+ * Copyright 2007,2009-2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <pci.h>
+#include <asm/processor.h>
+#include <asm/mmu.h>
+#include <asm/fsl_pci.h>
+#include <asm/io.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <netdev.h>
+#include <fdtdec.h>
+#include <errno.h>
+#include <malloc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void *get_fdt_virt(void)
+{
+       return (void *)CONFIG_SYS_TMPVIRT;
+}
+
+static uint64_t get_fdt_phys(void)
+{
+       return (uint64_t)(uintptr_t)gd->fdt_blob;
+}
+
+static void map_fdt_as(int esel)
+{
+       u32 mas0, mas1, mas2, mas3, mas7;
+       uint64_t fdt_phys = get_fdt_phys();
+       unsigned long fdt_phys_tlb = fdt_phys & ~0xffffful;
+       unsigned long fdt_virt_tlb = (ulong)get_fdt_virt() & ~0xffffful;
+
+       mas0 = MAS0_TLBSEL(1) | MAS0_ESEL(esel);
+       mas1 = MAS1_VALID | MAS1_TID(0) | MAS1_TS | MAS1_TSIZE(BOOKE_PAGESZ_1M);
+       mas2 = FSL_BOOKE_MAS2(fdt_virt_tlb, 0);
+       mas3 = FSL_BOOKE_MAS3(fdt_phys_tlb, 0, MAS3_SW|MAS3_SR);
+       mas7 = FSL_BOOKE_MAS7(fdt_phys_tlb);
+
+       write_tlb(mas0, mas1, mas2, mas3, mas7);
+}
+
+uint64_t get_phys_ccsrbar_addr_early(void)
+{
+       void *fdt = get_fdt_virt();
+       uint64_t r;
+
+       /*
+        * To be able to read the FDT we need to create a temporary TLB
+        * map for it.
+        */
+       map_fdt_as(10);
+       r = fdt_get_base_address(fdt, fdt_path_offset(fdt, "/soc"));
+       disable_tlb(10);
+
+       return r;
+}
+
+int board_early_init_f(void)
+{
+       return 0;
+}
+
+int checkboard(void)
+{
+       return 0;
+}
+
+static int pci_map_region(void *fdt, int pci_node, int range_id,
+                         phys_size_t *ppaddr, pci_addr_t *pvaddr,
+                         pci_size_t *psize, ulong *pmap_addr)
+{
+       uint64_t addr;
+       uint64_t size;
+       ulong map_addr;
+       int r;
+
+       r = fdt_read_range(fdt, pci_node, 0, NULL, &addr, &size);
+       if (r)
+               return r;
+
+       if (ppaddr)
+               *ppaddr = addr;
+       if (psize)
+               *psize = size;
+
+       if (!pmap_addr)
+               return 0;
+
+       map_addr = *pmap_addr;
+
+       /* Align map_addr */
+       map_addr += size - 1;
+       map_addr &= ~(size - 1);
+
+       if (map_addr + size >= CONFIG_SYS_PCI_MAP_END)
+               return -1;
+
+       /* Map virtual memory for range */
+       assert(!tlb_map_range(map_addr, addr, size, TLB_MAP_IO));
+       *pmap_addr = map_addr + size;
+
+       if (pvaddr)
+               *pvaddr = map_addr;
+
+       return 0;
+}
+
+void pci_init_board(void)
+{
+       struct pci_controller *pci_hoses;
+       void *fdt = get_fdt_virt();
+       int pci_node = -1;
+       int pci_num = 0;
+       int pci_count = 0;
+       ulong map_addr;
+
+       puts("\n");
+
+       /* Start MMIO and PIO range maps above RAM */
+       map_addr = CONFIG_SYS_PCI_MAP_START;
+
+       /* Count and allocate PCI buses */
+       pci_node = fdt_node_offset_by_prop_value(fdt, pci_node,
+                       "device_type", "pci", 4);
+       while (pci_node != -FDT_ERR_NOTFOUND) {
+               pci_node = fdt_node_offset_by_prop_value(fdt, pci_node,
+                               "device_type", "pci", 4);
+               pci_count++;
+       }
+
+       if (pci_count) {
+               pci_hoses = malloc(sizeof(struct pci_controller) * pci_count);
+       } else {
+               printf("PCI: disabled\n\n");
+               return;
+       }
+
+       /* Spawn PCI buses based on device tree */
+       pci_node = fdt_node_offset_by_prop_value(fdt, pci_node,
+                       "device_type", "pci", 4);
+       while (pci_node != -FDT_ERR_NOTFOUND) {
+               struct fsl_pci_info pci_info = { };
+               const fdt32_t *reg;
+               int r;
+
+               reg = fdt_getprop(fdt, pci_node, "reg", NULL);
+               pci_info.regs = fdt_translate_address(fdt, pci_node, reg);
+
+               /* Map MMIO range */
+               r = pci_map_region(fdt, pci_node, 0, &pci_info.mem_phys, NULL,
+                                  &pci_info.mem_size, &map_addr);
+               if (r)
+                       break;
+
+               /* Map PIO range */
+               r = pci_map_region(fdt, pci_node, 1, &pci_info.io_phys, NULL,
+                                  &pci_info.io_size, &map_addr);
+               if (r)
+                       break;
+
+               /*
+                * The PCI framework finds virtual addresses for the buses
+                * through our address map, so tell it the physical addresses.
+                */
+               pci_info.mem_bus = pci_info.mem_phys;
+               pci_info.io_bus = pci_info.io_phys;
+
+               /* Instantiate */
+               pci_info.pci_num = pci_num + 1;
+
+               fsl_setup_hose(&pci_hoses[pci_num], pci_info.regs);
+               printf("PCI: base address %lx\n", pci_info.regs);
+
+               fsl_pci_init_port(&pci_info, &pci_hoses[pci_num], pci_num);
+
+               /* Jump to next PCI node */
+               pci_node = fdt_node_offset_by_prop_value(fdt, pci_node,
+                               "device_type", "pci", 4);
+               pci_num++;
+       }
+
+       puts("\n");
+}
+
+int last_stage_init(void)
+{
+       void *fdt = get_fdt_virt();
+       int len = 0;
+       const uint64_t *prop;
+       int chosen;
+
+       chosen = fdt_path_offset(fdt, "/chosen");
+       if (chosen < 0) {
+               printf("Couldn't find /chosen node in fdt\n");
+               return -EIO;
+       }
+
+       /* -kernel boot */
+       prop = fdt_getprop(fdt, chosen, "qemu,boot-kernel", &len);
+       if (prop && (len >= 8))
+               setenv_hex("qemu_kernel_addr", *prop);
+
+       /* Give the user a variable for the host fdt */
+       setenv_hex("fdt_addr_r", (ulong)fdt);
+
+       return 0;
+}
+
+static uint64_t get_linear_ram_size(void)
+{
+       void *fdt = get_fdt_virt();
+       const void *prop;
+       int memory;
+       int len;
+
+       memory = fdt_path_offset(fdt, "/memory");
+       prop = fdt_getprop(fdt, memory, "reg", &len);
+
+       if (prop && len >= 16)
+               return *(uint64_t *)(prop+8);
+
+       panic("Couldn't determine RAM size");
+}
+
+int board_eth_init(bd_t *bis)
+{
+       return pci_eth_init(bis);
+}
+
+#if defined(CONFIG_OF_BOARD_SETUP)
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       FT_FSL_PCI_SETUP;
+}
+#endif
+
+void print_laws(void)
+{
+       /* We don't emulate LAWs yet */
+}
+
+phys_size_t fixed_sdram(void)
+{
+       return get_linear_ram_size();
+}
+
+phys_size_t fsl_ddr_sdram_size(void)
+{
+       return get_linear_ram_size();
+}
+
+void init_tlbs(void)
+{
+       phys_size_t ram_size;
+
+       /*
+        * Create a temporary AS=1 map for the fdt
+        *
+        * We use ESEL=0 here to overwrite the previous AS=0 map for ourselves
+        * which was only 4k big. This way we don't have to clear any other maps.
+        */
+       map_fdt_as(0);
+
+       /* Fetch RAM size from the fdt */
+       ram_size = get_linear_ram_size();
+
+       /* And remove our fdt map again */
+       disable_tlb(0);
+
+       /* Create an internal map of manually created TLB maps */
+       init_used_tlb_cams();
+
+       /* Create a dynamic AS=0 CCSRBAR mapping */
+       assert(!tlb_map_range(CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
+                             1024 * 1024, TLB_MAP_IO));
+
+       /* Create a RAM map that spans all accessible RAM */
+       setup_ddr_tlbs(ram_size >> 20);
+
+       /* Create a map for the TLB */
+       assert(!tlb_map_range((ulong)get_fdt_virt(), get_fdt_phys(),
+                             1024 * 1024, TLB_MAP_RAM));
+}
+
+void init_laws(void)
+{
+       /* We don't emulate LAWs yet */
+}
+
+static uint32_t get_cpu_freq(void)
+{
+       void *fdt = get_fdt_virt();
+       int cpus_node = fdt_path_offset(fdt, "/cpus");
+       int cpu_node = fdt_first_subnode(fdt, cpus_node);
+       const char *prop = "clock-frequency";
+       return fdt_getprop_u32_default_node(fdt, cpu_node, 0, prop, 0);
+}
+
+void get_sys_info(sys_info_t *sys_info)
+{
+       int freq = get_cpu_freq();
+
+       memset(sys_info, 0, sizeof(sys_info_t));
+       sys_info->freq_systembus = freq;
+       sys_info->freq_ddrbus = freq;
+       sys_info->freq_processor[0] = freq;
+}
+
+int get_clocks (void)
+{
+       sys_info_t sys_info;
+
+       get_sys_info(&sys_info);
+
+       gd->cpu_clk = sys_info.freq_processor[0];
+       gd->bus_clk = sys_info.freq_systembus;
+       gd->mem_clk = sys_info.freq_ddrbus;
+       gd->arch.lbc_clk = sys_info.freq_ddrbus;
+
+       return 0;
+}
+
+unsigned long get_tbclk (void)
+{
+       void *fdt = get_fdt_virt();
+       int cpus_node = fdt_path_offset(fdt, "/cpus");
+       int cpu_node = fdt_first_subnode(fdt, cpus_node);
+       const char *prop = "timebase-frequency";
+       return fdt_getprop_u32_default_node(fdt, cpu_node, 0, prop, 0);
+}
+
+/********************************************
+ * get_bus_freq
+ * return system bus freq in Hz
+ *********************************************/
+ulong get_bus_freq (ulong dummy)
+{
+       sys_info_t sys_info;
+       get_sys_info(&sys_info);
+       return sys_info.freq_systembus;
+}
index da89a36b96ad58b23aacf68f3c9f85c123dd95f6..43f952f9c03b4e8fc21d5854adf5e48a510993a7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013 Freescale Semiconductor, Inc.
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -39,14 +39,10 @@ void fsl_ddr_board_options(memctl_options_t *popts,
                if (pbsp->n_ranks == pdimm->n_ranks &&
                    (pdimm->rank_density >> 30) >= pbsp->rank_gb) {
                        if (ddr_freq <= pbsp->datarate_mhz_high) {
-                               popts->cpo_override = pbsp->cpo;
-                               popts->write_data_delay =
-                                       pbsp->write_data_delay;
                                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;
-                               popts->twot_en = pbsp->force_2t;
                                goto found;
                        }
                        pbsp_highest = pbsp;
@@ -59,13 +55,10 @@ void fsl_ddr_board_options(memctl_options_t *popts,
                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->cpo_override = pbsp_highest->cpo;
-               popts->write_data_delay = pbsp_highest->write_data_delay;
                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;
-               popts->twot_en = pbsp_highest->force_2t;
        } else {
                panic("DIMM is not supported by this board");
        }
@@ -81,7 +74,7 @@ found:
         * Factors to consider for half-strength driver enable:
         *      - number of DIMMs installed
         */
-       popts->half_strength_driver_enable = 0;
+       popts->half_strength_driver_enable = 1;
        /*
         * Write leveling override
         */
@@ -97,8 +90,14 @@ found:
        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
 }
 
 phys_size_t initdram(int board_type)
index afa72af26a6c368c48f4d012e089b6d2663d884e..a6e1673525f5d3cc50f1c1e2ab2e3f610c5c8434 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013 Freescale Semiconductor, Inc.
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -14,9 +14,6 @@ struct board_specific_parameters {
        u32 wrlvl_start;
        u32 wrlvl_ctl_2;
        u32 wrlvl_ctl_3;
-       u32 cpo;
-       u32 write_data_delay;
-       u32 force_2t;
 };
 
 /*
@@ -28,21 +25,25 @@ struct board_specific_parameters {
 static const struct board_specific_parameters udimm0[] = {
        /*
         * memory controller 0
-        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
-        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl |
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |
         */
-       {2,  833,  4, 4,     6, 0x06060607, 0x08080807,   0xff,    2,  0},
-       {2,  833,  0, 4,     6, 0x06060607, 0x08080807,   0xff,    2,  0},
-       {2,  1350, 4, 4,     7, 0x0708080A, 0x0A0B0C09,   0xff,    2,  0},
-       {2,  1350, 0, 4,     7, 0x0708080A, 0x0A0B0C09,   0xff,    2,  0},
-       {2,  1666, 4, 4,     7, 0x0808090B, 0x0C0D0E0A,   0xff,    2,  0},
-       {2,  1666, 0, 4,     7, 0x0808090B, 0x0C0D0E0A,   0xff,    2,  0},
-       {1,  833,  4, 4,     6, 0x06060607, 0x08080807,   0xff,    2,  0},
-       {1,  833,  0, 4,     6, 0x06060607, 0x08080807,   0xff,    2,  0},
-       {1,  1350, 4, 4,     7, 0x0708080A, 0x0A0B0C09,   0xff,    2,  0},
-       {1,  1350, 0, 4,     7, 0x0708080A, 0x0A0B0C09,   0xff,    2,  0},
-       {1,  1666, 4, 4,     7, 0x0808090B, 0x0C0D0E0A,   0xff,    2,  0},
-       {1,  1666, 0, 4,     7, 0x0808090B, 0x0C0D0E0A,   0xff,    2,  0},
+#ifdef 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
        {}
 };
 
index 3dec4473e527a6656adb41f64dc3216926a3451b..0e83d172dac53f582ac8f00f7b247893dfd95fb0 100644 (file)
@@ -18,6 +18,8 @@
 #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 "t1040qds.h"
@@ -89,6 +91,30 @@ int select_i2c_ch_pca9547(u8 ch)
        return 0;
 }
 
+static void qe_board_setup(void)
+{
+       u8 brdcfg15, brdcfg9;
+
+       if (hwconfig("qe") && hwconfig("tdm")) {
+               brdcfg15 = QIXIS_READ(brdcfg[15]);
+               /*
+                * TDMRiser uses QE-TDM
+                * Route QE_TDM signals to TDM Riser slot
+                */
+               QIXIS_WRITE(brdcfg[15], brdcfg15 | 7);
+       } else if (hwconfig("qe") && hwconfig("uart")) {
+               brdcfg15 = QIXIS_READ(brdcfg[15]);
+               brdcfg9 = QIXIS_READ(brdcfg[9]);
+               /*
+                * Route QE_TDM signals to UCC
+                * ProfiBus controlled by UCC3
+                */
+               brdcfg15 &= 0xfc;
+               QIXIS_WRITE(brdcfg[15], brdcfg15 | 2);
+               QIXIS_WRITE(brdcfg[9], brdcfg9 | 4);
+       }
+}
+
 int board_early_init_r(void)
 {
 #ifdef CONFIG_SYS_FLASH_BASE
@@ -196,6 +222,8 @@ int misc_init_r(void)
                }
        }
 
+       qe_board_setup();
+
        return 0;
 }
 
@@ -245,3 +273,14 @@ int board_need_mem_reset(void)
 {
        return 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
index e51fb7a7f45cf123bb233192e4b17fbd9c0d0408..6cd304cce91c2e396ebc0eb997ff907c2df4da26 100644 (file)
@@ -4,10 +4,14 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
 obj-y  += t104xrdb.o
-obj-y  += ddr.o
+obj-y  += cpld.o
 obj-y  += eth.o
 obj-$(CONFIG_PCI)      += pci.o
+endif
+obj-y  += ddr.o
 obj-y  += law.o
 obj-y  += tlb.o
index 1da52bb0b0087f74be16407c31778b6bbade8e4a..cdbe1fafd9a0ab384d0a26bc42d935fcb7b22417 100644 (file)
@@ -198,3 +198,76 @@ The below commands apply to the board
 
        2.To change from vbank4 to vbank0
                => qixis reset (it will boot using vbank0)
+
+NAND boot with 2 Stage boot loader
+----------------------------------
+PBL initialise the internal SRAM and copy SPL(160KB) in SRAM.
+SPL further initialise DDR using SPD and environment variables and copy
+u-boot(768 KB) from flash to DDR.
+Finally SPL transer control to u-boot for futher booting.
+
+SPL has following features:
+ - Executes within 256K
+ - No relocation required
+
+ Run time view of SPL framework during  boot :-
+ -----------------------------------------------
+ Area        | Address                         |
+-----------------------------------------------
+ Secure boot | 0xFFFC0000 (32KB)               |
+ headers     |                                 |
+ -----------------------------------------------
+ GD, BD      | 0xFFFC8000 (4KB)                |
+ -----------------------------------------------
+ ENV         | 0xFFFC9000 (8KB)                |
+ -----------------------------------------------
+ HEAP        | 0xFFFCB000 (30KB)               |
+ -----------------------------------------------
+ STACK       | 0xFFFD8000 (22KB)               |
+ -----------------------------------------------
+ U-boot SPL  | 0xFFFD8000 (160KB)              |
+ -----------------------------------------------
+
+NAND Flash memory Map on T104xRDB
+------------------------------------------
+ Start          End            Definition                      Size
+0x000000       0x0FFFFF        u-boot                          1MB
+0x180000       0x19FFFF        u-boot env                      128KB
+0x280000       0x29FFFF        FMAN Ucode                      128KB
+0x380000       0x39FFFF        QE Firmware                     128KB
+
+SD Card memory Map on T104xRDB
+------------------------------------------
+ Block         #blocks         Definition                      Size
+0x008          2048            u-boot                          1MB
+0x800          0024            u-boot env                      8KB
+0x820          0256            FMAN Ucode                      128KB
+0x920          0256            QE Firmware                     128KB
+
+SPI Flash memory Map on T104xRDB
+------------------------------------------
+ Start          End            Definition                      Size
+0x000000       0x0FFFFF        u-boot                          1MB
+0x100000       0x101FFF        u-boot env                      8KB
+0x110000       0x12FFFF        FMAN Ucode                      128KB
+0x130000       0x14FFFF        QE Firmware                     128KB
+
+Please note QE Firmware is only valid for T1040RDB
+
+
+Switch Settings: (ON is 0, OFF is 1)
+===============
+NAND boot SW setting:
+SW1: 10001000
+SW2: 00111001
+SW3: 11110001
+
+SPI boot SW setting:
+SW1: 00100010
+SW2: 10111001
+SW3: 11100001
+
+SD boot SW setting:
+SW1: 00100000
+SW2: 00111001
+SW3: 11100001
diff --git a/board/freescale/t104xrdb/cpld.c b/board/freescale/t104xrdb/cpld.c
new file mode 100644 (file)
index 0000000..df0e348
--- /dev/null
@@ -0,0 +1,112 @@
+/**
+ * Copyright 2014 Freescale Semiconductor
+ *
+ * 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 reg = CPLD_READ(flash_ctl_status);
+
+       reg = (reg & ~CPLD_BANK_SEL_MASK) | CPLD_LBMAP_ALTBANK;
+
+       CPLD_WRITE(flash_ctl_status, 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_ctl_status);
+
+       reg = (reg & ~CPLD_BANK_SEL_MASK) | CPLD_LBMAP_DFLTBANK;
+
+       CPLD_WRITE(flash_ctl_status, reg);
+       CPLD_WRITE(reset_ctl1, CPLD_LBMAP_RESET);
+}
+
+#ifdef DEBUG
+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_ctl_status = 0x%02x\n", CPLD_READ(flash_ctl_status));
+       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');
+}
+#endif
+
+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 - hard reset to default bank\n"
+       "cpld reset altbank - reset to alternate bank\n"
+#ifdef DEBUG
+       "cpld dump - display the CPLD registers\n"
+#endif
+       );
diff --git a/board/freescale/t104xrdb/cpld.h b/board/freescale/t104xrdb/cpld.h
new file mode 100644 (file)
index 0000000..0da9a01
--- /dev/null
@@ -0,0 +1,40 @@
+/**
+ * Copyright 2013 Freescale Semiconductor
+ *
+ * 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 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_ctl_status;    /* 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)
index 57d0f9cfd867bbe83375aa998f7748ee7b2d26b9..34c9224adb67e11b5ee149894e2e6def9442e890 100644 (file)
@@ -113,6 +113,7 @@ 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();
@@ -120,6 +121,8 @@ phys_size_t initdram(int board_type)
        dram_size = setup_ddr_tlbs(dram_size / 0x100000);
        dram_size *= 0x100000;
 
-       puts("    DDR: ");
+#else
+       dram_size =  fsl_ddr_sdram_size();
+#endif
        return dram_size;
 }
index 0188fd4090bf88bd8b253360c81a92cf84846d39..63e5f900da73ec45b1b29b24ba8b21c01dd7d906 100644 (file)
@@ -41,6 +41,7 @@ int board_eth_init(bd_t *bis)
                        /* T1040RDB only supports SGMII on DTSEC3 */
                        fm_info_set_phy_address(FM1_DTSEC3,
                                                CONFIG_SYS_SGMII1_PHY_ADDR);
+                       break;
 #endif
                case PHY_INTERFACE_MODE_RGMII:
                        if (FM1_DTSEC4 == i)
diff --git a/board/freescale/t104xrdb/spl.c b/board/freescale/t104xrdb/spl.c
new file mode 100644 (file)
index 0000000..c628c95
--- /dev/null
@@ -0,0 +1,122 @@
+/* Copyright 2013 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;
+}
+
+#define FSL_CORENET_CCSR_PORSR1_RCW_MASK       0xFF800000
+void board_init_f(ulong bootflag)
+{
+       u32 plat_ratio, sys_clk, uart_clk;
+#ifdef CONFIG_SPL_NAND_BOOT
+       u32 porsr1, pinctl;
+#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);
+#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);
+
+       /* compiler optimization barrier needed for GCC >= 3.4 */
+       __asm__ __volatile__("" : : : "memory");
+
+       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;
+       uart_clk = sys_clk * plat_ratio / 2;
+
+       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+                    uart_clk / 16 / CONFIG_BAUDRATE);
+
+       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_MMC_BOOT
+       mmc_initialize(bd);
+#endif
+
+       /* relocate environment function pointers etc. */
+#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_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();
+
+       puts("\n\n");
+
+       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/t104xrdb/t1040_rcw.cfg b/board/freescale/t104xrdb/t1040_rcw.cfg
new file mode 100644 (file)
index 0000000..3300c18
--- /dev/null
@@ -0,0 +1,7 @@
+#PBL preamble and RCW header
+aa55aa55 010e0100
+# serdes protocol 0x66
+0c18000e 0e000000 00000000 00000000
+66000002 80000002 e8106000 01000000
+00000000 00000000 00000000 00032810
+00000000 0342500f 00000000 00000000
diff --git a/board/freescale/t104xrdb/t1042_rcw.cfg b/board/freescale/t104xrdb/t1042_rcw.cfg
new file mode 100644 (file)
index 0000000..a3ea8ad
--- /dev/null
@@ -0,0 +1,7 @@
+#PBL preamble and RCW header
+aa55aa55 010e0100
+# serdes protocol 0x66
+0c18000e 0e000000 00000000 00000000
+06000002 00400002 e8106000 01000000
+00000000 00000000 00000000 00030810
+00000000 01fe0a06 00000000 00000000
diff --git a/board/freescale/t104xrdb/t104x_pbi.cfg b/board/freescale/t104xrdb/t104x_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
index 6e29d6410775511b263ccb09da6bf5fd6ed17abe..fb5b84940eaebdefcd7ac1bcd282f610e431377b 100644 (file)
 #include <asm/fsl_portals.h>
 #include <asm/fsl_liodn.h>
 #include <fm_eth.h>
+#include <asm/mpc85xx_gpio.h>
 
 #include "t104xrdb.h"
+#include "cpld.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
 int checkboard(void)
 {
        struct cpu_type *cpu = gd->arch.cpu;
+       u8 sw;
 
        printf("Board: %sRDB\n", cpu->name);
+       printf("Board rev: 0x%02x CPLD ver: 0x%02x, ",
+              CPLD_READ(hw_ver), CPLD_READ(sw_ver));
+
+       sw = CPLD_READ(flash_ctl_status);
+       sw = ((sw & CPLD_LBMAP_MASK) >> CPLD_LBMAP_SHIFT);
+
+       if (sw <= 7)
+               printf("vBank: %d\n", sw);
+       else
+               printf("Unsupported Bank=%x\n", sw);
+
        return 0;
 }
 
@@ -91,3 +105,12 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
 #endif
 }
+
+#ifdef CONFIG_DEEP_SLEEP
+void board_mem_sleep_setup(void)
+{
+       /* Disable MCKE isolation */
+       gpio_set_value(2, 0);
+       udelay(1);
+}
+#endif
index 84f97a41e3699f153ea79c4d1571993e0a21be53..95c15aa5965a5c260f6d690fd2aa40be3ace1a1d 100644 (file)
@@ -53,6 +53,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      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,
@@ -82,6 +83,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      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,
@@ -102,6 +104,16 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      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
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 947b7f73241379d08bcea48c3fbf25566020209e..6cb72c9fd5dce24158f1930079ba692002a7192e 100644 (file)
@@ -4,11 +4,16 @@
 # SPDX-License-Identifier:      GPL-2.0+
 #
 
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
 obj-$(CONFIG_T2080QDS) += t208xqds.o
 obj-$(CONFIG_T2080QDS) += eth_t208xqds.o
 obj-$(CONFIG_T2081QDS) += t208xqds.o
 obj-$(CONFIG_T2081QDS) += eth_t208xqds.o
 obj-$(CONFIG_PCI)      += pci.o
+endif
+
 obj-y   += ddr.o
 obj-y   += law.o
 obj-y   += tlb.o
index ed1334d98593e9eed17bfb0f6eca43964c3a1898..3348971b01eb00211acd8654c096f043037728db 100644 (file)
@@ -107,13 +107,16 @@ 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
 
-       puts("    DDR: ");
        return dram_size;
 }
diff --git a/board/freescale/t208xqds/spl.c b/board/freescale/t208xqds/spl.c
new file mode 100644 (file)
index 0000000..a71c617
--- /dev/null
@@ -0,0 +1,137 @@
+/* Copyright 2013 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 "t208xqds_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;
+
+       /* 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
+}
index 62cd11033add2f55566a56b7de16b14f4d9e6ead..8d602989b2dd92b1ce78f31db2aa04cdc461d637 100644 (file)
@@ -65,6 +65,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
                      0, 2, BOOKE_PAGESZ_256M, 1),
 
+#ifndef CONFIG_SPL_BUILD
        /* *I*G* - PCIe 1, 0x80000000 */
        SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
@@ -110,6 +111,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 12, 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,
@@ -141,6 +143,11 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      0, 18, BOOKE_PAGESZ_1M, 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, 19, BOOKE_PAGESZ_2G, 1)
+#endif
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 092c9ff0dcefc1c621ca1f8c6d08b7a7f8a5a6d8..9605f8b606c5e27927befe14b2b25c4ce2922ba6 100644 (file)
@@ -4,10 +4,15 @@
 # SPDX-License-Identifier:      GPL-2.0+
 #
 
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
 obj-$(CONFIG_T2080RDB) += t208xrdb.o
 obj-$(CONFIG_T2080RDB) += eth_t208xrdb.o
 obj-$(CONFIG_T2080RDB) += cpld.o
 obj-$(CONFIG_PCI)      += pci.o
+endif
+
 obj-y   += ddr.o
 obj-y   += law.o
 obj-y   += tlb.o
index 0012c6cb408dddecbe367646af636a91a79de2ce..24484cd0ffca70334ce50a76a0997a668f0c1e84 100644 (file)
@@ -67,7 +67,7 @@ T2080PCIe-RDB board Overview
      - One PCIe x2 end-point device (C293 Crypto co-processor)
  - IFC/Local Bus
      - NOR:  128MB 16-bit NOR Flash
-     - NAND: 512MB 8-bit NAND flash
+     - NAND: 1GB 8-bit NAND flash
      - CPLD: for system controlling with programable header on-board
  - SATA
      - Two SATA 2.0 onnectors on-board
@@ -120,7 +120,7 @@ Start Address   End Address Definition                      Max size
 0xEBF00000     0xEBF1FFFF      FMAN ucode (alt bank)           128KB
 0xEBE00000     0xEBE3FFFF      PHY CS4315 firmware (alt bank)  256KB
 0xE9300000     0xEBEFFFFF      rootfs (current bank)           44MB
-0xE8800000     0xE88FFFFF      Hardware device tree (cur bank) 11MB + 512KB
+0xE8800000     0xE88FFFFF      Hardware device tree (cur bank) 1MB
 0xE8020000     0xE86FFFFF      Linux.uImage (current bank)     7MB + 875KB
 0xE8000000     0xE801FFFF      RCW (current bank)              128KB
 
@@ -146,7 +146,8 @@ Software configurations and board settings
 ------------------------------------------
 1. NOR boot:
    a. build NOR boot image
-       $ make T2080RDB
+       $ make T2080RDB_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
@@ -155,18 +156,18 @@ Software configurations and board settings
    Switching between default bank and alternate bank 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] = '011'
+       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] = '111'
+       via DIP-Switch: set SW3[5:7] = '000'
 
 2. NAND Boot:
    a. build PBL image for NAND boot
        $ make T2080RDB_NAND_config
-       $ make u-boot.pbl
-   b. program u-boot.pbl to NAND flash
-       => tftp 1000000 u-boot.pbl
+       $ make
+   b. program u-boot-with-spl-pbl.bin to NAND flash
+       => tftp 1000000 u-boot-with-spl-pbl.bin
        => nand erase 0 d0000
        => nand write 1000000 0 $filesize
        set SW1[1:8] = '10000010', SW2[1] = '1', SW3[4] = '1' for NAND boot
@@ -174,9 +175,9 @@ Software configurations and board settings
 3. SPI Boot:
    a. build PBL image for SPI boot
        $ make T2080RDB_SPIFLASH_config
-       $ make u-boot.pbl
-   b. program u-boot.pbl to SPI flash
-       => tftp 1000000 u-boot.pbl
+       $ 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 d0000
        => sf write 1000000 0 $filesize
@@ -185,13 +186,68 @@ Software configurations and board settings
 4. SD Boot:
    a. build PBL image for SD boot
        $ make T2080RDB_SDCARD_config
-       $ make u-boot.pbl
-   b. program u-boot.pbl to TF card
-       => tftp 1000000 u-boot.pbl
-       => mmc write 1000000 8 1650
+       $ make
+   b. program u-boot-with-spl-pbl.bin to micro-SD/TF card
+       => tftp 1000000 u-boot-with-spl-pbl.bin
+       => mmc write 1000000 8 0x800
        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 T2080RDB
+--------------------------------------------------------------
+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)
+0x200000       0x27FFFF        CS4315 ucode    512KB (1 block)
+
+
+Micro SD Card memory Map on T2080RDB
+----------------------------------------------------
+Block          #blocks         Definition      Size
+0x008          2048            u-boot img      1MB
+0x800          0016            u-boot env      8KB
+0x820          0128            FMAN ucode      64KB
+0x8a0          0512            CS4315 ucode    256KB
+
+
+SPI Flash memory Map on T2080RDB
+----------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot img      1MB
+0x100000       0x101FFF        u-boot env      8KB
+0x110000       0x11FFFF        FMAN ucode      64KB
+0x120000        0x15FFFF        CS4315 ucode   256KB
+
+
 How to update the ucode of Cortina CS4315/CS4340 10G PHY
 --------------------------------------------------------
 => tftp 1000000 CS4315-CS4340-PHY-ucode.txt
index 4cee4e55cfcbdbce150ebda3054811ddde709a59..3f1533888ddf51acd9a0e3c9e2b40027268fa318 100644 (file)
@@ -35,8 +35,8 @@ void cpld_write(unsigned int reg, u8 value);
 #define CPLD_LBMAP_MASK                0x3F
 #define CPLD_BANK_SEL_MASK     0x07
 #define CPLD_BANK_OVERRIDE     0x40
-#define CPLD_LBMAP_ALTBANK     0x43 /* BANK OR | BANK 4 */
-#define CPLD_LBMAP_DFLTBANK    0x47 /* BANK OR | BANK 0 */
+#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
index 01e917398f93372be22be2246dd07a9aa0ee1166..8a26276273566fff4268950bc76cdba930eafe20 100644 (file)
@@ -100,13 +100,15 @@ 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;
-
-       puts("    DDR: ");
+#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/t208xrdb/spl.c b/board/freescale/t208xrdb/spl.c
new file mode 100644 (file)
index 0000000..9ae2b1e
--- /dev/null
@@ -0,0 +1,107 @@
+/* Copyright 2013 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
+}
index f3fec2aa6ebc49c69931dbe0f6c45c9836b1791a..265c1f97ddbb6bb927bc2d24129419100647ab85 100644 (file)
@@ -44,7 +44,7 @@ int checkboard(void)
                puts("NAND\n");
        } else {
                reg = ((reg & CPLD_LBMAP_MASK) >> CPLD_LBMAP_SHIFT);
-               printf("NOR vBank%d\n", ~reg & 0x7);
+               printf("NOR vBank%d\n", reg);
        }
 #endif
 
index 085d9f5c6a9c591e0327b4798b40dddd475a5928..2ebea36a5c22d5664c3fea4129f347bb8b6bc2af 100644 (file)
@@ -65,6 +65,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
                      0, 2, BOOKE_PAGESZ_256M, 1),
 
+#ifndef CONFIG_SPL_BUILD
        /* *I*G* - PCIe 1, 0x80000000 */
        SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
@@ -110,6 +111,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 12, 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,
@@ -140,7 +142,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_G,
                      0, 18, BOOKE_PAGESZ_1M, 1),
 #endif
-#if defined(CONFIG_SYS_RAMBOOT)
+#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, 19, BOOKE_PAGESZ_2G, 1)
index 2b1f7aa3019d313ea4448ce09d9dc6fcc2a79ba5..4e8e5cb8e9ae0168c58f05977d074b116eb65cc8 100644 (file)
@@ -4,10 +4,14 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
 obj-$(CONFIG_T4240QDS) += t4240qds.o
 obj-$(CONFIG_T4240EMU) += t4240emu.o
-obj-y  += ddr.o
 obj-$(CONFIG_T4240QDS)+= eth.o
 obj-$(CONFIG_PCI)      += pci.o
+endif
+obj-y  += ddr.o
 obj-y  += law.o
 obj-y  += tlb.o
index 7586cc3c4bda640e0e07ee786fdd6490bee8e2e4..7abd38def1af6c5751eacfa24d81dab2fd213997 100644 (file)
@@ -117,11 +117,15 @@ phys_size_t initdram(int board_type)
 
        puts("Initializing....using SPD\n");
 
+#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_RAMBOOT_PBL)
        dram_size = fsl_ddr_sdram();
 
        dram_size = setup_ddr_tlbs(dram_size / 0x100000);
        dram_size *= 0x100000;
 
-       puts("    DDR: ");
+#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/t4qds/spl.c b/board/freescale/t4qds/spl.c
new file mode 100644 (file)
index 0000000..0c6156e
--- /dev/null
@@ -0,0 +1,141 @@
+/* Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/spl.h>
+#include <malloc.h>
+#include <ns16550.h>
+#include <nand.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <i2c.h>
+#include "../common/qixis.h"
+#include "t4240qds_qixis.h"
+
+#define FSL_CORENET_CCSR_PORSR1_RCW_MASK       0xFF800000
+
+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;
+#ifdef CONFIG_SPL_NAND_BOOT
+       u32 porsr1, pinctl;
+#endif
+
+#ifdef CONFIG_SPL_NAND_BOOT
+       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);
+
+       /* compiler optimization barrier needed for GCC >= 3.4 */
+       __asm__ __volatile__("" : : : "memory");
+
+       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);
+
+#ifdef CONFIG_SPL_MMC_BOOT
+       puts("\nSD 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
+
+       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_NAND_BOOT)
+       nand_boot();
+#endif
+}
index c598fb5afd85c2e897cb1a1b9c8baa4e0976beee..6126266a96fd2315c6ca68c80d5c9681152ef70f 100644 (file)
 09000d00 00000000
 09000d04 fff80000
 09000d08 81000012
-#workaround for IFC bus speed
-091241c0 f03f3f3f
-091241c4 ff003f3f
-09124010 00000101
-09124130 0000000c
-#workaround for SERDES A-006031
-090ea000 064740e6
-090ea020 064740e6
-090eb000 064740e6
-090eb020 064740e6
-090ec000 064740e6
-090ec020 064740e6
-090ed000 064740e6
-090ed020 064740e6
 #Configure alternate space
 09000010 00000000
 09000014 ff000000
index 74df01a70c26930051cc80b626af24773d4d2d84..3e5681720464070af50480578aabcc174b4051ec 100644 (file)
@@ -1,7 +1,7 @@
 #PBL preamble and RCW header
 aa55aa55 010e0100
 #serdes protocol  1_28_6_12
-120c0019 0c101915 00000000 00000000
-04383063 30548c00 6c020000 1d000000
+16070019 18101916 00000000 00000000
+04383060 30548c00 ec020000 f5000000
 00000000 ee0000ee 00000000 000307fc
-00000000 00000000 00000000 00000020
+00000000 00000000 00000000 00000028
index b701e7520938d0d98321ece92f7836af1d98fc3a..1e4d096f5f9716649a23a7eabb48f976bd10f1ef 100644 (file)
@@ -64,7 +64,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
        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,
@@ -105,6 +105,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 12, 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,
@@ -136,6 +137,11 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      0, 18, BOOKE_PAGESZ_1M, 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, 19, BOOKE_PAGESZ_2G, 1)
+#endif
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
diff --git a/board/genietv/Makefile b/board/genietv/Makefile
deleted file mode 100644 (file)
index fd11f14..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  = genietv.o flash.o
diff --git a/board/genietv/flash.c b/board/genietv/flash.c
deleted file mode 100644 (file)
index 5f57978..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * (C) Copyright 2000-2011
- * 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];
-
-/*-----------------------------------------------------------------------
- * 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)
-{
-       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;
-
-       /* Detect size */
-       size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE,
-                       &flash_info[0]);
-
-       /* Setup offsets */
-       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_b0;
-
-       return size_b0;
-}
-
-/*-----------------------------------------------------------------------
- * Fix this to support variable sector sizes
-*/
-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) {
-               /* set sector offsets for bottom boot block type        */
-               for (i = 0; i < info->sector_count; i++)
-                       info->start[i] = base + (i * 0x00010000);
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-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:
-               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_AM040:
-               printf("29F040 or 29LV040 (4 Mbit, uniform sectors)\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;
-       }
-
-       if (info->size >> 20) {
-               printf("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20,
-                       info->sector_count);
-       } else {
-               printf("  Size: %ld KB in %d Sectors\n",
-                       info->size >> 10,
-                       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)" : "     ");
-       }
-
-       putc('\n');
-       return;
-}
-/*-----------------------------------------------------------------------
- */
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size(vu_long *addr, flash_info_t *info)
-{
-       short i;
-       volatile unsigned char *caddr;
-       char value;
-
-       caddr = (volatile unsigned char *)addr ;
-
-       /* Write auto select command: read Manufacturer ID */
-
-       debug("Base address is: %8p\n", caddr);
-
-       caddr[0x0555] = 0xAA;
-       caddr[0x02AA] = 0x55;
-       caddr[0x0555] = 0x90;
-
-       value = caddr[0];
-
-       debug("Manufact ID: %02x\n", value);
-
-       switch (value) {
-       case 0x1: /* AMD_MANUFACT */
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case 0x4: /* FUJ_MANUFACT */
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               break;
-       }
-
-       value = caddr[1];                       /* device ID            */
-
-       debug("Device ID: %02x\n", value);
-
-       switch (value) {
-       case AMD_ID_LV040B:
-               info->flash_id += FLASH_AM040;
-               info->sector_count = 8;
-               info->size = 0x00080000;
-               break;                          /* => 512Kb             */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return 0;                       /* => no or unknown flash */
-       }
-
-       flash_get_offsets((ulong)addr, &flash_info[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
-                */
-               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 = (volatile unsigned char *)info->start[0];
-               *caddr = 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 - 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();
-
-       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] & 0xFF) != 0xFF) {
-
-               now = get_timer(start);
-
-               if (now > 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;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       l = addr - wp;
-
-       if (l != 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);
-
-               rc = write_word(info, wp, data);
-
-               if (rc != 0)
-                       return rc;
-
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i = 0; i < 4; ++i)
-                       data = (data << 8) | *src++;
-
-               rc = write_word(info, wp, data);
-
-               if (rc != 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 unsigned char *cdest, *cdata;
-       volatile unsigned char *addr =
-               (volatile unsigned char *)(info->start[0]);
-       ulong start;
-       int flag, count = 4 ;
-
-       cdest = (volatile unsigned char *)dest ;
-       cdata = (volatile unsigned char *)&data ;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_long *)dest) & data) != data)
-               return 2;
-
-       while (count--) {
-
-               /* Disable interrupts which might cause a timeout here */
-               flag = disable_interrupts();
-
-               addr[0x0555] = 0xAA;
-               addr[0x02AA] = 0x55;
-               addr[0x0555] = 0xA0;
-
-               *cdest = *cdata;
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               /* data polling for D7 */
-               start = get_timer(0);
-               while ((*cdest ^ *cdata) & 0x80) {
-                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                               return 1;
-               }
-
-               cdata++ ;
-               cdest++ ;
-       }
-       return 0;
-}
diff --git a/board/genietv/genietv.c b/board/genietv/genietv.c
deleted file mode 100644 (file)
index 0a015ea..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * genietv/genietv.c
- *
- * The GENIETV is using the following physical memorymap (copied from
- * the FADS configuration):
- *
- * ff020000 -> ff02ffff : pcmcia
- * ff010000 -> ff01ffff : BCSR       connected to CS1, setup by 8xxROM
- * ff000000 -> ff00ffff : IMAP       internal in the cpu
- * 02800000 -> 0287ffff : flash      connected to CS0
- * 00000000 -> nnnnnnnn : sdram      setup by U-Boot
- *
- * CS pins are connected as follows:
- *
- * CS0 -512Kb boot flash
- * CS1 - SDRAM #1
- * CS2 - SDRAM #2
- * CS3 - Flash #1
- * CS4 - Flash #2
- * CS5 - LON (if present)
- * CS6 - PCMCIA #1
- * CS7 - PCMCIA #2
- *
- * Ports are configured as follows:
- *
- * PA7 - SDRAM banks enable
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-#define CONFIG_SYS_PA7         0x0100
-
-/* ------------------------------------------------------------------------- */
-
-static long int dram_size (long int, long int *, long int);
-
-/* ------------------------------------------------------------------------- */
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-       /*
-        * Single Read. (Offset 0 in UPMB RAM)
-        */
-       0x1F0DFC04, 0xEEAFBC04, 0x11AF7C04, 0xEFBEEC00,
-       0x1FFDDC47,             /* last */
-       /*
-        * SDRAM Initialization (offset 5 in UPMB 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.
-        *
-        */
-       0x1FFDDC34, 0xEFEEAC34, 0x1FBD5C35,     /* last */
-       /*
-        * Burst Read. (Offset 8 in UPMB RAM)
-        */
-       0x1F0DFC04, 0xEEAFBC04, 0x10AF7C04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBEEC00, 0x1FFDDC47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Single Write. (Offset 18 in UPMB RAM)
-        */
-       0x1F2DFC04, 0xEEAFAC00, 0x01BE4C04, 0x1FFDDC47, /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Burst Write. (Offset 20 in UPMB RAM)
-        */
-       0x1F0DFC04, 0xEEAFAC00, 0x10AF5C00, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BEEC04, 0x1FFDDC47,     /* last */
-       _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Refresh  (Offset 30 in UPMB RAM)
-        */
-       0x1FFD7C84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07, /* last */
-       _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       /*
-        * Exception. (Offset 3c in UPMB RAM)
-        */
-       0x7FFFFC07,             /* last */
-       _NOT_USED_, _NOT_USED_, _NOT_USED_,
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity
- */
-
-int checkboard (void)
-{
-       puts ("Board: GenieTV\n");
-       return 0;
-}
-
-#if 0
-static void PrintState (void)
-{
-       volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &im->im_memctl;
-
-       printf ("\n0 - FLASH: B=%08x O=%08x", memctl->memc_br0,
-               memctl->memc_or0);
-       printf ("\n1 - SDRAM: B=%08x O=%08x", memctl->memc_br1,
-               memctl->memc_or1);
-       printf ("\n2 - SDRAM: B=%08x O=%08x", memctl->memc_br2,
-               memctl->memc_or2);
-}
-#endif
-
-/* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-       volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &im->im_memctl;
-       long int size_b0, size_b1, size8;
-
-       /* Enable SDRAM */
-
-       /* Configuring PA7 for general purpouse output pin */
-       im->im_ioport.iop_papar &= ~CONFIG_SYS_PA7;     /* 0 = general purpouse */
-       im->im_ioport.iop_padir |= CONFIG_SYS_PA7;      /* 1 = output */
-
-       /* Enable SDRAM - PA7 = 1 */
-       im->im_ioport.iop_padat |= CONFIG_SYS_PA7;      /* value of PA7 */
-
-       /*
-        * 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_4K;
-
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_8COL;
-
-       upmconfig (UPMB, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Map controller banks 1 and 2 to the SDRAM banks 1 and 2 at
-        * preliminary addresses - these have to be modified after the
-        * SDRAM size has been determined.
-        */
-
-       memctl->memc_or1 = 0xF0000000 | CONFIG_SYS_OR_TIMING_SDRAM;
-       memctl->memc_br1 =
-               ((SDRAM_BASE1_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V);
-
-       memctl->memc_or2 = 0xF0000000 | CONFIG_SYS_OR_TIMING_SDRAM;
-       memctl->memc_br2 =
-               ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMB | BR_V);
-
-       /* perform SDRAM initialization sequence */
-       memctl->memc_mar = 0x00000088;
-
-       memctl->memc_mcr = 0x80802105;  /* SDRAM bank 0 */
-
-       memctl->memc_mcr = 0x80804105;  /* SDRAM bank 1 */
-
-       /* Execute refresh 8 times */
-       memctl->memc_mbmr = (CONFIG_SYS_MBMR_8COL & ~MBMR_TLFB_MSK) | MBMR_TLFB_8X;
-
-       memctl->memc_mcr = 0x80802130;  /* SDRAM bank 0 - execute twice */
-
-       memctl->memc_mcr = 0x80804130;  /* SDRAM bank 1 - execute twice */
-
-       /* Execute refresh 4 times */
-       memctl->memc_mbmr = CONFIG_SYS_MBMR_8COL;
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        *
-        * try 8 column mode
-        */
-
-#if 0
-       PrintState ();
-#endif
-/*    printf ("\nChecking bank1..."); */
-       size8 = dram_size (CONFIG_SYS_MBMR_8COL, (long *) SDRAM_BASE1_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       size_b0 = size8;
-
-/*    printf ("\nChecking bank2..."); */
-       size_b1 =
-               dram_size (memctl->memc_mbmr, (long *) SDRAM_BASE2_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       /*
-        * 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_UPMB | BR_V;
-
-       if (size_b1 > 0) {
-               /*
-                * Position Bank 1 immediately above Bank 0
-                */
-               memctl->memc_or2 =
-                       ((-size_b1) & 0xFFFF0000) | CONFIG_SYS_OR_TIMING_SDRAM;
-               memctl->memc_br2 =
-                       ((CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMB | BR_V) +
-                       (size_b0 & BR_BA_MSK);
-       } else {
-               /*
-                * No bank 1
-                *
-                * invalidate bank
-                */
-               memctl->memc_br2 = 0;
-               /* adjust refresh rate depending on SDRAM type, one bank */
-               memctl->memc_mptpr = CONFIG_SYS_MPTPR_1BK_4K;
-       }
-
-       /* If no memory detected, disable SDRAM */
-       if ((size_b0 + size_b1) == 0) {
-               printf ("disabling SDRAM!\n");
-               /* Disable SDRAM - PA7 = 1 */
-               im->im_ioport.iop_padat &= ~CONFIG_SYS_PA7;     /* value of PA7 */
-       }
-/*     else */
-/*    printf("done! (%08lx)\n", size_b0 + size_b1); */
-
-#if 0
-       PrintState ();
-#endif
-       return (size_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * 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 mbmr_value, long int *base,
-                          long int maxsize)
-{
-       long size;
-
-       /*memctl->memc_mbmr = mbmr_value; */
-
-       size = get_ram_size (base, maxsize);
-
-       if (size) {
-/*      printf("(%08lx)", size); */
-       } else {
-               printf ("(0)");
-       }
-
-       return (size);
-}
-
-#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)
-{
-       volatile pcmconf8xx_t *pcmp;
-       uint v, slota, slotb;
-
-       /*
-        ** Enable the PCMCIA for a Flash card.
-        */
-       pcmp = (pcmconf8xx_t *) (&(((immap_t *) CONFIG_SYS_IMMR)->im_pcmcia));
-
-#if 0
-       pcmp->pcmc_pbr0 = CONFIG_SYS_PCMCIA_MEM_ADDR;
-       pcmp->pcmc_por0 = 0xc00ff05d;
-#endif
-
-       /* Set all slots to zero by default. */
-       pcmp->pcmc_pgcra = 0;
-       pcmp->pcmc_pgcrb = 0;
-#ifdef PCMCIA_SLOT_A
-       pcmp->pcmc_pgcra = 0x40;
-#endif
-#ifdef PCMCIA_SLOT_B
-       pcmp->pcmc_pgcrb = 0x40;
-#endif
-
-       /* Check if any PCMCIA card is luged in. */
-       slota = (pcmp->pcmc_pipr & 0x18000000) == 0;
-       slotb = (pcmp->pcmc_pipr & 0x00001800) == 0;
-
-       if (!(slota || slotb)) {
-               printf ("No card present\n");
-#ifdef PCMCIA_SLOT_A
-               pcmp->pcmc_pgcra = 0;
-#endif
-#ifdef PCMCIA_SLOT_B
-               pcmp->pcmc_pgcrb = 0;
-#endif
-               return -1;
-       } else
-               printf ("Unknown card (");
-
-       v = 0;
-
-       switch ((pcmp->pcmc_pipr >> 14) & 3) {
-       case 0x00:
-               printf ("5V");
-               v = 5;
-               break;
-       case 0x01:
-               printf ("5V and 3V");
-               v = 3;
-               break;
-       case 0x03:
-               printf ("5V, 3V and x.xV");
-               v = 3;
-               break;
-       }
-
-       switch (v) {
-       case 3:
-               printf ("; using 3V");
-               /* Enable 3 volt Vcc. */
-
-               break;
-
-       default:
-               printf ("; unknown voltage");
-               return -1;
-       }
-       printf (")\n");
-       /* disable pcmcia reset after a while */
-
-       udelay (20);
-
-       pcmp->pcmc_pgcrb = 0;
-
-       /* If you using a real hd you should give a short
-        * spin-up time. */
-#ifdef CONFIG_DISK_SPINUP_TIME
-       udelay (CONFIG_DISK_SPINUP_TIME);
-#endif
-
-       return 0;
-}
-#endif
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
deleted file mode 100644 (file)
index 70ab702..0000000
+++ /dev/null
@@ -1,101 +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*)
-    lib/built-in.o                     (.text*)
-    net/built-in.o                     (.text*)
-    arch/powerpc/cpu/mpc8xx/built-in.o (.text*)
-    board/genietv/built-in.o           (.text*)
-    arch/powerpc/lib/built-in.o                (.text*)
-    *(.text.do_load_serial*)
-    *(.text.do_mem_*)
-    *(.text.do_bootm*)
-
-    . = 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: */
-  . = (. + 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(256 * 1024);
-  .ppcenv      :
-  {
-    common/env_embedded.o (.ppcenv)
-  }
-  . = ALIGN(4);
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/genietv/u-boot.lds.debug b/board/genietv/u-boot.lds.debug
deleted file mode 100644 (file)
index cc8cd3a..0000000
+++ /dev/null
@@ -1,127 +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)
-    arch/powerpc/lib/ppcstring.o       (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-    lib/zlib.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)
-  }
-  . = ALIGN(256 * 1024);
-  .ppcenv      :
-  {
-    common/env_embedded.o (.ppcenv)
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/hidden_dragon/early_init.S b/board/hidden_dragon/early_init.S
deleted file mode 100644 (file)
index 5a9b924..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2001
- * Thomas Koeller, tkoeller@gmx.net
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __ASSEMBLY__
-#define __ASSEMBLY__   1
-#endif
-
-#include <asm-offsets.h>
-#include <config.h>
-#include <asm/processor.h>
-#include <mpc824x.h>
-#include <ppc_asm.tmpl>
-
-#if defined(USE_DINK32)
-  /* We are running from RAM, so do not clear the MCCR1_MEMGO bit! */
-  #define MCCR1VAL ((CONFIG_SYS_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CONFIG_SYS_ROMFAL << MCCR1_ROMFAL_SHIFT) | MCCR1_MEMGO)
-#else
-  #define MCCR1VAL (CONFIG_SYS_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CONFIG_SYS_ROMFAL << MCCR1_ROMFAL_SHIFT)
-#endif
-
-       .text
-
-       /* Values to program into memory controller registers */
-tbl:   .long   MCCR1, MCCR1VAL
-       .long   MCCR2, CONFIG_SYS_REFINT << MCCR2_REFINT_SHIFT
-       .long   MCCR3
-       .long   (((CONFIG_SYS_BSTOPRE & 0x000000f0) >> 4) << MCCR3_BSTOPRE2TO5_SHIFT) | \
-               (CONFIG_SYS_REFREC << MCCR3_REFREC_SHIFT) | \
-               (CONFIG_SYS_RDLAT  << MCCR3_RDLAT_SHIFT)
-       .long   MCCR4
-       .long   (CONFIG_SYS_PRETOACT << MCCR4_PRETOACT_SHIFT) | (CONFIG_SYS_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) | \
-               (CONFIG_SYS_REGISTERD_TYPE_BUFFER << 20) | \
-               (((CONFIG_SYS_BSTOPRE & 0x00000300) >> 8) << MCCR4_BSTOPRE0TO1_SHIFT ) | \
-               ((CONFIG_SYS_SDMODE_CAS_LAT << 4) | (CONFIG_SYS_SDMODE_WRAP << 3) | \
-               (CONFIG_SYS_SDMODE_BURSTLEN) << MCCR4_SDMODE_SHIFT) | \
-               (CONFIG_SYS_ACTTORW << MCCR4_ACTTORW_SHIFT) | \
-               ((CONFIG_SYS_BSTOPRE & 0x0000000f) << MCCR4_BSTOPRE6TO9_SHIFT )
-       .long   MSAR1
-       .long   (((CONFIG_SYS_BANK0_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMSAR1
-       .long   (((CONFIG_SYS_BANK0_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   MSAR2
-       .long   (((CONFIG_SYS_BANK4_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMSAR2
-       .long   (((CONFIG_SYS_BANK4_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   MEAR1
-       .long   (((CONFIG_SYS_BANK0_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMEAR1
-       .long   (((CONFIG_SYS_BANK0_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   MEAR2
-       .long   (((CONFIG_SYS_BANK4_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMEAR2
-       .long   (((CONFIG_SYS_BANK4_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   0
-
-
-       /*
-        * Early CPU initialization. Set up memory controller, so we can access any RAM at all. This
-        * must be done in assembly, since we have no stack at this point.
-        */
-       .global early_init_f
-early_init_f:
-       mflr    r10
-
-       /* basic memory controller configuration */
-       lis     r3, CONFIG_ADDR_HIGH
-       lis     r4, CONFIG_DATA_HIGH
-       bl      lab
-lab:   mflr    r5
-       lwzu    r0, tbl - lab(r5)
-loop:  lwz     r1, 4(r5)
-       stwbrx  r0, 0, r3
-       eieio
-       stwbrx  r1, 0, r4
-       eieio
-       lwzu    r0, 8(r5)
-       cmpli   cr0, 0, r0, 0
-       bne     cr0, loop
-
-       /* set bank enable bits */
-       lis     r0, MBER@h
-       ori     r0, 0, MBER@l
-       li      r1, CONFIG_SYS_BANK_ENABLE
-       stwbrx  r0, 0, r3
-       eieio
-       stb     r1, 0(r4)
-       eieio
-
-       /* delay loop */
-       lis     r0, 0x0003
-       mtctr   r0
-delay: bdnz    delay
-
-       /* enable memory controller */
-       lis     r0, MCCR1@h
-       ori     r0, 0, MCCR1@l
-       stwbrx  r0, 0, r3
-       eieio
-       lwbrx   r0, 0, r4
-       oris    r0, 0, MCCR1_MEMGO@h
-       stwbrx  r0, 0, r4
-       eieio
-
-       /* set up stack pointer */
-       lis     r1, CONFIG_SYS_INIT_SP_OFFSET@h
-       ori     r1, r1, CONFIG_SYS_INIT_SP_OFFSET@l
-
-       mtlr    r10
-       blr
diff --git a/board/ids/ids8313/Makefile b/board/ids/ids8313/Makefile
new file mode 100644 (file)
index 0000000..56cfd40
--- /dev/null
@@ -0,0 +1,11 @@
+#
+# (C) Copyright 2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2013
+# Heiko Schocher, DENX Software Engineering, <hs@denx.de>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  = ids8313.o
diff --git a/board/ids/ids8313/ids8313.c b/board/ids/ids8313/ids8313.c
new file mode 100644 (file)
index 0000000..f742143
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * (C) Copyright 2013
+ * Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * Based on:
+ * Copyright (c) 2011 IDS GmbH, Germany
+ * ids8313.c - ids8313 board support.
+ *
+ * Sergej Stepanov <ste@ids.de>
+ * Based on board/freescale/mpc8313erdb/mpc8313erdb.c
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <mpc83xx.h>
+#include <spi.h>
+#include <libfdt.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+/** CPLD contains the info about:
+ * - board type: *pCpld & 0xF0
+ * - hw-revision: *pCpld & 0x0F
+ * - cpld-revision: *pCpld+1
+ */
+int checkboard(void)
+{
+       char *pcpld = (char *)CONFIG_SYS_CPLD_BASE;
+       u8 u8Vers = readb(pcpld);
+       u8 u8Revs = readb(pcpld + 1);
+
+       printf("Board: ");
+       switch (u8Vers & 0xF0) {
+       case '\x40':
+               printf("CU73X");
+               break;
+       case '\x50':
+               printf("CC73X");
+               break;
+       default:
+               printf("unknown(0x%02X, 0x%02X)\n", u8Vers, u8Revs);
+               return 0;
+       }
+       printf("\nInfo:  HW-Rev: %i, CPLD-Rev: %i\n",
+              u8Vers & 0x0F, u8Revs & 0xFF);
+       return 0;
+}
+
+/*
+ *  fixed sdram init
+ */
+int fixed_sdram(unsigned long config)
+{
+       immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
+       u32 msize = CONFIG_SYS_DDR_SIZE << 20;
+
+#ifndef CONFIG_SYS_RAMBOOT
+       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);
+       sync();
+
+       /*
+        * Erratum DDR3 requires a 50ms delay after clearing DDRCDR[DDR_cfg],
+        * or the DDR2 controller may fail to initialize correctly.
+        */
+       udelay(50000);
+
+       out_be32(&im->ddr.csbnds[0].csbnds, (msize - 1) >> 24);
+       out_be32(&im->ddr.cs_config[0], config);
+
+       /* currently we use only one CS, so disable the other banks */
+       out_be32(&im->ddr.cs_config[1], 0);
+       out_be32(&im->ddr.cs_config[2], 0);
+       out_be32(&im->ddr.cs_config[3], 0);
+
+       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_SDRAM_CFG);
+       out_be32(&im->ddr.sdram_cfg2, CONFIG_SYS_SDRAM_CFG2);
+
+       out_be32(&im->ddr.sdram_mode, CONFIG_SYS_DDR_MODE);
+       out_be32(&im->ddr.sdram_mode2, CONFIG_SYS_DDR_MODE_2);
+
+       out_be32(&im->ddr.sdram_interval, CONFIG_SYS_DDR_INTERVAL);
+       out_be32(&im->ddr.sdram_clk_cntl, CONFIG_SYS_DDR_CLK_CNTL);
+       sync();
+       udelay(300);
+
+       /* enable DDR controller */
+       setbits_be32(&im->ddr.sdram_cfg, SDRAM_CFG_MEM_EN);
+       /* now check the real size */
+       disable_addr_trans();
+       msize = get_ram_size(CONFIG_SYS_DDR_BASE, msize);
+       enable_addr_trans();
+#endif
+       return msize;
+}
+
+static int setup_sdram(void)
+{
+       u32 msize = CONFIG_SYS_DDR_SIZE << 20;
+       long int size_01, size_02;
+
+       size_01 = fixed_sdram(CONFIG_SYS_DDR_CONFIG);
+       size_02 = fixed_sdram(CONFIG_SYS_DDR_CONFIG_256);
+
+       if (size_01 > size_02)
+               msize = fixed_sdram(CONFIG_SYS_DDR_CONFIG);
+       else
+               msize = size_02;
+
+       return msize;
+}
+
+phys_size_t initdram(int board_type)
+{
+       immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
+       fsl_lbc_t *lbc = &im->im_lbc;
+       u32 msize = 0;
+
+       if ((in_be32(&im->sysconf.immrbar) & IMMRBAR_BASE_ADDR) != (u32)im)
+               return -1;
+
+       msize = setup_sdram();
+
+       out_be32(&lbc->lbcr, CONFIG_SYS_LBC_LBCR);
+       out_be32(&lbc->mrtpr, CONFIG_SYS_LBC_MRTPR);
+       sync();
+
+       return msize;
+}
+
+#if defined(CONFIG_OF_BOARD_SETUP)
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       ft_cpu_setup(blob, bd);
+}
+#endif
+
+/* gpio mask for spi_cs */
+#define IDSCPLD_SPI_CS_MASK            0x00000001
+/* spi_cs multiplexed through cpld */
+#define IDSCPLD_SPI_CS_BASE            (CONFIG_SYS_CPLD_BASE + 0xf)
+
+#if defined(CONFIG_MISC_INIT_R)
+/* srp umcr mask for rts */
+#define IDSUMCR_RTS_MASK 0x04
+int misc_init_r(void)
+{
+       /*srp*/
+       duart83xx_t *uart1 = &((immap_t *)CONFIG_SYS_IMMR)->duart[0];
+       duart83xx_t *uart2 = &((immap_t *)CONFIG_SYS_IMMR)->duart[1];
+
+       gpio83xx_t *iopd = &((immap_t *)CONFIG_SYS_IMMR)->gpio[0];
+       u8 *spi_base = (u8 *)IDSCPLD_SPI_CS_BASE;
+
+       /* deactivate spi_cs channels */
+       out_8(spi_base, 0);
+       /* deactivate the spi_cs */
+       setbits_be32(&iopd->dir, IDSCPLD_SPI_CS_MASK);
+       /*srp - deactivate rts*/
+       out_8(&uart1->umcr, IDSUMCR_RTS_MASK);
+       out_8(&uart2->umcr, IDSUMCR_RTS_MASK);
+
+
+       gd->fdt_blob = (void *)CONFIG_SYS_FLASH_BASE;
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_MPC8XXX_SPI
+/*
+ * The following are used to control the SPI chip selects
+ */
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+{
+       return bus == 0 && ((cs >= 0) && (cs <= 2));
+}
+
+void spi_cs_activate(struct spi_slave *slave)
+{
+       gpio83xx_t *iopd = &((immap_t *)CONFIG_SYS_IMMR)->gpio[0];
+       u8 *spi_base = (u8 *)IDSCPLD_SPI_CS_BASE;
+
+       /* select the spi_cs channel */
+       out_8(spi_base, 1 << slave->cs);
+       /* activate the spi_cs */
+       clrbits_be32(&iopd->dat, IDSCPLD_SPI_CS_MASK);
+}
+
+void spi_cs_deactivate(struct spi_slave *slave)
+{
+       gpio83xx_t *iopd = &((immap_t *)CONFIG_SYS_IMMR)->gpio[0];
+       u8 *spi_base = (u8 *)IDSCPLD_SPI_CS_BASE;
+
+       /* select the spi_cs channel */
+       out_8(spi_base, 1 << slave->cs);
+       /* deactivate the spi_cs */
+       setbits_be32(&iopd->dat, IDSCPLD_SPI_CS_MASK);
+}
+#endif /* CONFIG_HARD_SPI */
diff --git a/board/incaip/Makefile b/board/incaip/Makefile
deleted file mode 100644 (file)
index 602d30e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = incaip.o flash.o
-obj-y  += lowlevel_init.o
diff --git a/board/incaip/README b/board/incaip/README
deleted file mode 100644 (file)
index 1329152..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-Flash programming on the INCA-IP board is complicated because of the
-EBU swapping unit. A BDI2000 can be used for flash programming only
-if the EBU swapping unit is enabled; otherwise it will not detect the
-flash memory. But the EBU swapping unit is disadbled after reset, so
-if you program some code to flash with the swapping unit on, it will
-not be runnable with the swapping unit off.
-
-The consequence is that you have to write a pre-swapped image to
-flash using the BDI2000. A simple host-side tool "inca-swap-bytes" is
-provided in the "tools/" directory. Use it as follows:
-
-       bash$ ./inca-swap-bytes <u-boot.bin >u-boot.bin.swp
-
-Note that the current BDI config file _disables_ the EBU swapping
-unit for the flash bank 0. To enable it, (this is required for the
-BDI flash commands to work) uncomment the following line in the
-config file:
-
-       ;WM32   0xb8000260      0x404161ff ; Swapping unit enabled
-
-and comment out
-
-       WM32    0xb8000260      0x004161ff ; Swapping unit disabled
-
-Alternatively, you can use "mm 0xb8000260 <value>" commands to
-enable/disable the swapping unit manually.
-
-Just for reference, here is the complete sequence of actions we took
-to install a U-Boot image into flash.
-
-    1. ./inca-swap-bytes <u-boot.bin >u-boot.bin.swp
-
-    2. From BDI:
-
-       mm 0xb8000260  0x404161ff
-       erase 0xb0000000
-       erase 0xb0010000
-       prog 0xb0000000 /tftpboot/INCA/u-boot.bin.swp bin
-       mm 0xb8000260 0x004161ff
-       go 0xb0000000
-
-
-Ethernet autonegotiation needs some time to complete. Instead of
-delaying the boot process in all cases, we just start the
-autonegotiation process when U-Boot comes up and that is all. Most
-likely, it will complete by the time the network transfer is
-attempted for the first time. In the worst case, if a transfer is
-attempted before the autonegotiation is complete, just a single
-packet would be lost resulting in a single timeout error, and then
-the transfer would proceed normally. So the time that we would have
-lost unconditionally waiting for the autonegotiation to complete, we
-have to wait only if the file transfer is started immediately after
-reset. We've verified that this works for all the clock
-configurations.
-
-(C) 2003 Wolfgang Denk
diff --git a/board/incaip/config.mk b/board/incaip/config.mk
deleted file mode 100644 (file)
index e854f8e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2003
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# INCA-IP board with MIPS 4Kc CPU core
-#
-
-# ROM version
-CONFIG_SYS_TEXT_BASE = 0xB0000000
-
-# RAM version
-#CONFIG_SYS_TEXT_BASE = 0x80100000
diff --git a/board/incaip/flash.c b/board/incaip/flash.c
deleted file mode 100644 (file)
index a786ac9..0000000
+++ /dev/null
@@ -1,655 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/inca-ip.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)
-
-#if 0
-#define FLASH_CYCLE1   0x0555
-#define FLASH_CYCLE2   0x02aa
-#else
-#define FLASH_CYCLE1   0x0554
-#define FLASH_CYCLE2   0x02ab
-#endif
-
-/*-----------------------------------------------------------------------
- * 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) {
-               ulong flashbase = (i == 0) ? PHYS_FLASH_1 : PHYS_FLASH_2;
-               ulong * buscon = (ulong *)
-                       ((i == 0) ? INCA_IP_EBU_EBU_BUSCON0 : INCA_IP_EBU_EBU_BUSCON2);
-
-               /* Disable write protection */
-               *buscon &= ~INCA_IP_EBU_EBU_BUSCON1_WRDIS;
-
-#if 1
-               memset(&flash_info[i], 0, sizeof(flash_info_t));
-#endif
-
-               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;
-}
-
-/*-----------------------------------------------------------------------
- */
-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.
-        */
-       switch (addr[1] & 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[0]) {
-
-       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/incaip/incaip.c b/board/incaip/incaip.c
deleted file mode 100644 (file)
index 217b8af..0000000
+++ /dev/null
@@ -1,110 +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 <netdev.h>
-#include <asm/addrspace.h>
-#include <asm/inca-ip.h>
-#include <asm/io.h>
-#include <asm/reboot.h>
-
-extern uint incaip_get_cpuclk(void);
-
-void _machine_restart(void)
-{
-       *INCA_IP_WDT_RST_REQ = 0x3f;
-}
-
-static ulong max_sdram_size(void)
-{
-       /* The only supported SDRAM data width is 16bit.
-        */
-#define CONFIG_SYS_DW  2
-
-       /* The only supported number of SDRAM banks is 4.
-        */
-#define CONFIG_SYS_NB  4
-
-       ulong cfgpb0 = *INCA_IP_SDRAM_MC_CFGPB0;
-       int   cols   = cfgpb0 & 0xF;
-       int   rows   = (cfgpb0 & 0xF0) >> 4;
-       ulong size   = (1 << (rows + cols)) * CONFIG_SYS_DW * CONFIG_SYS_NB;
-
-       return size;
-}
-
-phys_size_t initdram(int board_type)
-{
-       int   rows, cols, best_val = *INCA_IP_SDRAM_MC_CFGPB0;
-       ulong size, max_size       = 0;
-       ulong our_address;
-
-       asm volatile ("move %0, $25" : "=r" (our_address) :);
-
-               /* Can't probe for RAM size unless we are running from Flash.
-                */
-       if (CPHYSADDR(our_address) < CPHYSADDR(PHYS_FLASH_1))
-       {
-               return max_sdram_size();
-       }
-
-       for (cols = 0x8; cols <= 0xC; cols++)
-       {
-               for (rows = 0xB; rows <= 0xD; rows++)
-               {
-                       *INCA_IP_SDRAM_MC_CFGPB0 = (0x14 << 8) |
-                                                  (rows << 4) | cols;
-                       size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
-                                                            max_sdram_size());
-
-                       if (size > max_size)
-                       {
-                               best_val = *INCA_IP_SDRAM_MC_CFGPB0;
-                               max_size = size;
-                       }
-               }
-       }
-
-       *INCA_IP_SDRAM_MC_CFGPB0 = best_val;
-       return max_size;
-}
-
-int checkboard (void)
-{
-       unsigned long chipid = *INCA_IP_WDT_CHIPID;
-       int part_num;
-
-       puts ("Board: INCA-IP ");
-       part_num = (chipid >> 12) & 0xffff;
-       switch (part_num) {
-       case 0xc0:
-               printf ("Standard Version, ");
-               break;
-       case 0xc1:
-               printf ("Basic Version, ");
-               break;
-       default:
-               printf ("Unknown Part Number 0x%x ", part_num);
-               break;
-       }
-
-       printf ("Chip V1.%ld, ", (chipid >> 28));
-
-       printf("CPU Speed %d MHz\n", incaip_get_cpuclk()/1000000);
-
-       set_io_port_base(0);
-
-       return 0;
-}
-
-#if defined(CONFIG_INCA_IP_SWITCH)
-int board_eth_init(bd_t *bis)
-{
-       return inca_switch_initialize(bis);
-}
-#endif
diff --git a/board/incaip/lowlevel_init.S b/board/incaip/lowlevel_init.S
deleted file mode 100644 (file)
index b6cf6a9..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- *  Memory sub-system initialization code for INCA-IP development board.
- *
- *  Copyright (c) 2003 Wolfgang Denk <wd@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <asm/regdef.h>
-
-
-#define EBU_MODUL_BASE         0xB8000200
-#define EBU_CLC(value)         0x0000(value)
-#define EBU_CON(value)         0x0010(value)
-#define EBU_ADDSEL0(value)     0x0020(value)
-#define EBU_ADDSEL1(value)     0x0024(value)
-#define EBU_ADDSEL2(value)     0x0028(value)
-#define EBU_BUSCON0(value)     0x0060(value)
-#define EBU_BUSCON1(value)     0x0064(value)
-#define EBU_BUSCON2(value)     0x0068(value)
-
-#define MC_MODUL_BASE          0xBF800000
-#define MC_ERRCAUSE(value)     0x0100(value)
-#define MC_ERRADDR(value)      0x0108(value)
-#define MC_IOGP(value)         0x0800(value)
-#define MC_SELFRFSH(value)     0x0A00(value)
-#define MC_CTRLENA(value)      0x1000(value)
-#define MC_MRSCODE(value)      0x1008(value)
-#define MC_CFGDW(value)                0x1010(value)
-#define MC_CFGPB0(value)       0x1018(value)
-#define MC_LATENCY(value)      0x1038(value)
-#define MC_TREFRESH(value)     0x1040(value)
-
-#define CGU_MODUL_BASE         0xBF107000
-#define CGU_PLL1CR(value)      0x0008(value)
-#define CGU_DIVCR(value)       0x0010(value)
-#define CGU_MUXCR(value)       0x0014(value)
-#define CGU_PLL1SR(value)      0x000C(value)
-
-       .set    noreorder
-
-
-/*
- * void ebu_init(long)
- *
- * a0 has the clock value we are going to run at
- */
-       .globl  ebu_init
-       .ent    ebu_init
-ebu_init:
-__ebu_init:
-
-       li      t1, EBU_MODUL_BASE
-       li      t2, 0xA0000041
-       sw      t2, EBU_ADDSEL0(t1)
-       li      t2, 0xA0800041
-       sw      t2, EBU_ADDSEL2(t1)
-       li      t2, 0xBE0000F1
-       sw      t2, EBU_ADDSEL1(t1)
-
-       li      t3, 100000000
-       beq     a0, t3, 1f
-       nop
-       li      t3, 133000000
-       beq     a0, t3, 2f
-       nop
-       li      t3, 150000000
-       beq     a0, t3, 2f
-       nop
-       b       3f
-       nop
-
-       /* 100 MHz */
-1:
-       li      t2, 0x8841417D
-       sw      t2, EBU_BUSCON0(t1)
-       sw      t2, EBU_BUSCON2(t1)
-       li      t2, 0x684142BD
-       b       3f
-       sw      t2, EBU_BUSCON1(t1)     /* delay slot */
-
-       /* 133 or 150 MHz */
-2:
-       li      t2, 0x8841417E
-       sw      t2, EBU_BUSCON0(t1)
-       sw      t2, EBU_BUSCON2(t1)
-       li      t2, 0x684143FD
-       sw      t2, EBU_BUSCON1(t1)
-3:
-       jr      ra
-       nop
-
-       .end    ebu_init
-
-
-/*
- * void cgu_init(long)
- *
- * a0 has the clock value
- */
-       .globl  cgu_init
-       .ent    cgu_init
-cgu_init:
-__cgu_init:
-
-       li      t1, CGU_MODUL_BASE
-
-       li      t3, 100000000
-       beq     a0, t3, 1f
-       nop
-       li      t3, 133000000
-       beq     a0, t3, 2f
-       nop
-       li      t3, 150000000
-       beq     a0, t3, 3f
-       nop
-       b       5f
-       nop
-
-       /* 100 MHz clock */
-1:
-       li      t2, 0x80000014
-       sw      t2, CGU_DIVCR(t1)
-       li      t2, 0x80000000
-       sw      t2, CGU_MUXCR(t1)
-       li      t2, 0x800B0001
-       b       5f
-       sw      t2, CGU_PLL1CR(t1)      /* delay slot */
-
-       /* 133 MHz clock */
-2:
-       li      t2, 0x80000054
-       sw      t2, CGU_DIVCR(t1)
-       li      t2, 0x80000000
-       sw      t2, CGU_MUXCR(t1)
-       li      t2, 0x800B0001
-       b       5f
-       sw      t2, CGU_PLL1CR(t1)      /* delay slot */
-
-       /* 150 MHz clock */
-3:
-       li      t2, 0x80000017
-       sw      t2, CGU_DIVCR(t1)
-       li      t2, 0xC00B0001
-       sw      t2, CGU_PLL1CR(t1)
-       li      t3, 0x80000000
-4:
-       lw      t2, CGU_PLL1SR(t1)
-       and     t2, t2, t3
-       beq     t2, zero, 4b
-       nop
-       li      t2, 0x80000001
-       sw      t2, CGU_MUXCR(t1)
-5:
-       jr      ra
-       nop
-
-       .end    cgu_init
-
-
-/*
- * void sdram_init(long)
- *
- * a0 has the clock value
- */
-       .globl  sdram_init
-       .ent    sdram_init
-sdram_init:
-__sdram_init:
-
-       li      t1, MC_MODUL_BASE
-
-#if 0
-       /* Disable memory controller before changing any of its registers */
-       sw      zero, MC_CTRLENA(t1)
-#endif
-
-       li      t2, 100000000
-       beq     a0, t2, 1f
-       nop
-       li      t2, 133000000
-       beq     a0, t2, 2f
-       nop
-       li      t2, 150000000
-       beq     a0, t2, 3f
-       nop
-       b       5f
-       nop
-
-       /* 100 MHz clock */
-1:
-       /* Set clock ratio (clkrat=1:1, rddel=3) */
-       li      t2, 0x00000003
-       sw      t2, MC_IOGP(t1)
-
-       /* Set sdram refresh rate (4K/64ms @ 100MHz) */
-       li      t2, 0x0000061A
-       b       4f
-       sw      t2, MC_TREFRESH(t1)
-
-       /* 133 MHz clock */
-2:
-       /* Set clock ratio (clkrat=1:1, rddel=3) */
-       li      t2, 0x00000003
-       sw      t2, MC_IOGP(t1)
-
-       /* Set sdram refresh rate (4K/64ms @ 133MHz) */
-       li      t2, 0x00000822
-       b       4f
-       sw      t2, MC_TREFRESH(t1)
-
-       /* 150 MHz clock */
-3:
-       /* Set clock ratio (clkrat=3:2, rddel=4) */
-       li      t2, 0x00000014
-       sw      t2, MC_IOGP(t1)
-
-       /* Set sdram refresh rate (4K/64ms @ 150MHz) */
-       li      t2, 0x00000927
-       sw      t2, MC_TREFRESH(t1)
-
-4:
-       /* Clear Error log registers */
-       sw      zero, MC_ERRCAUSE(t1)
-       sw      zero, MC_ERRADDR(t1)
-
-       /* Clear Power-down registers */
-       sw      zero, MC_SELFRFSH(t1)
-
-       /* Set CAS Latency */
-       li      t2, 0x00000020          /* CL = 2 */
-       sw      t2, MC_MRSCODE(t1)
-
-       /* Set word width to 16 bit */
-       li      t2, 0x2
-       sw      t2, MC_CFGDW(t1)
-
-       /* Set CS0 to SDRAM parameters */
-       li      t2, 0x000014C9
-       sw      t2, MC_CFGPB0(t1)
-
-       /* Set SDRAM latency parameters */
-       li      t2, 0x00026325          /* BC PC100 */
-       sw      t2, MC_LATENCY(t1)
-
-5:
-       /* Finally enable the controller */
-       li      t2, 0x00000001
-       sw      t2, MC_CTRLENA(t1)
-
-       jr      ra
-       nop
-
-       .end    sdram_init
-
-
-       .globl  lowlevel_init
-       .ent    lowlevel_init
-lowlevel_init:
-
-       /* Disable Watchdog.
-        */
-       la      t9, disable_incaip_wdt
-       jalr    t9
-       nop
-
-       /* EBU, CGU and SDRAM Initialization.
-        */
-       li      a0, CONFIG_CPU_CLOCK_RATE
-       move    t0, ra
-
-       /* We rely on the fact that neither ebu_init() nor cgu_init() nor sdram_init()
-        * modify t0 and a0.
-        */
-       bal     __cgu_init
-       nop
-       bal     __ebu_init
-       nop
-       bal     __sdram_init
-       nop
-       move    ra, t0
-
-       jr      ra
-       nop
-
-       .end    lowlevel_init
diff --git a/board/lubbock/Makefile b/board/lubbock/Makefile
deleted file mode 100644 (file)
index 8aa513a..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  := lubbock.o flash.o
diff --git a/board/lubbock/flash.c b/board/lubbock/flash.c
deleted file mode 100644 (file)
index f6bb22c..0000000
+++ /dev/null
@@ -1,412 +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+
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];   /* info for FLASH chips    */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH               ushort
-#define FLASH_PORT_WIDTHV              vu_short
-#define SWAP(x)               __swab16(x)
-#else
-#define FLASH_PORT_WIDTH               ulong
-#define FLASH_PORT_WIDTHV              vu_long
-#define SWAP(x)               __swab32(x)
-#endif
-
-#define FPW       FLASH_PORT_WIDTH
-#define FPWV   FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * 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);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       int i;
-       ulong size = 0;
-
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-               switch (i) {
-               case 0:
-                       flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
-                       flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
-                       break;
-               case 1:
-                       flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
-                       flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
-                       break;
-               default:
-                       panic ("configured too many flash banks!\n");
-                       break;
-               }
-               size += flash_info[i].size;
-       }
-
-       /* Protect monitor and environment sectors
-        */
-       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_SIZE - 1, &flash_info[0] );
-
-       return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-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 * PHYS_FLASH_SECT_SIZE);
-                       info->protect[i] = 0;
-               }
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-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_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)
-{
-       volatile FPW value;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x5555] = (FPW) 0x00AA00AA;
-       addr[0x2AAA] = (FPW) 0x00550055;
-       addr[0x5555] = (FPW) 0x00900090;
-
-       mb ();
-       value = addr[0];
-
-       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  */
-       }
-
-       mb ();
-       value = addr[1];                        /* device ID        */
-
-       switch (value) {
-
-       case (FPW) INTEL_ID_28F128J3A:
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x02000000;
-               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 prot, sect;
-       ulong type, start;
-       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");
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       disable_interrupts();
-
-       /* 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;
-
-                       printf ("Erasing sector %2d ... ", sect);
-
-                       /* arm simple, non interrupt dependent timer */
-                       start = get_timer(0);
-
-                       *addr = (FPW) 0x00500050;       /* clear status register */
-                       *addr = (FPW) 0x00200020;       /* erase setup */
-                       *addr = (FPW) 0x00D000D0;       /* erase confirm */
-
-                       while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-                               if (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;
-                               }
-                       }
-
-                       *addr = 0x00500050;     /* clear status register cmd.   */
-                       *addr = 0x00FF00FF;     /* resest 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 count, 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, SWAP (data))) != 0) {
-                       return (rc);
-               }
-               wp += port_width;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       count = 0;
-       while (cnt >= port_width) {
-               data = 0;
-               for (i = 0; i < port_width; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_data (info, wp, SWAP (data))) != 0) {
-                       return (rc);
-               }
-               wp += port_width;
-               cnt -= port_width;
-               if (count++ > 0x800) {
-                       spin_wheel ();
-                       count = 0;
-               }
-       }
-
-       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, SWAP (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;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       disable_interrupts();
-
-       *addr = (FPW) 0x00400040;       /* write setup */
-       *addr = data;
-
-       /* arm simple, non interrupt dependent timer */
-       start = get_timer(0);
-
-       /* wait while polling the status register */
-       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);
-}
-
-void inline spin_wheel (void)
-{
-       static int p = 0;
-       static char w[] = "\\/-";
-
-       printf ("\010%c", w[p]);
-       (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/lubbock/lubbock.c b/board/lubbock/lubbock.c
deleted file mode 100644 (file)
index 0daff9a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/arch/pxa.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/regs-mmc.h>
-#include <asm/io.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of Lubbock-Board */
-       gd->bd->bi_arch_number = MACH_TYPE_LUBBOCK;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       /* Configure GPIO6 and GPIO8 as OUT, AF1. */
-       setbits_le32(GPDR0, (1 << 6) | (1 << 8));
-       clrsetbits_le32(GAFR0_L, (3 << 12) | (3 << 16), (1 << 12) | (1 << 16));
-
-       return 0;
-}
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
-
-int board_late_init(void)
-{
-       setenv("stdout", "serial");
-       setenv("stderr", "serial");
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       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 rc = 0;
-#ifdef CONFIG_LAN91C96
-       rc = lan91c96_initialize(0, CONFIG_LAN91C96_BASE);
-#endif
-       return rc;
-}
-#endif
diff --git a/board/mbx8xx/Makefile b/board/mbx8xx/Makefile
deleted file mode 100644 (file)
index 2074b6b..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  = mbx8xx.o flash.o vpd.o pcmcia.o
diff --git a/board/mbx8xx/README b/board/mbx8xx/README
deleted file mode 100644 (file)
index c889fe9..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-IMPORTANT NOTE - read before defining CONFIG_SYS_USE_OSCCLK in your board
-                config file!!!
-
-
-WARNING: Wrong settings of this parameter have the potential to
-damage hardware by running the MBX's CPU at frequencies that exceed
-it's rating and/or overdriving the it's SPLL!
-
-
-Ramblings:
-1) Motorola offered 12 different variants of the MBX, 6 823s and 6 860s.
-2) Of these 12 variants, only 2 were entry level boards.
-3) I believe that the 2 entry level boards were the only ones that
-   used OSCM clocking. I can't be completely certain of this at this
-   point.
-4) Motorola never offered an MBX that ran faster than 50Mhz.
-5) The 10, non-entry level boards, ran at 40Mhz.
-6) The EXTCLK input has a minimum clock of 15Mhz for the 823/860.
-7) Motorola no longer sells MBXs.
-
-Based on this information, I can surmise that the default power-on
-reset clocking was one of the following three options.
-
-Multiplier       SPLL Options
-------------------------------------
-513              OSCM is SPLL input
-5                OSCM is SPLL input
-1                EXTCLK is SPLL input
-
-The forth option:
-
-5                EXTCLK is SPLL input
-
-is not possible on MBXs. This is because the minimum EXTCLK input
-frequency is 15Mhz. 5 * 15Mhz = 75 Mhz. There was no variant that ran
-above 50 Mhz.
-
-The board I have borrowed definitely uses a multiplier of 1 for
-EXTCLK and runs at 40Mhz. I even went so far as to put a scope on it.
-
-One of the two default OSCM modes are most likely what was used on
-the entry level boards to cheapen them by eliminating the external
-crystal oscillator.
-
-To add insult to injury, the stupid 860 PLPRCR register retains it's
-multiplication factor through hard resets. You can't clear it out
-because it is battery backed and once it is set wrong, it stays
-wrong. The only way to reset it, so that it takes on it's default
-multiplier is to disconnect all power including external, batteries,
-as well discharging caps on the board. This precludes the fact that
-your 860 may be quite DEAD by this time!
-
-If you don't setup the multiplication factor for boards that use the
-OSCM input, they won't run correctly, but at least they won't be
-dead.
-
-Addtionally, there is no good way to determine the clock input source
-from CPU register data. The only way to deal with this is either hard
-code it, determine the correct value with some rather NASTY timing
-loops, or try to grok it from external data sources. Motorola
-firmware opts for the NASTY timing loops, but needs to configure the
-serial ports to do so.
-
-
-You may have a legitimate need to define CONFIG_SYS_USE_OSCCLK if your
-MBX8xx board is using the OSCM clocking mode.
-
-You better know what you are doing here.
diff --git a/board/mbx8xx/csr.h b/board/mbx8xx/csr.h
deleted file mode 100644 (file)
index 9370609..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef __csr_h
-#define __csr_h
-
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Control and Status Register definitions for the MBX
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* bits for control register #1 / status register #1 */
-#define CSR1_ETEN       0x80    /* Ethernet Transceiver Enabled             */
-#define CSR1_ELEN       0x40    /* Ethernet XCVR in Internal Loopback       */
-#define CSR1_EAEN       0x20    /* Auto selection TP/AUI Enabled            */
-#define CSR1_TPEN       0x10    /* TP manually selected                     */
-#define CSR1_FDDIS      0x08    /* Full Duplex Mode disabled                */
-#define CSR1_FCTEN      0x04    /* Collision Testing of XCVR disabled       */
-#define CSR1_COM1EN     0x02    /* COM1 signals routed to RS232 Transceiver */
-#define CSR1_XCVRDIS    0x01    /* Onboard RS232 Transceiver Disabled       */
-
-/* bits for control register #2 */
-#define CR2_VDDSEL      0xC0    /* PCMCIA Supply Voltage                    */
-#define CR2_VPPSEL      0x30    /* PCMCIA Programming Voltage               */
-#define CR2_BRDFAIL     0x08    /* Board fail                               */
-#define CR2_SWS1        0x04    /* Software Status #2 LED                   */
-#define CR2_SWS2        0x02    /* Software Status #2 LED                   */
-#define CR2_QSPANRST    0x01    /* Reset QSPAN                              */
-
-/* bits for status register #2 */
-#define SR2_VDDSEL      0xC0    /* PCMCIA Supply Voltage                    */
-#define SR2_VPPSEL      0x30    /* PCMCIA Programming Voltage               */
-#define SR2_BATGD       0x08    /* Low Voltage indication for onboard bat   */
-#define SR2_NVBATGD     0x04    /* Low Voltage indication for NVRAM         */
-#define SR2_RDY         0x02    /* Flash programming status bit             */
-#define SR2_FT          0x01    /* Reserved for Factory test purposes       */
-
-#define MBX_CSR1 (*((uchar *)CONFIG_SYS_CSR_BASE))
-#define MBX_CSR2 (*((uchar *)CONFIG_SYS_CSR_BASE + 1))
-
-#endif /* __csr_h */
diff --git a/board/mbx8xx/dimm.h b/board/mbx8xx/dimm.h
deleted file mode 100644 (file)
index b40f112..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef __dimm_h
-#define __dimm_h
-
-/*
- * Module name: %M%
- * Description:
- * Serial Presence Detect Definitions Module
- * SCCS identification: %I%
- * Branch: %B%
- * Sequence: %S%
- * Date newest applied delta was created (MM/DD/YY): %G%
- * Time newest applied delta was created (HH:MM:SS): %U%
- * SCCS file name %F%
- * Fully qualified SCCS file name:
- * %P%
- * Copyright:
- * (C) COPYRIGHT MOTOROLA, INC. 1996
- * ALL RIGHTS RESERVED
- * Notes:
- * 1. All data was taken from an IBM application note titled
- * "Serial Presence Detect Definitions".
- * History:
- * Date Who
- *
- * 10/24/96 Rob Baxter
- * Initial release.
- *
- */
-
-/*
- * serial PD byte assignment address map (256 byte EEPROM)
- */
-typedef struct dimm
-{
-       uchar n_bytes; /* 00 number of bytes written/used */
-       uchar t_bytes; /* 01 total number of bytes in serial PD device */
-       uchar fmt; /* 02 fundamental memory type (FPM/EDO/SDRAM) */
-       uchar n_row; /* 03 number of rows */
-       uchar n_col; /* 04 number of columns */
-       uchar n_banks; /* 05 number of banks */
-       uchar data_w_lo; /* 06 data width */
-       uchar data_w_hi; /* 07 data width */
-       uchar ifl; /* 08 interface levels */
-       uchar a_ras; /* 09 RAS access */
-       uchar a_cas; /* 0A CAS access */
-       uchar ct; /* 0B configuration type (non-parity/parity/ECC) */
-       uchar refresh_rt; /* 0C refresh rate/type */
-       uchar p_dram_o; /* 0D primary DRAM organization */
-       uchar s_dram_o; /* 0E secondary DRAM organization (parity/ECC-checkbits) */
-       uchar reserved[17]; /* 0F reserved fields for future offerings */
-       uchar ss_info[32]; /* 20 superset information (may be used in the future) */
-       uchar m_info[64]; /* 40 manufacturer information (optional) */
-       uchar unused[128]; /* 80 unused storage locations */
-} dimm_t;
-
-/*
- * memory type definitions
- */
-#define DIMM_MT_FPM 1 /* standard FPM (fast page mode) DRAM */
-#define DIMM_MT_EDO 2 /* EDO (extended data out) */
-#define DIMM_MT_PN 3 /* pipelined nibble */
-#define DIMM_MT_SDRAM 4 /* SDRAM (synchronous DRAM) */
-
-/*
- * row addresses definitions
- */
-#define DIMM_RA_RDNDNT (1<<7) /* redundant addressing */
-#define DIMM_RA_MASK 0x7f /* number of row addresses mask */
-
-/*
- * module interface levels definitions
- */
-#define DIMM_IFL_TTL 0 /* TTL/5V tolerant */
-#define DIMM_IFL_LVTTL 1 /* LVTTL (not 5V tolerant) */
-#define DIMM_IFL_HSTL15 2 /* HSTL 1.5 */
-#define DIMM_IFL_SSTL33 3 /* SSTL 3.3 */
-#define DIMM_IFL_SSTL25 4 /* SSTL 2.5 */
-
-/*
- * DIMM configuration type definitions
- */
-#define DIMM_CT_NONE 0 /* none */
-#define DIMM_CT_PARITY 1 /* parity */
-#define DIMM_CT_ECC 2 /* ECC */
-
-/*
- * row addresses definitions
- */
-#define DIMM_RRT_SR (1<<7) /* self refresh flag */
-#define DIMM_RRT_MASK 0x7f /* refresh rate mask */
-#define DIMM_RRT_NRML 0x00 /* normal (15.625us) */
-#define DIMM_RRT_R_3_9 0x01 /* reduced .25x (3.9us) */
-#define DIMM_RRT_R_7_8 0x02 /* reduced .5x (7.8us) */
-#define DIMM_RRT_E_31_3 0x03 /* extended 2x (31.3us) */
-#define DIMM_RRT_E_62_5 0x04 /* extended 4x (62.5us) */
-#define DIMM_RRT_E_125 0x05 /* extended 8x (125us) */
-
-#endif /* __dimm_h */
diff --git a/board/mbx8xx/flash.c b/board/mbx8xx/flash.c
deleted file mode 100644 (file)
index fa07152..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AM290[48]0B devices
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include "vpd.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_word (flash_info_t *info, ulong dest, ulong data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-    unsigned long size, totsize;
-    int i;
-    ulong addr;
-
-    /* Init: no FLASHes known */
-    for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-       flash_info[i].flash_id = FLASH_UNKNOWN;
-    }
-
-    totsize = 0;
-    addr = 0xfc000000;
-    for(i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-       size = flash_get_size((vu_long *)addr, &flash_info[i]);
-       if (flash_info[i].flash_id == FLASH_UNKNOWN)
-         break;
-       totsize += size;
-       addr += size;
-    }
-
-    addr = 0xfe000000;
-    for(i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-
-       size = flash_get_size((vu_long *)addr, &flash_info[i]);
-       if (flash_info[i].flash_id == FLASH_UNKNOWN)
-         break;
-       totsize += size;
-       addr += 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
-
-    return (totsize);
-}
-
-/*-----------------------------------------------------------------------
- */
-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) {
-    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!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-    short i;
-    ulong vendor, devid;
-    ulong base = (ulong)addr;
-
-    /* Write auto select command: read Manufacturer ID */
-    addr[0x0555] = 0xAAAAAAAA;
-    addr[0x02AA] = 0x55555555;
-    addr[0x0555] = 0x90909090;
-
-    vendor = addr[0];
-    devid = addr[1] & 0xff;
-
-    /* only support AMD */
-    if (vendor != 0x01010101) {
-       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: %08lx\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 long *)(info->start[i]);
-       info->protect[i] = addr[2] & 1;
-    }
-
-    /*
-     * Prevent writes to uninitialized FLASH.
-     */
-    if (info->flash_id != FLASH_UNKNOWN) {
-       addr = (vu_long *)info->start[0];
-       addr[0] = 0xF0; /* 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) {
-           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;
-
-    /* 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;
-}
-
-/*-----------------------------------------------------------------------
- * 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] = 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);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/mbx8xx/mbx8xx.c b/board/mbx8xx/mbx8xx.c
deleted file mode 100644 (file)
index 98c723f..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Board specific routines for the MBX
- *
- * - initialisation
- * - interface to VPD data (mac address, clock speeds)
- * - memory controller
- * - serial io initialisation
- * - ethernet io initialisation
- *
- * -----------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <commproc.h>
-#include <mpc8xx.h>
-#include <net.h>
-#include "dimm.h"
-#include "vpd.h"
-#include "csr.h"
-
-/* ------------------------------------------------------------------------- */
-
-static const uint sdram_table_40[] = {
-       /* DRAM - single read. (offset 0 in upm RAM)
-        */
-       0xCFAFC004, 0x0FAFC404, 0x0CAF0C04, 0x30AF0C00,
-       0xF1BF4805, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* DRAM - burst read. (offset 8 in upm RAM)
-        */
-       0xCFAFC004, 0x0FAFC404, 0x0CAF0C04, 0x03AF0C08,
-       0x0CAF0C04, 0x03AF0C08, 0x0CAF0C04, 0x03AF0C08,
-       0x0CAF0C04, 0x30AF0C00, 0xF3BF4805, 0xFFFFC005,
-       0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* DRAM - single write. (offset 18 in upm RAM)
-        */
-       0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x33FF4804,
-       0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* DRAM - burst write. (offset 20 in upm RAM)
-        */
-       0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x03FF0C0C,
-       0x0CFF0C00, 0x03FF0C0C, 0x0CFF0C00, 0x03FF0C0C,
-       0x0CFF0C00, 0x33FF4804, 0xFFFFC005, 0xFFFFC005,
-       0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* refresh  (offset 30 in upm RAM)
-        */
-       0xFCFFC004, 0xC0FFC004, 0x01FFC004, 0x0FFFC004,
-       0x3FFFC004, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-       0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* exception. (offset 3c in upm RAM)
-        */
-       0xFFFFC007, 0xFFFFC007, 0xFFFFC007, 0xFFFFC007,
-};
-
-static const uint sdram_table_50[] = {
-       /* DRAM - single read. (offset 0 in upm RAM)
-        */
-       0xCFAFC004, 0x0FAFC404, 0x0CAF8C04, 0x10AF0C04,
-       0xF0AF0C00, 0xF3BF4805, 0xFFFFC005, 0xFFFFC005,
-
-       /* DRAM - burst read. (offset 8 in upm RAM)
-        */
-       0xCFAFC004, 0X0FAFC404, 0X0CAF8C04, 0X00AF0C04,
-  /*   0X07AF0C08, 0X0CAF0C04, 0X01AF0C04, 0X0FAF0C04, */
-       0X07AF0C08, 0X0CAF0C04, 0X01AF0C04, 0X0FAF0C08,
-       0X0CAF0C04, 0X01AF0C04, 0X0FAF0C08, 0X0CAF0C04,
-  /*   0X10AF0C04, 0XF0AFC000, 0XF3FF4805, 0XFFFFC005, */
-       0X10AF0C04, 0XF0AFC000, 0XF3BF4805, 0XFFFFC005,
-
-       /* DRAM - single write. (offset 18 in upm RAM)
-        */
-       0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x13FF4804,
-       0xFFFFC004, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* DRAM - burst write. (offset 20 in upm RAM)
-        */
-       0xCFFF0004, 0x0FFF0404, 0x0CFF0C00, 0x03FF0C0C,
-       0x0CFF0C00, 0x03FF0C0C, 0x0CFF0C00, 0x03FF0C0C,
-       0x0CFF0C00, 0x13FF4804, 0xFFFFC004, 0xFFFFC005,
-       0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* refresh  (offset 30 in upm RAM)
-        */
-       0xFCFFC004, 0xC0FFC004, 0x01FFC004, 0x0FFFC004,
-       0x1FFFC004, 0xFFFFC004, 0xFFFFC005, 0xFFFFC005,
-       0xFFFFC005, 0xFFFFC005, 0xFFFFC005, 0xFFFFC005,
-
-       /* exception. (offset 3c in upm RAM)
-        */
-       0xFFFFC007, 0xFFFFC007, 0xFFFFC007, 0xFFFFC007,
-};
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef CONFIG_SYS_USE_OSCCLK
-static unsigned int get_reffreq(void);
-#endif
-static unsigned int board_get_cpufreq(void);
-
-void mbx_init (void)
-{
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile memctl8xx_t *memctl = &immr->im_memctl;
-       ulong speed, plprcr, sccr;
-       ulong br0_32 = memctl->memc_br0 & 0x400;
-
-       /* real-time clock status and control register */
-       immr->im_sitk.sitk_rtcsck = KAPWR_KEY;
-       immr->im_sit.sit_rtcsc = 0x00C3;
-
-       /* SIEL and SIMASK Registers (see MBX PRG 2-3) */
-       immr->im_siu_conf.sc_simask = 0x00000000;
-       immr->im_siu_conf.sc_siel = 0xAAAA0000;
-       immr->im_siu_conf.sc_tesr = 0xFFFFFFFF;
-
-       /*
-        * Prepare access to i2c bus. The MBX offers 3 devices on the i2c bus:
-        * 1. Vital Product Data (contains clock speeds, MAC address etc, see vpd.h)
-        * 2. RAM  Specs (see dimm.h)
-        * 2. DIMM Specs (see dimm.h)
-        */
-       vpd_init ();
-
-       /* system clock and reset control register */
-       immr->im_clkrstk.cark_sccrk = KAPWR_KEY;
-       sccr = immr->im_clkrst.car_sccr;
-       sccr &= SCCR_MASK;
-       sccr |= CONFIG_SYS_SCCR;
-       immr->im_clkrst.car_sccr = sccr;
-
-       speed = board_get_cpufreq ();
-
-#if ((CONFIG_SYS_PLPRCR & PLPRCR_MF_MSK) != 0)
-       plprcr = CONFIG_SYS_PLPRCR;
-#else
-       plprcr = immr->im_clkrst.car_plprcr;
-       plprcr &= PLPRCR_MF_MSK;        /* isolate MF field */
-       plprcr |= CONFIG_SYS_PLPRCR;            /* reset control bits   */
-#endif
-
-#ifdef CONFIG_SYS_USE_OSCCLK                   /* See doc/README.MBX ! */
-       plprcr |= ((speed + get_reffreq() / 2) / refclock - 1) << 20;
-#endif
-
-       immr->im_clkrstk.cark_plprcrk = KAPWR_KEY;
-       immr->im_clkrst.car_plprcr = plprcr;
-
-       /*
-        * preliminary setup of memory controller:
-        * - map Flash, otherwise configuration/status
-        *    registers won't be accessible when read
-        *    by board_init_f.
-        * - map NVRAM and configuation/status registers.
-        * - map pci registers.
-        * - DON'T map ram yet, this is done in initdram().
-        */
-       switch (speed / 1000000) {
-       case 40:
-               memctl->memc_br0 = 0xFE000000 | br0_32 | 1;
-               memctl->memc_or0 = 0xFF800930;
-               memctl->memc_or4 = CONFIG_SYS_NVRAM_OR | 0x920;
-               memctl->memc_br4 = CONFIG_SYS_NVRAM_BASE | 0x401;
-               break;
-       case 50:
-               memctl->memc_br0 = 0xFE000000 | br0_32 | 1;
-               memctl->memc_or0 = 0xFF800940;
-               memctl->memc_or4 = CONFIG_SYS_NVRAM_OR | 0x930;
-               memctl->memc_br4 = CONFIG_SYS_NVRAM_BASE | 0x401;
-               break;
-       default:
-               hang ();
-               break;
-       }
-#ifdef CONFIG_USE_PCI
-       memctl->memc_or5 = CONFIG_SYS_PCIMEM_OR;
-       memctl->memc_br5 = CONFIG_SYS_PCIMEM_BASE | 0x001;
-       memctl->memc_or6 = CONFIG_SYS_PCIBRIDGE_OR;
-       memctl->memc_br6 = CONFIG_SYS_PCIBRIDGE_BASE | 0x001;
-#endif
-       /*
-        * FIXME: I do not understand why I have to call this to
-        * initialise the control register here before booting from
-        * the PCMCIA card but if I do not the Linux kernel falls
-        * over in a big heap. If you can answer this question I
-        * would like to know about it.
-        */
-       board_ether_init();
-}
-
-void board_serial_init (void)
-{
-       MBX_CSR1 &= ~(CSR1_COM1EN | CSR1_XCVRDIS);
-}
-
-void board_ether_init (void)
-{
-       MBX_CSR1 &= ~(CSR1_EAEN | CSR1_ELEN);
-       MBX_CSR1 |= CSR1_ETEN | CSR1_TPEN | CSR1_FDDIS;
-}
-
-static unsigned int board_get_cpufreq (void)
-{
-#ifndef CONFIG_8xx_GCLK_FREQ
-       vpd_packet_t *packet;
-       ulong *p;
-
-       packet = vpd_find_packet (VPD_PID_ICS);
-       p = (ulong *)packet->data;
-       return *p;
-#else
-       return((unsigned int)CONFIG_8xx_GCLK_FREQ );
-#endif /* CONFIG_8xx_GCLK_FREQ */
-}
-
-#ifdef CONFIG_SYS_USE_OSCCLK
-static unsigned int get_reffreq (void)
-{
-       vpd_packet_t *packet;
-       ulong *p;
-
-       packet = vpd_find_packet (VPD_PID_RCS);
-       p = (ulong *)packet->data;
-       return *p;
-}
-#endif
-
-static void board_get_enetaddr(uchar *addr)
-{
-       int i;
-       vpd_packet_t *packet;
-
-       packet = vpd_find_packet (VPD_PID_EA);
-       for (i = 0; i < 6; i++)
-               addr[i] = packet->data[i];
-}
-
-int misc_init_r(void)
-{
-       uchar enetaddr[6];
-
-       if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
-               board_get_enetaddr(enetaddr);
-               eth_setenv_enetaddr("ethaddr", enetaddr);
-       }
-
-       return 0;
-}
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       vpd_packet_t *packet;
-       int i;
-       const char *const fmt =
-               "\n      *** Warning: Low Battery Status - %s Battery ***";
-
-       puts ("Board: ");
-
-       packet = vpd_find_packet (VPD_PID_PID);
-       for (i = 0; i < packet->size; i++) {
-               serial_putc (packet->data[i]);
-       }
-       packet = vpd_find_packet (VPD_PID_MT);
-       for (i = 0; i < packet->size; i++) {
-               serial_putc (packet->data[i]);
-       }
-       serial_putc ('(');
-       packet = vpd_find_packet (VPD_PID_FAN);
-       for (i = 0; i < packet->size; i++) {
-               serial_putc (packet->data[i]);
-       }
-       serial_putc (')');
-
-       if (!(MBX_CSR2 & SR2_BATGD))
-               printf (fmt, "On-Board");
-       if (!(MBX_CSR2 & SR2_NVBATGD))
-               printf (fmt, "NVRAM");
-
-       serial_putc ('\n');
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
-
-static ulong get_ramsize (dimm_t * dimm)
-{
-       ulong size = 0;
-
-       if (dimm->fmt == 1 || dimm->fmt == 2 || dimm->fmt == 3
-               || dimm->fmt == 4) {
-               size = (1 << (dimm->n_row + dimm->n_col)) * dimm->n_banks *
-                       ((dimm->data_w_hi << 8 | dimm->data_w_lo) / 8);
-       }
-
-       return size;
-}
-
-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 ram_sz = 0;
-       unsigned long dimm_sz = 0;
-       dimm_t vpd_dimm, vpd_dram;
-       unsigned int speed = board_get_cpufreq () / 1000000;
-
-       if (vpd_read (0xa2, (uchar *) & vpd_dimm, sizeof (vpd_dimm), 0) > 0) {
-               dimm_sz = get_ramsize (&vpd_dimm);
-       }
-       if (vpd_read (0xa6, (uchar *) & vpd_dram, sizeof (vpd_dram), 0) > 0) {
-               ram_sz = get_ramsize (&vpd_dram);
-       }
-
-       /*
-        * Only initialize memory controller when running from FLASH.
-        * When running from RAM, don't touch it.
-        */
-       if ((ulong) initdram & 0xff000000) {
-               ulong dimm_bank;
-               ulong br0_32 = memctl->memc_br0 & 0x400;
-
-               switch (speed) {
-               case 40:
-                       upmconfig (UPMA, (uint *) sdram_table_40,
-                                          sizeof (sdram_table_40) / sizeof (uint));
-                       memctl->memc_mptpr = 0x0200;
-                       memctl->memc_mamr = dimm_sz ? 0x06801000 : 0x13801000;
-                       memctl->memc_or7 = 0xff800930;
-                       memctl->memc_br7 = 0xfc000000 | (br0_32 ^ br0_32) | 1;
-                       break;
-               case 50:
-                       upmconfig (UPMA, (uint *) sdram_table_50,
-                                          sizeof (sdram_table_50) / sizeof (uint));
-                       memctl->memc_mptpr = 0x0200;
-                       memctl->memc_mamr = dimm_sz ? 0x08801000 : 0x1880100;
-                       memctl->memc_or7 = 0xff800940;
-                       memctl->memc_br7 = 0xfc000000 | (br0_32 ^ br0_32) | 1;
-                       break;
-               default:
-                       hang ();
-                       break;
-               }
-
-               /* now map ram and dimm, largest one first */
-               dimm_bank = dimm_sz / 2;
-               if (!dimm_sz) {
-                       memctl->memc_or1 = ~(ram_sz - 1) | 0x400;
-                       memctl->memc_br1 = CONFIG_SYS_SDRAM_BASE | 0x81;
-                       memctl->memc_br2 = 0;
-                       memctl->memc_br3 = 0;
-               } else if (ram_sz > dimm_bank) {
-                       memctl->memc_or1 = ~(ram_sz - 1) | 0x400;
-                       memctl->memc_br1 = CONFIG_SYS_SDRAM_BASE | 0x81;
-                       memctl->memc_or2 = ~(dimm_bank - 1) | 0x400;
-                       memctl->memc_br2 = (CONFIG_SYS_SDRAM_BASE + ram_sz) | 0x81;
-                       memctl->memc_or3 = ~(dimm_bank - 1) | 0x400;
-                       memctl->memc_br3 = (CONFIG_SYS_SDRAM_BASE + ram_sz + dimm_bank) \
-                                                                    | 0x81;
-               } else {
-                       memctl->memc_or2 = ~(dimm_bank - 1) | 0x400;
-                       memctl->memc_br2 = CONFIG_SYS_SDRAM_BASE | 0x81;
-                       memctl->memc_or3 = ~(dimm_bank - 1) | 0x400;
-                       memctl->memc_br3 = (CONFIG_SYS_SDRAM_BASE + dimm_bank) | 0x81;
-                       memctl->memc_or1 = ~(ram_sz - 1) | 0x400;
-                       memctl->memc_br1 = (CONFIG_SYS_SDRAM_BASE + dimm_sz) | 0x81;
-               }
-       }
-
-       return ram_sz + dimm_sz;
-}
diff --git a/board/mbx8xx/pcmcia.c b/board/mbx8xx/pcmcia.c
deleted file mode 100644 (file)
index 497e260..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-#include <common.h>
-#include <mpc8xx.h>
-#include <pcmcia.h>
-
-#include "csr.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
-
-/* A lot of this has been taken from the RPX code in this file it works from me.
-   I have added the voltage selection for the MBX board. */
-
-/* MBX voltage bit in control register #2 */
-#define CR2_VPP12       ((uchar)0x10)
-#define CR2_VPPVDD      ((uchar)0x20)
-#define CR2_VDD5        ((uchar)0x40)
-#define CR2_VDD3        ((uchar)0x80)
-
-#define PCMCIA_BOARD_MSG "MBX860"
-
-int pcmcia_voltage_set (int slot, int vcc, int vpp)
-{
-       uchar reg = 0;
-
-       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);
-
-       switch (vcc) {
-               case 0:
-                       break;
-               case 33:
-                       reg |= CR2_VDD3;
-                       break;
-               case 50:
-                       reg |= CR2_VDD5;
-                       break;
-               default:
-                       return 1;
-       }
-
-       switch (vpp) {
-               case 0:
-                       break;
-               case 33:
-               case 50:
-                       if (vcc == vpp) {
-                               reg |= CR2_VPPVDD;
-                       } else {
-                               return 1;
-                       }
-                       break;
-               case 120:
-                       reg |= CR2_VPP12;
-                       break;
-               default:
-                       return 1;
-       }
-
-       /* first, turn off all power */
-       MBX_CSR2 &= ~(CR2_VDDSEL | CR2_VPPSEL);
-
-       /* enable new powersettings */
-       MBX_CSR2 |= reg;
-       debug ("MBX_CSR2 read = 0x%02x\n", MBX_CSR2);
-
-       return (0);
-}
-
-int pcmcia_hardware_enable (int slot)
-{
-       volatile pcmconf8xx_t *pcmp;
-       uint reg, mask;
-
-       debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n",
-              'A' + slot);
-
-       udelay (10000);
-
-       pcmp = (pcmconf8xx_t *) (&(((immap_t *) CONFIG_SYS_IMMR)->im_pcmcia));
-
-       /* 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);
-
-       /* remove all power */
-       pcmcia_voltage_set (slot, 0, 0);
-       /*
-       * 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 & (0x10000000 >> (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) {
-               pcmcia_voltage_set (_slot_, 50, 0);
-               printf (" 5.0V card found: ");
-       } else {
-               pcmcia_voltage_set (_slot_, 33, 0);
-               printf (" 3.3V card found: ");
-       }
-
-       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)
-{
-       return 0;       /* No hardware to disable */
-}
-#endif
-
-#endif /* CONFIG_PCMCIA */
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/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/mbx8xx/u-boot.lds.debug b/board/mbx8xx/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/mbx8xx/vpd.c b/board/mbx8xx/vpd.c
deleted file mode 100644 (file)
index 1ba754e..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Code in faintly related to linux/arch/powerpc/8xx_io:
- * MPC8xx CPM I2C interface. Copyright (c) 1999 Dan Malek (dmalek@jlc.net).
- *
- * This file implements functions to read the MBX's Vital Product Data
- * (VPD). I can't use the more general i2c code in mpc8xx/... since I need
- * the VPD at a time where there is no RAM available yet. Hence the VPD is
- * read into a special area in the DPRAM (see config_MBX.h::CFG_DPRAMVPD).
- *
- * -----------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#ifdef CONFIG_8xx
-#include <commproc.h>
-#endif
-#include "vpd.h"
-
-/* Location of receive/transmit buffer descriptors
- * Allocate one transmit bd and one receive bd.
- * IIC_BD_FREE points to free bd space which we'll use as tx buffer.
- */
-#define IIC_BD_TX1     (BD_IIC_START + 0*sizeof(cbd_t))
-#define IIC_BD_TX2     (BD_IIC_START + 1*sizeof(cbd_t))
-#define IIC_BD_RX      (BD_IIC_START + 2*sizeof(cbd_t))
-#define IIC_BD_FREE    (BD_IIC_START + 3*sizeof(cbd_t))
-
-/* FIXME -- replace 0x2000 with offsetof */
-#define VPD_P ((vpd_t *)(CONFIG_SYS_IMMR + 0x2000 + CONFIG_SYS_DPRAMVPD))
-
-/* transmit/receive buffers */
-#define IIC_RX_LENGTH 128
-
-#define WITH_MICROCODE_PATCH
-
-vpd_packet_t * vpd_find_packet(u_char ident)
-{
-    vpd_packet_t *packet;
-    vpd_t *vpd = VPD_P;
-
-    packet = (vpd_packet_t *)&vpd->packets;
-    while ((packet->identifier != ident) && packet->identifier != 0xFF)
-    {
-       packet = (vpd_packet_t *)((char *)packet + packet->size + 2);
-    }
-    return packet;
-}
-
-void vpd_init(void)
-{
-    volatile immap_t  *im = (immap_t *)CONFIG_SYS_IMMR;
-    volatile cpm8xx_t *cp = &(im->im_cpm);
-    volatile i2c8xx_t *i2c = (i2c8xx_t *)&(im->im_i2c);
-    volatile iic_t *iip;
-#ifdef WITH_MICROCODE_PATCH
-    ulong reloc = 0;
-#endif
-
-    iip = (iic_t *)&cp->cp_dparam[PROFF_IIC];
-
-    /*
-     * kludge: when running from flash, no microcode patch can be
-     * installed. However, the DPMEM usually contains non-zero
-     * garbage at the relocatable patch base location, so lets clear
-     * it now. This way the rest of the code can support the microcode
-     * patch dynamically.
-     */
-    if ((ulong)vpd_init & 0xff000000)
-      iip->iic_rpbase = 0;
-
-#ifdef WITH_MICROCODE_PATCH
-    /* Check for and use a microcode relocation patch. */
-    if ((reloc = iip->iic_rpbase))
-      iip = (iic_t *)&cp->cp_dpmem[iip->iic_rpbase];
-#endif
-    /* Initialize Port B IIC pins */
-    cp->cp_pbpar |= 0x00000030;
-    cp->cp_pbdir |= 0x00000030;
-    cp->cp_pbodr |= 0x00000030;
-
-    i2c->i2c_i2mod = 0x04;  /* filter clock */
-    i2c->i2c_i2add = 0x34;     /* select an arbitrary (unique) address */
-    i2c->i2c_i2brg = 0x07;  /* make clock run maximum slow     */
-    i2c->i2c_i2cmr = 0x00;  /* disable interrupts */
-    i2c->i2c_i2cer = 0x1f;  /* clear events */
-    i2c->i2c_i2com = 0x01;  /* configure i2c to work as master */
-
-    if (vpd_read(0xa4, (uchar*)VPD_P, VPD_EEPROM_SIZE, 0) != VPD_EEPROM_SIZE)
-    {
-       hang();
-    }
-}
-
-
-/* Read from I2C.
- * This is a two step process.  First, we send the "dummy" write
- * to set the device offset for the read.  Second, we perform
- * the read operation.
- */
-int vpd_read(uint iic_device, uchar *buf, int count, int offset)
-{
-    volatile immap_t  *im = (immap_t *)CONFIG_SYS_IMMR;
-    volatile cpm8xx_t *cp = &(im->im_cpm);
-    volatile i2c8xx_t *i2c = (i2c8xx_t *)&(im->im_i2c);
-    volatile iic_t *iip;
-    volatile cbd_t *tbdf1, *tbdf2, *rbdf;
-    uchar *tb;
-    uchar event;
-#ifdef WITH_MICROCODE_PATCH
-    ulong reloc = 0;
-#endif
-
-    iip = (iic_t *)&cp->cp_dparam[PROFF_IIC];
-#ifdef WITH_MICROCODE_PATCH
-    /* Check for and use a microcode relocation patch. */
-    if ((reloc = iip->iic_rpbase))
-      iip = (iic_t *)&cp->cp_dpmem[iip->iic_rpbase];
-#endif
-    tbdf1 = (cbd_t *)&cp->cp_dpmem[IIC_BD_TX1];
-    tbdf2 = (cbd_t *)&cp->cp_dpmem[IIC_BD_TX2];
-    rbdf  = (cbd_t *)&cp->cp_dpmem[IIC_BD_RX];
-
-    /* Send a "dummy write" operation.  This is a write request with
-     * only the offset sent, followed by another start condition.
-     * This will ensure we start reading from the first location
-     * of the EEPROM.
-     */
-    tb = (uchar*)&cp->cp_dpmem[IIC_BD_FREE];
-    tb[0] = iic_device & 0xfe; /* device address */
-    tb[1] = offset;            /* offset */
-    tbdf1->cbd_bufaddr = (uint)tb;
-    tbdf1->cbd_datlen = 2;
-    tbdf1->cbd_sc = 0x8400;
-
-    tb += 2;
-    tb[0] = iic_device | 1;    /* device address */
-    tbdf2->cbd_bufaddr = (uint)tb;
-    tbdf2->cbd_datlen = count+1;
-    tbdf2->cbd_sc = 0xbc00;
-
-    rbdf->cbd_bufaddr = (uint)buf;
-    rbdf->cbd_datlen = 0;
-    rbdf->cbd_sc = 0xb000;
-
-    iip->iic_tbase = IIC_BD_TX1;
-    iip->iic_tbptr = IIC_BD_TX1;
-    iip->iic_rbase = IIC_BD_RX;
-    iip->iic_rbptr = IIC_BD_RX;
-    iip->iic_rfcr = 0x15;
-    iip->iic_tfcr = 0x15;
-    iip->iic_mrblr = count;
-    iip->iic_rstate = 0;
-    iip->iic_tstate = 0;
-
-    i2c->i2c_i2cer = 0x1f;  /* clear event mask */
-    i2c->i2c_i2mod |= 1;    /* enable iic operation */
-    i2c->i2c_i2com |= 0x80;    /* start master */
-
-    /* wait for IIC transfer */
-    do {
-       __asm__ volatile ("eieio");
-       event = i2c->i2c_i2cer;
-    } while (event == 0);
-
-    if ((event & 0x10) || (event & 0x04)) {
-       count = -1;
-       goto bailout;
-    }
-
-bailout:
-    i2c->i2c_i2mod &= ~1;   /* turn off iic operation */
-    i2c->i2c_i2cer = 0x1f;  /* clear event mask */
-
-    return count;
-}
diff --git a/board/mbx8xx/vpd.h b/board/mbx8xx/vpd.h
deleted file mode 100644 (file)
index 1d9eb7f..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#ifndef __vpd_h
-#define __vpd_h
-
-/*
- * Module name: %M%
- * Description:
- * Vital Product Data (VPD) Header Module
- * SCCS identification: %I%
- * Branch: %B%
- * Sequence: %S%
- * Date newest applied delta was created (MM/DD/YY): %G%
- * Time newest applied delta was created (HH:MM:SS): %U%
- * SCCS file name %F%
- * Fully qualified SCCS file name:
- * %P%
- * Copyright:
- * (C) COPYRIGHT MOTOROLA, INC. 1996
- * ALL RIGHTS RESERVED
- * Notes:
- * History:
- * Date Who
- *
- * 10/24/96 Rob Baxter
- * Initial release.
- *
- */
-
-#define VPD_EEPROM_SIZE 256 /* EEPROM size in bytes */
-
-/*
- * packet tuple identifiers
- *
- * 0x0D - 0xBF reserved
- * 0xC0 - 0xFE user defined
- */
-#define VPD_PID_GI   0x00 /* guaranteed illegal */
-#define VPD_PID_PID  0x01 /* product identifier (ASCII) */
-#define VPD_PID_FAN  0x02 /* factory assembly-number (ASCII) */
-#define VPD_PID_SN   0x03 /* serial-number (ASCII) */
-#define VPD_PID_PCO  0x04 /* product configuration options(binary) */
-#define VPD_PID_ICS  0x05 /* internal clock speed in HZ (integer) */
-#define VPD_PID_ECS  0x06 /* external clock speed in HZ (integer) */
-#define VPD_PID_RCS  0x07 /* reference clock speed in HZ(integer) */
-#define VPD_PID_EA   0x08 /* ethernet address (binary) */
-#define VPD_PID_MT   0x09 /* microprocessor type (ASCII) */
-#define VPD_PID_CRC  0x0A /* EEPROM CRC (integer) */
-#define VPD_PID_FMC  0x0B /* FLASH memory configuration (binary) */
-#define VPD_PID_VLSI 0x0C /* VLSI revisions/versions (binary) */
-#define VPD_PID_TERM 0xFF /* termination */
-
-/*
- * VPD structure (format)
- */
-#define VPD_EYE_SIZE 8 /* eyecatcher size */
-typedef struct vpd_header
-{
-       uchar eyecatcher[VPD_EYE_SIZE]; /* eyecatcher - "MOTOROLA" */
-       ushort size; /* size of EEPROM */
-} vpd_header_t;
-
-#define VPD_DATA_SIZE (VPD_EEPROM_SIZE-sizeof(vpd_header_t))
-typedef struct vpd
-{
-       vpd_header_t header; /* header */
-       uchar packets[VPD_DATA_SIZE]; /* data */
-} vpd_t;
-
-/*
- * packet tuple structure (format)
- */
-typedef struct vpd_packet
-{
-    uchar identifier; /* identifier (PIDs above) */
-    uchar size;       /* size of the following data area */
-    uchar data[1];    /* data (size is dependent upon PID) */
-} vpd_packet_t;
-
-/*
- * MBX product configuration options bit definitions
- *
- * Notes:
- * 1. The bit numbering is reversed in perspective with the C compiler.
- */
-#define PCO_BBRAM    (1<<0)  /* battery-backed RAM (BBRAM) and socket */
-#define PCO_BOOTROM  (1<<1)  /* boot ROM and socket (i.e., socketed FLASH) */
-#define PCO_KAPWR    (1<<2)  /* keep alive power source (lithium battey) and control circuit */
-#define PCO_ENET_TP  (1<<3)  /* ethernet twisted pair (TP) connector (RJ45) */
-#define PCO_ENET_AUI (1<<4)  /* ethernet attachment unit interface (AUI) header */
-#define PCO_PCMCIA   (1<<5)  /* PCMCIA socket */
-#define PCO_DIMM     (1<<6)  /* DIMM module socket */
-#define PCO_DTT      (1<<7)  /* digital thermometer and thermostat (DTT) device */
-#define PCO_LCD      (1<<8)  /* liquid crystal display (LCD) device */
-#define PCO_PCI      (1<<9)  /* PCI-Bus bridge device (QSpan) and ISA-Bus bridge device (Winbond) */
-#define PCO_PCIO     (1<<10) /* PC I/O (COM1, COM2, FDC, LPT, Keyboard/Mouse) */
-#define PCO_EIDE     (1<<11) /* enhanced IDE (EIDE) header */
-#define PCO_FDC      (1<<12) /* floppy disk controller (FDC) header */
-#define PCO_LPT_8XX  (1<<13) /* parallel port header via MPC8xx */
-#define PCO_LPT_PCIO (1<<14) /* parallel port header via PC I/O */
-
-/*
- * FLASH memory configuration packet data
- */
-typedef struct vpd_fmc
-{
-    ushort mid; /* manufacturer's idenitfier */
-    ushort did; /* manufacturer's device idenitfier */
-    uchar ddw;  /* device data width (e.g., 8-bits, 16-bits) */
-    uchar nod;  /* number of devices present */
-    uchar noc;  /* number of columns */
-    uchar cw;   /* column width in bits */
-    uchar wedw; /* write/erase data width */
-} vpd_fmc_t;
-
-/* function prototypes */
-extern void vpd_init(void);
-extern int  vpd_read(uint iic_device, uchar *buf, int count, int offset);
-extern      vpd_packet_t *vpd_find_packet(u_char ident);
-
-#endif /* __vpd_h */
diff --git a/board/mousse/README b/board/mousse/README
deleted file mode 100644 (file)
index d5dda7a..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-
-U-Boot for MOUSSE/MPC8240 (KAHLUA)
-----------------------------------
-James Dougherty (jfd@broadcom.com), 09/10/01
-
-The Broadcom/Vooha Mousse board is a 3U Compact PCI system board
-which uses the MPC8240, a 64MB SDRAM SIMM, and has onboard
-DEC 21143, NS16550 UART, an SGS M48T59Y TOD, and 4MB FLASH.
-See also: http://www.vooha.com/
-
-* NVRAM setenv/printenv/savenv supported.
-* Date Command
-* Serial Console support
-* Network support
-* FLASH of kernel images is supported.
-* FLASH of U-Boot to onboard and PLCC boot region.
-* Kernel command line options from NVRAM is supported.
-* IP PNP options supported.
-
-U-Boot Loading...
-
-
-U-Boot 1.0.5 (Sep 10 2001 - 00:22:25)
-
-CPU:   MPC8240 Revision 1.1 at 198 MHz: 16 kB I-Cache 16 kB D-Cache
-Board: MOUSSE MPC8240/KAHLUA - CHRP (MAP B)
-Built: Sep 10 2001 at 01:01:50
-MPLD:  Revision 127
-Local Bus:  33 MHz
-RTC:   M48T589 TOD/NVRAM (8176) bytes
-  Current date/time: 9/10/2001 0:18:52
-DRAM:  64 MB
-FLASH:  1.960 MB
-PCI:    scanning bus0 ...
-  bus dev fn venID devID class  rev MBAR0    MBAR1    IPIN ILINE
-  00  00  00 1057  0003  060000 11  00000008 00000000 01   00
-  00  0d  00 1011  0019  020000 41  80000001 80000000 01   01
-  00  0e  00 105a  4d38  018000 01  a0000001 a0001001 01   03
-In:    serial
-Out:   serial
-Err:   serial
-
-Hit any key to stop autoboot:  0
-=>
-
-I. Root FileSystem/IP Configuration
-
-bootcmd=tftp 100000 vmlinux.img;bootm
-bootdelay=3
-baudrate=9600
-ipaddr=<IP ADDRESS>
-netmask=<NETMASK>
-hostname=<NAME>
-serverip=<NFS SERVER IP ADDRESS>
-ethaddr=00:00:10:20:30:44
-nfsroot=<NFS SERVER IP ADDRESS>:/boot/root-fs
-gateway=<IP ADDRESS>
-root=/dev/nfs
-stdin=serial
-stdout=serial
-stderr=serial
-
-NVRAM environment variables.
-
-use the command:
-
-setenv <attribute> <value>
-
-type "saveenv" to write to NVRAM.
-
-
-II. To boot from a hard drive:
-
-setenv root /dev/hda1
-
-
-III. IP options which configure the network:
-
-ipaddr=<IP ADDRESS OF MACHINE>
-netmask=<NETMASK>
-hostname=mousse
-ethaddr=00:00:10:20:30:44
-gateway=<IP ADDRESS OF GATEWAY/ROUTER>
-
-
-IV. IP Options which configure NFS Root/Boot Support
-
-root=/dev/nfs
-serverip=<NFS SERVER IP ADDRESS>
-nfsroot=<NFS SERVER IP ADDRESS>:/boot/root-fs
-
-V. U-Boot Image Support
-
-The U-Boot boot loader assumes that after you build
-your kernel (vmlinux), you will create a U-Boot image
-using the following commands or script:
-
-#!/bin/csh
-/bin/touch vmlinux.img
-/bin/rm vmlinux.img
-set path=($TOOLBASE/bin $path)
-set path=($U_BOOT/tools $path)
-powerpc-linux-objcopy -S -O binary vmlinux vmlinux.bin
-gzip -vf vmlinux.bin
-mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n vmlinux.bin.gz -d vmlinux.bin.gz vmlinux.img
-ls -l vmlinux.img
-
-
-VI. ONBOARD FLASH Support
-
-FLASH support is provided for the onboard FLASH chip Bootrom area.
-U-Boot is loaded into either the ROM boot region of the FLASH chip,
-after first being boot-strapped from a pre-progammed AMD29F040 PLCC
-bootrom. The PLCC needs to be programmed with a ROM burner using
-AMD 29F040 ROM parts and the u-boot.bin or u-boot.hex (S-Record)
-images.
-
-The PLCC overlays this same region of flash as the onboard FLASH,
-the jumper J100 is a chip-select for which flash chip you want to
-progam. When jumper J100 is connected to pins 2-3, you boot from
-PLCC FLASH.
-
-To bringup a system, simply flash a flash an AMD29F040 PLCC
-bootrom, and put this in the PLCC socket. Move jumper J100 to
-pins 2-3 and boot from the PLCC.
-
-
-Now, while the system is running, move Jumper J100 to
-pins 1-2 and follow the procedure below to FLASH a bootrom
-(u-boot.bin) image into the onboard bootrom region (AMD29LV160DB):
-
-tftp 100000 u-boot.bin
-protect off FFF00000 FFF7FFFF
-erase FFF00000 FFF7FFFF
-cp.b 100000 FFF00000 \${filesize}\
-
-
-Here is an example:
-
-=>tftp 100000 u-boot.bin
-eth_halt
-eth0: DC21143 Ethernet adapter(bus=0, device=13, func=0)
-DEC Ethernet iobase=0x80000000
-ARP broadcast 1
-Filename 'u-boot.bin'.
-Load address: 0x100000
-Loading: #########################
-done
-Bytes transferred = 123220 (1e154 hex)
-eth_halt
-=>protect off FFF00000 FFF7FFFF
-Un-Protected 8 sectors
-=>erase FFF00000 FFF7FFFF
-Erase Flash from 0xfff00000 to 0xfff7ffff
-Erase FLASH[PLCC_BOOT] -8 sectors:........ done
-Erased 8 sectors
-=>cp.b 100000 FFF00000 1e154
-Copy to Flash... FLASH[PLCC_BOOT]:..done
-=>
-
-
-B. FLASH RAMDISK REGION
-
-FLASH support is provided for an Onboard 512K RAMDISK region.
-
-TThe following commands will FLASH a bootrom (u-boot.bin) image
-into the onboard FLASH region (AMD29LV160DB 2MB FLASH):
-
-tftp 100000 u-boot.bin
-protect off FFF80000 FFFFFFFF
-erase FFF80000 FFFFFFFF
-cp.b 100000 FFF80000 \${filesize}\
-
-
-C. FLASH KERNEL REGION (960KB)
-
-FLASH support is provided for the 960KB onboard FLASH1 segment.
-This allows flashing of kernel images which U-Boot can load
-and run (standalone) from the onboard FLASH chip. It also assumes
-
-The following commands will FLASH a kernel image to 0xffe10000
-
-tftp 100000 vmlinux.img
-protect off FFE10000 FFEFFFFF
-erase FFE10000 FFEFFFFF
-cp.b 100000 FFE10000 \${filesize}\
-reset
-
-Here is an example:
-
-
-=>tftp 100000 vmlinux.img
-eth_halt
-eth0: DC21143 Ethernet adapter(bus=0, device=13, func=0)
-DEC Ethernet iobase=0x80000000
-ARP broadcast 1
-TFTP from server 209.128.93.133; our IP address is 209.128.93.138
-Filename 'vmlinux.img'.
-Load address: 0x100000
-Loading: #####################################################################################################################################################
-done
-Bytes transferred = 760231 (b99a7 hex)
-eth_halt
-=>protect off FFE10000 FFEFFFFF
-Un-Protected 15 sectors
-=>erase FFE10000 FFEFFFFF
-Erase Flash from 0xffe10000 to 0xffefffff
-Erase FLASH[F0_SA3(KERNEL)] -15 sectors:............... done
-Erased 15 sectors
-=>cp.b 100000 FFE10000 b99a7
-Copy to Flash... FLASH[F0_SA3(KERNEL)]:............done
-=>
-
-
-When finished, use the command:
-
-bootm ffe10000
-
-to start the kernel.
-
-Finally, to make this the default boot command, use
-the following commands:
-
-setenv bootcmd bootm ffe10000
-savenv
-
-to make it automatically boot the kernel from FLASH.
-
-
-To go back to development mode (NFS boot)
-
-setenv bootcmd tftp 100000 vmlinux.img\;bootm
-savenv
-
-
-=>tftp 100000 vmlinux.img
-eth0: DC21143 Ethernet adapter(bus=0, device=13, func=0)
-DEC Ethernet iobase=0x80000000
-ARP broadcast 1
-Filename 'vmlinux.img'.
-Load address: 0x100000
-Loading: ####################################################################################################################################################
-done
-Bytes transferred = 752717 (b7c4d hex)
-eth_halt
-=>protect off FFE10000 FFEFFFFF
-Un-Protected 15 sectors
-=>erase FFE10000 FFEFFFFF
-Erase Flash from 0xffe10000 to 0xffefffff
-Erase FLASH[F0_SA3(KERNEL)] -15 sectors:............... done
-Erased 15 sectors
-=>cp.b 100000 FFE10000 b7c4d
-Copy to Flash... FLASH[F0_SA3(KERNEL)]:............done
-=>bootm ffe10000
-## Booting image at ffe10000 ...
-   Image Name:   vmlinux.bin.gz
-   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
-   Data Size:    752653 Bytes = 735 kB = 0 MB
-   Load Address: 00000000
-   Entry Point:  00000000
-   Verifying Checksum ... OK
-   Uncompressing Kernel Image ... OK
-Total memory = 64MB; using 0kB for hash table (at 00000000)
-Linux version 2.4.2_hhl20 (jfd@atlantis) (gcc version 2.95.2 19991024 (release)) #597 Wed Sep 5 23:23:23 PDT 2001
-cpu0: MPC8240/KAHLUA : MOUSSE Platform : 64MB RAM: MPLD Rev. 7f
-Sandpoint port (C) 2000, 2001 MontaVista Software, Inc. (source@mvista.com)
-IP PNP: 802.3 Ethernet Address=<0:0:10:20:30:44>
-NOTICE: mounting root file system via NFS
-On node 0 totalpages: 16384
-zone(0): 16384 pages.
-zone(1): 0 pages.
-zone(2): 0 pages.
-time_init: decrementer frequency = 16.665914 MHz
-time_init: MPC8240 PCI Bus frequency = 33.331828 MHz
-Calibrating delay loop... 133.12 BogoMIPS
-Memory: 62436k available (1336k kernel code, 500k data, 88k init, 0k highmem)
-Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes)
-Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
-Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
-Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
-POSIX conformance testing by UNIFIX
-PCI: Probing PCI hardware
-Linux NET4.0 for Linux 2.4
-Based upon Swansea University Computer Society NET3.039
-Initializing RT netlink socket
-Starting kswapd v1.8
-pty: 256 Unix98 ptys configured
-block: queued sectors max/low 41394kB/13798kB, 128 slots per queue
-Uniform Multi-Platform E-IDE driver Revision: 6.31
-ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
-PDC20262: IDE controller on PCI bus 00 dev 70
-PDC20262: chipset revision 1
-PDC20262: not 100% native mode: will probe irqs later
-PDC20262: ROM enabled at 0x000d0000
-PDC20262: (U)DMA Burst Bit DISABLED Primary PCI Mode Secondary PCI Mode.
-PDC20262: FORCING BURST BIT 0x00 -> 0x01 ACTIVE
-PDC20262: irq=3 dev->irq=3
-    ide0: BM-DMA at 0xbfff00-0xbfff07, BIOS settings: hda:DMA, hdb:DMA
-    ide1: BM-DMA at 0xbfff08-0xbfff0f, BIOS settings: hdc:pio, hdd:pio
-hda: WDC WD300AB-00BVA0, ATA DISK drive
-hdc: SONY CD-RW CRX160E, ATAPI CD/DVD-ROM drive
-ide0 at 0xbfff78-0xbfff7f,0xbfff76 on irq 3
-ide1 at 0xbfff68-0xbfff6f,0xbfff66 on irq 3
-hda: 58633344 sectors (30020 MB) w/2048KiB Cache, CHS=58168/16/63, UDMA(66)
-hdc: ATAPI 32X CD-ROM CD-R/RW drive, 4096kB Cache
-Uniform CD-ROM driver Revision: 3.12
-Partition check:
- /dev/ide/host0/bus0/target0/lun0: p1 p2
-hd: unable to get major 3 for hard disk
-udf: registering filesystem
-loop: loaded (max 8 devices)
-Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
-ttyS00 at 0xffe08080 (irq = 4) is a ST16650
-Linux Tulip driver version 0.9.13a (January 20, 2001)
-eth0: Digital DS21143 Tulip rev 65 at 0xbfff80, EEPROM not present, 00:00:10:20:30:44, IRQ 1.
-eth0:  MII transceiver #0 config 3000 status 7829 advertising 01e1.
-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 4096 bind 4096)
-NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
-devfs: v0.102 (20000622) Richard Gooch (rgooch@atnf.csiro.au)
-devfs: boot_options: 0x0
-VFS: Mounted root (nfs filesystem).
-Mounted devfs on /dev
-Freeing unused kernel memory: 88k init 4k openfirmware
-eth0: Setting full-duplex based on MII#0 link partner capability of 45e1.
-INIT: version 2.78 booting
-INIT: Entering runlevel: 2
-
-
-Welcome to Linux/PPC
-MPC8240/MOUSSE
-
-
-mousse login: root
-Password:
-PAM_unix[13]: (login) session opened for user root by LOGIN(uid=0)
-Last login: Thu Sep  6 00:16:51 2001 on console
-
-
-Welcome to Linux/PPC
-MPC8240/MOUSSE
-
-
-mousse#
diff --git a/board/mousse/flash.c b/board/mousse/flash.c
deleted file mode 100644 (file)
index acedcb1..0000000
+++ /dev/null
@@ -1,917 +0,0 @@
-/*
- * MOUSSE/MPC8240 Board definitions.
- * Flash Routines for MOUSSE onboard AMD29LV106DB devices
- *
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <malloc.h>
-#include "mousse.h"
-#include "flash.h"
-
-int flashLibDebug = 0;
-int flashLibInited = 0;
-
-#define OK  0
-#define ERROR -1
-#define STATUS int
-#define PRINTF                 if (flashLibDebug) printf
-#if 0
-#define PRIVATE                        static
-#else
-#define PRIVATE
-#endif
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-#define SLEEP_DELAY    166
-#define FLASH_SECTOR_SIZE   (64*1024)
-/***********************************************************************
- *
- * Virtual Flash Devices on Mousse board
- *
- * These must be kept in sync with the definitions in flashLib.h.
- *
- ***********************************************************************/
-
-PRIVATE flash_dev_t flashDev[] = {
-    /* Bank 0 sector SA0 (16 kB) */
-    {  "SA0",FLASH0_BANK, FLASH0_SEG0_START, 1, 14,
-       FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
-    },
-    /* Bank 0 sector SA1 (8 kB) */
-    {  "SA1", FLASH0_BANK, FLASH0_SEG0_START + 0x4000, 1, 13,
-       FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
-    },
-    /* Bank 0 sector SA2 (8 kB) */
-    {  "SA2", FLASH0_BANK, FLASH0_SEG0_START + 0x6000, 1, 13,
-       FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
-    },
-    /* Bank 0 sector SA3 is occluded by Mousse I/O devices */
-    /* Bank 0 sectors SA4-SA18, after Mousse devices up to PLCC (960 kB)  */
-    {  "KERNEL", FLASH0_BANK, FLASH0_SEG1_START, 15, 16,
-       FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
-    },
-    /* Bank 0 sectors SA19-SA26, jumper can occlude this by PLCC (512 kB) */
-    /* This is where the Kahlua boot vector and boot ROM code resides. */
-    {  "BOOT",FLASH0_BANK, FLASH0_SEG2_START, 8, 16,
-       FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
-    },
-    /* Bank 0 sectors SA27-SA34 (512 kB) */
-    {  "RAMDISK",FLASH0_BANK, FLASH0_SEG3_START, 8, 16,
-       FLASH0_VENDOR_ID, FLASH0_DEVICE_ID
-    },
-};
-
-int flashDevCount = (sizeof (flashDev) / sizeof (flashDev[0]));
-
-#define DEV(no)                        (&flashDev[no])
-#define DEV_NO(dev)            ((dev) - flashDev)
-
-/***********************************************************************
- *
- * Private Flash Routines
- *
- ***********************************************************************/
-
-/*
- * The convention is:
- *
- * "addr" is always the PROM raw address, which is the address of an
- * 8-bit quantity for flash 0 and 16-bit quantity for flash 1.
- *
- * "pos" is always a logical byte position from the PROM beginning.
- */
-
-#define FLASH0_ADDR(dev, addr) \
-       ((unsigned char *) ((dev)->base + (addr)))
-
-#define FLASH0_WRITE(dev, addr, value) \
-       (*FLASH0_ADDR(dev, addr) = (value))
-
-#define FLASH0_READ(dev, addr) \
-       (*FLASH0_ADDR(dev, addr))
-
-PRIVATE int flashCheck (flash_dev_t * dev)
-{
-       if (!flashLibInited) {
-               printf ("flashCheck: flashLib not initialized\n");
-               return ERROR;
-       }
-
-       if (dev < &flashDev[0] || dev >= &flashDev[flashDevCount]) {
-               printf ("flashCheck: Bad dev parameter\n");
-               return ERROR;
-       }
-
-       if (!dev->found) {
-               printf ("flashCheck: Device %d not available\n", DEV_NO (dev));
-               return ERROR;
-       }
-
-       return OK;
-}
-
-PRIVATE void flashReset (flash_dev_t * dev)
-{
-       PRINTF ("flashReset: dev=%d\n", DEV_NO (dev));
-
-       if (dev->bank == FLASH0_BANK) {
-               FLASH0_WRITE (dev, 0x555, 0xaa);
-               FLASH0_WRITE (dev, 0xaaa, 0x55);
-               FLASH0_WRITE (dev, 0x555, 0xf0);
-       }
-
-       udelay (SLEEP_DELAY);
-
-       PRINTF ("flashReset: done\n");
-}
-
-PRIVATE int flashProbe (flash_dev_t * dev)
-{
-       int rv, deviceID, vendorID;
-
-       PRINTF ("flashProbe: dev=%d\n", DEV_NO (dev));
-
-       if (dev->bank != FLASH0_BANK) {
-               rv = ERROR;
-               goto DONE;
-       }
-
-       FLASH0_WRITE (dev, 0xaaa, 0xaa);
-       FLASH0_WRITE (dev, 0x555, 0x55);
-       FLASH0_WRITE (dev, 0xaaa, 0x90);
-
-       udelay (SLEEP_DELAY);
-
-       vendorID = FLASH0_READ (dev, 0);
-       deviceID = FLASH0_READ (dev, 2);
-
-       FLASH0_WRITE (dev, 0, 0xf0);
-
-       PRINTF ("flashProbe: vendor=0x%x device=0x%x\n", vendorID, deviceID);
-
-       if (vendorID == dev->vendorID && deviceID == dev->deviceID)
-               rv = OK;
-       else
-               rv = ERROR;
-
-  DONE:
-       PRINTF ("flashProbe: rv=%d\n", rv);
-
-       return rv;
-}
-
-PRIVATE int flashWait (flash_dev_t * dev, int addr, int expect, int erase)
-{
-       int rv = ERROR;
-       int i, data;
-       int polls;
-
-#if 0
-       PRINTF ("flashWait: dev=%d addr=0x%x expect=0x%x erase=%d\n",
-               DEV_NO (dev), addr, expect, erase);
-#endif
-
-       if (dev->bank != FLASH0_BANK) {
-               rv = ERROR;
-               goto done;
-       }
-
-       if (erase)
-               polls = FLASH_ERASE_SECTOR_TIMEOUT;     /* Ticks */
-       else
-               polls = FLASH_PROGRAM_POLLS;    /* Loops */
-
-       for (i = 0; i < polls; i++) {
-               if (erase)
-                       udelay (SLEEP_DELAY);
-
-               data = FLASH0_READ (dev, addr);
-
-               if (((data ^ expect) & 0x80) == 0) {
-                       rv = OK;
-                       goto done;
-               }
-
-               if (data & 0x20) {
-                       /*
-                        * If the 0x20 bit has come on, it could actually be because
-                        * the operation succeeded, so check the done bit again.
-                        */
-
-                       data = FLASH0_READ (dev, addr);
-
-                       if (((data ^ expect) & 0x80) == 0) {
-                               rv = OK;
-                               goto done;
-                       }
-
-                       printf ("flashWait: Program error (dev: %d, addr: 0x%x)\n",
-                                       DEV_NO (dev), addr);
-
-                       flashReset (dev);
-                       rv = ERROR;
-                       goto done;
-               }
-       }
-
-       printf ("flashWait: Timeout %s (dev: %d, addr: 0x%x)\n",
-               erase ? "erasing sector" : "programming byte",
-               DEV_NO (dev), addr);
-
-  done:
-
-#if 0
-       PRINTF ("flashWait: rv=%d\n", rv);
-#endif
-
-       return rv;
-}
-
-/***********************************************************************
- *
- * Public Flash Routines
- *
- ***********************************************************************/
-
-STATUS flashLibInit (void)
-{
-       int i;
-
-       PRINTF ("flashLibInit: devices=%d\n", flashDevCount);
-
-       for (i = 0; i < flashDevCount; i++) {
-               flash_dev_t *dev = &flashDev[i];
-
-               /*
-                * For bank 1, probe both without and with byte swappage,
-                * so that this module works on both old and new Mousse boards.
-                */
-
-               flashReset (dev);
-
-               if (flashProbe (dev) != ERROR)
-                       dev->found = 1;
-
-               flashReset (dev);
-
-               if (flashProbe (dev) != ERROR)
-                       dev->found = 1;
-
-               dev->swap = 0;
-
-               if (dev->found) {
-                       PRINTF ("\n  FLASH %s[%d]: iobase=0x%x - %d sectors %d KB",
-                               flashDev[i].name, i, flashDev[i].base,
-                               flashDev[i].sectors,
-                               (flashDev[i].sectors * FLASH_SECTOR_SIZE) / 1024);
-
-               }
-       }
-
-       flashLibInited = 1;
-
-       PRINTF ("flashLibInit: done\n");
-
-       return OK;
-}
-
-STATUS flashEraseSector (flash_dev_t * dev, int sector)
-{
-       int pos, addr;
-
-       PRINTF ("flashErasesector: dev=%d sector=%d\n", DEV_NO (dev), sector);
-
-       if (flashCheck (dev) == ERROR)
-               return ERROR;
-
-       if (sector < 0 || sector >= dev->sectors) {
-               printf ("flashEraseSector: Sector out of range (dev: %d, sector: %d)\n", DEV_NO (dev), sector);
-               return ERROR;
-       }
-
-       pos = FLASH_SECTOR_POS (dev, sector);
-
-       if (dev->bank != FLASH0_BANK) {
-               return ERROR;
-       }
-
-       addr = pos;
-
-       FLASH0_WRITE (dev, 0xaaa, 0xaa);
-       FLASH0_WRITE (dev, 0x555, 0x55);
-       FLASH0_WRITE (dev, 0xaaa, 0x80);
-       FLASH0_WRITE (dev, 0xaaa, 0xaa);
-       FLASH0_WRITE (dev, 0x555, 0x55);
-       FLASH0_WRITE (dev, addr, 0x30);
-
-       return flashWait (dev, addr, 0xff, 1);
-}
-
-/*
- * Note: it takes about as long to flash all sectors together with Chip
- * Erase as it does to flash them one at a time (about 30 seconds for 2
- * MB).  Also since we want to be able to treat subsets of sectors as if
- * they were complete devices, we don't use Chip Erase.
- */
-
-STATUS flashErase (flash_dev_t * dev)
-{
-       int sector;
-
-       PRINTF ("flashErase: dev=%d sectors=%d\n", DEV_NO (dev), dev->sectors);
-
-       if (flashCheck (dev) == ERROR)
-               return ERROR;
-
-       for (sector = 0; sector < dev->sectors; sector++) {
-               if (flashEraseSector (dev, sector) == ERROR)
-                       return ERROR;
-       }
-       return OK;
-}
-
-/*
- * Read and write bytes
- */
-
-STATUS flashRead (flash_dev_t * dev, int pos, char *buf, int len)
-{
-       int addr, words;
-
-       PRINTF ("flashRead: dev=%d pos=0x%x buf=0x%x len=0x%x\n",
-               DEV_NO (dev), pos, (int) buf, len);
-
-       if (flashCheck (dev) == ERROR)
-               return ERROR;
-
-       if (pos < 0 || len < 0 || pos + len > FLASH_MAX_POS (dev)) {
-               printf ("flashRead: Position out of range "
-                       "(dev: %d, pos: 0x%x, len: 0x%x)\n",
-                       DEV_NO (dev), pos, len);
-               return ERROR;
-       }
-
-       if (len == 0)
-               return OK;
-
-       if (dev->bank == FLASH0_BANK) {
-               addr = pos;
-               words = len;
-
-               PRINTF ("flashRead: memcpy(0x%x, 0x%x, 0x%x)\n",
-                       (int) buf, (int) FLASH0_ADDR (dev, pos), len);
-
-               memcpy (buf, FLASH0_ADDR (dev, addr), words);
-
-       }
-       PRINTF ("flashRead: rv=OK\n");
-
-       return OK;
-}
-
-STATUS flashWrite (flash_dev_t * dev, int pos, char *buf, int len)
-{
-       int addr, words;
-
-       PRINTF ("flashWrite: dev=%d pos=0x%x buf=0x%x len=0x%x\n",
-               DEV_NO (dev), pos, (int) buf, len);
-
-       if (flashCheck (dev) == ERROR)
-               return ERROR;
-
-       if (pos < 0 || len < 0 || pos + len > FLASH_MAX_POS (dev)) {
-               printf ("flashWrite: Position out of range "
-                       "(dev: %d, pos: 0x%x, len: 0x%x)\n",
-                       DEV_NO (dev), pos, len);
-               return ERROR;
-       }
-
-       if (len == 0)
-               return OK;
-
-       if (dev->bank == FLASH0_BANK) {
-               unsigned char tmp;
-
-               addr = pos;
-               words = len;
-
-               while (words--) {
-                       tmp = *buf;
-                       if (~FLASH0_READ (dev, addr) & tmp) {
-                               printf ("flashWrite: Attempt to program 0 to 1 "
-                                       "(dev: %d, addr: 0x%x, data: 0x%x)\n",
-                                       DEV_NO (dev), addr, tmp);
-                               return ERROR;
-                       }
-                       FLASH0_WRITE (dev, 0xaaa, 0xaa);
-                       FLASH0_WRITE (dev, 0x555, 0x55);
-                       FLASH0_WRITE (dev, 0xaaa, 0xa0);
-                       FLASH0_WRITE (dev, addr, tmp);
-                       if (flashWait (dev, addr, tmp, 0) < 0)
-                               return ERROR;
-                       buf++;
-                       addr++;
-               }
-       }
-
-       PRINTF ("flashWrite: rv=OK\n");
-
-       return OK;
-}
-
-/*
- * flashWritable returns true if a range contains all F's.
- */
-
-STATUS flashWritable (flash_dev_t * dev, int pos, int len)
-{
-       int addr, words;
-       int rv = ERROR;
-
-       PRINTF ("flashWritable: dev=%d pos=0x%x len=0x%x\n",
-                       DEV_NO (dev), pos, len);
-
-       if (flashCheck (dev) == ERROR)
-               goto done;
-
-       if (pos < 0 || len < 0 || pos + len > FLASH_MAX_POS (dev)) {
-               printf ("flashWritable: Position out of range "
-                       "(dev: %d, pos: 0x%x, len: 0x%x)\n",
-                       DEV_NO (dev), pos, len);
-               goto done;
-       }
-
-       if (len == 0) {
-               rv = 1;
-               goto done;
-       }
-
-       if (dev->bank == FLASH0_BANK) {
-               addr = pos;
-               words = len;
-
-               while (words--) {
-                       if (FLASH0_READ (dev, addr) != 0xff) {
-                               rv = 0;
-                               goto done;
-                       }
-                       addr++;
-               }
-       }
-
-       rv = 1;
-
-  done:
-       PRINTF ("flashWrite: rv=%d\n", rv);
-       return rv;
-}
-
-
-/*
- * NOTE: the below code cannot run from FLASH!!!
- */
-/***********************************************************************
- *
- * Flash Diagnostics
- *
- ***********************************************************************/
-
-STATUS flashDiag (flash_dev_t * dev)
-{
-       unsigned int *buf = 0;
-       int i, len, sector;
-       int rv = ERROR;
-
-       if (flashCheck (dev) == ERROR)
-               return ERROR;
-
-       printf ("flashDiag: Testing device %d, "
-               "base: 0x%x, %d sectors @ %d kB = %d kB\n",
-               DEV_NO (dev), dev->base,
-               dev->sectors,
-               1 << (dev->lgSectorSize - 10),
-               dev->sectors << (dev->lgSectorSize - 10));
-
-       len = 1 << dev->lgSectorSize;
-
-       printf ("flashDiag: Erasing\n");
-
-       if (flashErase (dev) == ERROR) {
-               printf ("flashDiag: Erase failed\n");
-               goto done;
-       }
-       printf ("%d bytes requested ...\n", len);
-       buf = malloc (len);
-       printf ("allocated %d bytes ...\n", len);
-       if (buf == 0) {
-               printf ("flashDiag: Out of memory\n");
-               goto done;
-       }
-
-       /*
-        * Write unique counting pattern to each sector
-        */
-
-       for (sector = 0; sector < dev->sectors; sector++) {
-               printf ("flashDiag: Write sector %d\n", sector);
-
-               for (i = 0; i < len / 4; i++)
-                       buf[i] = sector << 24 | i;
-
-               if (flashWrite (dev,
-                               sector << dev->lgSectorSize,
-                               (char *) buf, len) == ERROR) {
-                       printf ("flashDiag: Write failed (dev: %d, sector: %d)\n",
-                               DEV_NO (dev), sector);
-                       goto done;
-               }
-       }
-
-       /*
-        * Verify
-        */
-
-       for (sector = 0; sector < dev->sectors; sector++) {
-               printf ("flashDiag: Verify sector %d\n", sector);
-
-               if (flashRead (dev,
-                                  sector << dev->lgSectorSize,
-                                  (char *) buf, len) == ERROR) {
-                       printf ("flashDiag: Read failed (dev: %d, sector: %d)\n",
-                               DEV_NO (dev), sector);
-                       goto done;
-               }
-
-               for (i = 0; i < len / 4; i++) {
-                       if (buf[i] != (sector << 24 | i)) {
-                               printf ("flashDiag: Verify error "
-                                       "(dev: %d, sector: %d, offset: 0x%x)\n",
-                                       DEV_NO (dev), sector, i);
-                               printf ("flashDiag: Expected 0x%08x, got 0x%08x\n",
-                                       sector << 24 | i, buf[i]);
-
-                               goto done;
-                       }
-               }
-       }
-
-       printf ("flashDiag: Erasing\n");
-
-       if (flashErase (dev) == ERROR) {
-               printf ("flashDiag: Final erase failed\n");
-               goto done;
-       }
-
-       rv = OK;
-
-  done:
-       if (buf)
-               free (buf);
-
-       if (rv == OK)
-               printf ("flashDiag: Device %d passed\n", DEV_NO (dev));
-       else
-               printf ("flashDiag: Device %d failed\n", DEV_NO (dev));
-
-       return rv;
-}
-
-STATUS flashDiagAll (void)
-{
-       int i;
-       int rv = OK;
-
-       PRINTF ("flashDiagAll: devices=%d\n", flashDevCount);
-
-       for (i = 0; i < flashDevCount; i++) {
-               flash_dev_t *dev = &flashDev[i];
-
-               if (dev->found && flashDiag (dev) == ERROR)
-                       rv = ERROR;
-       }
-
-       if (rv == OK)
-               printf ("flashDiagAll: Passed\n");
-       else
-               printf ("flashDiagAll: Failed because of earlier errors\n");
-
-       return OK;
-}
-
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size = 0;
-       flash_dev_t *dev = NULL;
-
-       flashLibInit ();
-
-       /*
-        * Provide info for FLASH (up to 960K) of Kernel Image data.
-        */
-       dev = FLASH_DEV_BANK0_LOW;
-       flash_info[FLASH_BANK_KERNEL].flash_id =
-                       (dev->vendorID << 16) | dev->deviceID;
-       flash_info[FLASH_BANK_KERNEL].sector_count = dev->sectors;
-       flash_info[FLASH_BANK_KERNEL].size =
-                       flash_info[FLASH_BANK_KERNEL].sector_count * FLASH_SECTOR_SIZE;
-       flash_info[FLASH_BANK_KERNEL].start[FIRST_SECTOR] = dev->base;
-       size += flash_info[FLASH_BANK_KERNEL].size;
-
-       /*
-        * Provide info for 512K PLCC FLASH ROM (U-Boot)
-        */
-       dev = FLASH_DEV_BANK0_BOOT;
-       flash_info[FLASH_BANK_BOOT].flash_id =
-                       (dev->vendorID << 16) | dev->deviceID;
-       flash_info[FLASH_BANK_BOOT].sector_count = dev->sectors;
-       flash_info[FLASH_BANK_BOOT].size =
-                       flash_info[FLASH_BANK_BOOT].sector_count * FLASH_SECTOR_SIZE;
-       flash_info[FLASH_BANK_BOOT].start[FIRST_SECTOR] = dev->base;
-       size += flash_info[FLASH_BANK_BOOT].size;
-
-
-       /*
-        * Provide info for 512K FLASH0 segment (U-Boot)
-        */
-       dev = FLASH_DEV_BANK0_HIGH;
-       flash_info[FLASH_BANK_AUX].flash_id =
-                       (dev->vendorID << 16) | dev->deviceID;
-       flash_info[FLASH_BANK_AUX].sector_count = dev->sectors;
-       flash_info[FLASH_BANK_AUX].size =
-                       flash_info[FLASH_BANK_AUX].sector_count * FLASH_SECTOR_SIZE;
-       flash_info[FLASH_BANK_AUX].start[FIRST_SECTOR] = dev->base;
-       size += flash_info[FLASH_BANK_AUX].size;
-
-
-       return size;
-}
-
-/*
- * Get flash device from U-Boot flash info.
- */
-flash_dev_t *getFlashDevFromInfo (flash_info_t * info)
-{
-       int i;
-
-       if (!info)
-               return NULL;
-
-       for (i = 0; i < flashDevCount; i++) {
-               flash_dev_t *dev = &flashDev[i];
-
-               if (dev->found && (dev->base == info->start[0]))
-                       return dev;
-       }
-       printf ("ERROR: notice, no FLASH mapped at address 0x%x\n",
-                       (unsigned int) info->start[0]);
-       return NULL;
-}
-
-ulong flash_get_size (vu_long * addr, flash_info_t * info)
-{
-       int i;
-
-       for (i = 0; i < flashDevCount; i++) {
-               flash_dev_t *dev = &flashDev[i];
-
-               if (dev->found) {
-                       if (dev->base == (unsigned int) addr) {
-                               info->flash_id = (dev->vendorID << 16) | dev->deviceID;
-                               info->sector_count = dev->sectors;
-                               info->size = info->sector_count * FLASH_SECTOR_SIZE;
-                               return dev->sectors * FLASH_SECTOR_SIZE;
-                       }
-               }
-       }
-       return 0;
-}
-
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-       unsigned int chip;
-
-       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;
-       }
-       chip = (unsigned int) info->flash_id & 0x000000ff;
-
-       switch (chip) {
-
-       case AMD_ID_F040B:
-               printf ("AM29F040B (4 Mbit)\n");
-               break;
-
-       case AMD_ID_LV160B:
-       case FLASH_AM160LV:
-       case 0x49:
-               printf ("AM29LV160B (16 Mbit / 2M x 8bit)\n");
-               break;
-
-       default:
-               printf ("Unknown Chip Type:0x%x\n", chip);
-               break;
-       }
-
-       printf ("  Size: %ld bytes 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[FIRST_SECTOR] + i * FLASH_SECTOR_SIZE,
-                       info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-}
-
-
-/*
- * Erase a range of flash sectors.
- */
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       int prot, sect;
-       flash_dev_t *dev = NULL;
-
-       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 */
-       dev = getFlashDevFromInfo (info);
-       if (dev) {
-               printf ("Erase FLASH[%s] -%d sectors:", dev->name, dev->sectors);
-               for (sect = s_first; sect <= s_last; sect++) {
-                       if (info->protect[sect] == 0) { /* not protected */
-                               printf (".");
-                               if (ERROR == flashEraseSector (dev, sect)) {
-                                       printf ("ERROR: could not erase sector %d on FLASH[%s]\n", sect, dev->name);
-                                       return 1;
-                               }
-                       }
-               }
-       }
-       printf (" done\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)
-{
-
-       flash_dev_t *dev = getFlashDevFromInfo (info);
-       int addr = dest - info->start[0];
-
-       if (!dev)
-               return 1;
-
-       if (OK != flashWrite (dev, addr, (char *) &data, sizeof (ulong))) {
-               printf ("ERROR: could not write to addr=0x%x, data=0x%x\n",
-                       (unsigned int) addr, (unsigned) data);
-               return 1;
-       }
-
-       if ((addr % FLASH_SECTOR_SIZE) == 0)
-               printf (".");
-
-
-       PRINTF ("write_word:0x%x, base=0x%x, addr=0x%x, data=0x%x\n",
-               (unsigned) info->start[0],
-               (unsigned) dest,
-               (unsigned) (dest - info->start[0]), (unsigned) data);
-
-       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;
-       flash_dev_t *dev = getFlashDevFromInfo (info);
-
-       if (dev) {
-               printf ("FLASH[%s]:", dev->name);
-               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));
-       }
-       return 1;
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/mousse/flash.h b/board/mousse/flash.h
deleted file mode 100644 (file)
index b7e4619..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef        FLASH_LIB_H
-#define        FLASH_LIB_H
-
-#include <common.h>
-
-/* PIO operations max */
-#define        FLASH_PROGRAM_POLLS             100000
-
-/* 10 Seconds default */
-#define        FLASH_ERASE_SECTOR_TIMEOUT      (10*1000 /*SEC*/ )
-
-/* Flash device info structure */
-typedef struct flash_dev_s {
-    char        name[24];               /* Bank Name */
-    int                bank;                   /* Bank 0 or 1 */
-    unsigned int base;                 /* Base address */
-    int                sectors;                /* Sector count */
-    int                lgSectorSize;           /* Log2(usable bytes/sector) */
-    int                vendorID;               /* Expected vendor ID */
-    int                deviceID;               /* Expected device ID */
-    int                found;                  /* Set if found by flashLibInit */
-    int                swap;                   /* Set for bank 1 if byte swap req'd */
-} flash_dev_t;
-
-#define FLASH_MAX_POS(dev) \
-       ((dev)->sectors << (dev)->lgSectorSize)
-
-#define FLASH_SECTOR_POS(dev, sector) \
-       ((sector) << (dev)->lgSectorSize)
-
-/* AMD 29F040 */
-#define FLASH0_BANK                    0
-#define FLASH0_VENDOR_ID               0x01
-#define FLASH0_DEVICE_ID               0x49
-
-/* AMD29LV160DB */
-#define FLASH1_BANK                    1
-#define FLASH1_VENDOR_ID               0x0001
-#define FLASH1_DEVICE_ID               0x2249
-
-extern flash_dev_t                     flashDev[];
-extern int                             flashDevCount;
-
-/*
- * Device pointers
- *
- * These must be kept in sync with the table in flashLib.c.
- */
-#define FLASH_DEV_BANK0_SA0            (&flashDev[0])
-#define FLASH_DEV_BANK0_SA1            (&flashDev[1])
-#define FLASH_DEV_BANK0_SA2            (&flashDev[2])
-#define FLASH_DEV_BANK0_LOW            (&flashDev[3]) /* 960K */
-#define FLASH_DEV_BANK0_BOOT           (&flashDev[4]) /* PLCC */
-#define FLASH_DEV_BANK0_HIGH           (&flashDev[5]) /* 512K PLCC shadow */
-
-unsigned long flash_init(void);
-int flashEraseSector(flash_dev_t *dev, int sector);
-int flashErase(flash_dev_t *dev);
-int flashRead(flash_dev_t *dev, int pos, char *buf, int len);
-int flashWrite(flash_dev_t *dev, int pos, char *buf, int len);
-int flashWritable(flash_dev_t *dev, int pos, int len);
-int flashDiag(flash_dev_t *dev);
-int flashDiagAll(void);
-
-ulong flash_get_size (vu_long *addr, flash_info_t *info);
-void flash_print_info  (flash_info_t *info);
-int  flash_erase (flash_info_t *info, int s_first, int s_last);
-int  write_buff  (flash_info_t *info, uchar *src, ulong addr, ulong cnt);
-
-/*
- * Flash info indices.
- */
-#define FLASH_BANK_KERNEL 0
-#define FLASH_BANK_BOOT   1
-#define FLASH_BANK_AUX    2
-#define FIRST_SECTOR      0
-
-#endif /* !FLASH_LIB_H */
diff --git a/board/mousse/m48t59y.c b/board/mousse/m48t59y.c
deleted file mode 100644 (file)
index 9a70dbe..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- *
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * The SGS M48 an 8K NVRAM starting at offset M48_BASE_ADDR and
- * continuing for 8176 bytes. After that starts the Time-Of-Day (TOD)
- * registers which are used to set/get the internal date/time functions.
- *
- * This module implements Y2K compliance by taking full year numbers
- * and translating back and forth from the TOD 2-digit year.
- *
- * NOTE: for proper interaction with an operating system, the TOD should
- * be used to store Universal Coordinated Time (GMT) and timezone
- * conversions should be used.
- *
- * Here is a diagram of the memory layout:
- *
- * +---------------------------------------------+ 0xffe0a000
- * | Non-volatile memory                         | .
- * |                                             | .
- * | (8176 bytes of Non-volatile memory)         | .
- * |                                             | .
- * +---------------------------------------------+ 0xffe0bff0
- * | Flags                                       |
- * +---------------------------------------------+ 0xffe0bff1
- * | Unused                                      |
- * +---------------------------------------------+ 0xffe0bff2
- * | Alarm Seconds                               |
- * +---------------------------------------------+ 0xffe0bff3
- * | Alarm Minutes                               |
- * +---------------------------------------------+ 0xffe0bff4
- * | Alarm Date                                  |
- * +---------------------------------------------+ 0xffe0bff5
- * | Interrupts                                  |
- * +---------------------------------------------+ 0xffe0bff6
- * | WatchDog                                    |
- * +---------------------------------------------+ 0xffe0bff7
- * | Calibration                                 |
- * +---------------------------------------------+ 0xffe0bff8
- * | Seconds                                     |
- * +---------------------------------------------+ 0xffe0bff9
- * | Minutes                                     |
- * +---------------------------------------------+ 0xffe0bffa
- * | Hours                                       |
- * +---------------------------------------------+ 0xffe0bffb
- * | Day                                         |
- * +---------------------------------------------+ 0xffe0bffc
- * | Date                                        |
- * +---------------------------------------------+ 0xffe0bffd
- * | Month                                       |
- * +---------------------------------------------+ 0xffe0bffe
- * | Year (2 digits only)                        |
- * +---------------------------------------------+ 0xffe0bfff
- */
-#include <common.h>
-#include <rtc.h>
-#include "mousse.h"
-
-/*
- * Imported from mousse.h:
- *
- *   TOD_REG_BASE              Base of m48t59y TOD registers
- *   SYS_TOD_UNPROTECT()       Disable NVRAM write protect
- *   SYS_TOD_PROTECT()         Re-enable NVRAM write protect
- */
-
-#define YEAR           0xf
-#define MONTH          0xe
-#define DAY            0xd
-#define DAY_OF_WEEK    0xc
-#define HOUR           0xb
-#define MINUTE         0xa
-#define SECOND         0x9
-#define CONTROL                0x8
-#define WATCH          0x7
-#define INTCTL         0x6
-#define WD_DATE                0x5
-#define WD_HOUR                0x4
-#define WD_MIN         0x3
-#define WD_SEC         0x2
-#define _UNUSED                0x1
-#define FLAGS          0x0
-
-#define M48_ADDR       ((volatile unsigned char *) TOD_REG_BASE)
-
-int m48_tod_init(void)
-{
-    SYS_TOD_UNPROTECT();
-
-    M48_ADDR[CONTROL] = 0;
-    M48_ADDR[WATCH] = 0;
-    M48_ADDR[INTCTL] = 0;
-
-    /*
-     * If the oscillator is currently stopped (as on a new part shipped
-     * from the factory), start it running.
-     *
-     * Here is an example of the TOD bytes on a brand new M48T59Y part:
-     *         00 00 00 00 00 00 00 00 00 88 8c c3 bf c8 f5 01
-     */
-
-    if (M48_ADDR[SECOND] & 0x80)
-       M48_ADDR[SECOND] = 0;
-
-    /* Is battery low */
-    if ( M48_ADDR[FLAGS] & 0x10) {
-        printf("NOTICE: Battery low on Real-Time Clock (replace SNAPHAT).\n");
-    }
-
-    SYS_TOD_PROTECT();
-
-    return 0;
-}
-
-/*
- * m48_tod_set
- */
-
-static int to_bcd(int value)
-{
-    return value / 10 * 16 + value % 10;
-}
-
-static int from_bcd(int value)
-{
-    return value / 16 * 10 + value % 16;
-}
-
-static int day_of_week(int y, int m, int d)    /* 0-6 ==> Sun-Sat */
-{
-    static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
-    y -= m < 3;
-    return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
-}
-
-/*
- * Note: the TOD should store the current GMT
- */
-
-int m48_tod_set(int year,              /* 1980-2079 */
-               int month,              /* 01-12 */
-               int day,                /* 01-31 */
-               int hour,               /* 00-23 */
-               int minute,             /* 00-59 */
-               int second)             /* 00-59 */
-
-{
-    SYS_TOD_UNPROTECT();
-
-    M48_ADDR[CONTROL] |= 0x80; /* Set WRITE bit */
-
-    M48_ADDR[YEAR] = to_bcd(year % 100);
-    M48_ADDR[MONTH] = to_bcd(month);
-    M48_ADDR[DAY] = to_bcd(day);
-    M48_ADDR[DAY_OF_WEEK] = day_of_week(year, month, day) + 1;
-    M48_ADDR[HOUR] = to_bcd(hour);
-    M48_ADDR[MINUTE] = to_bcd(minute);
-    M48_ADDR[SECOND] = to_bcd(second);
-
-    M48_ADDR[CONTROL] &= ~0x80;        /* Clear WRITE bit */
-
-    SYS_TOD_PROTECT();
-
-    return 0;
-}
-
-/*
- * Note: the TOD should store the current GMT
- */
-
-int m48_tod_get(int *year,             /* 1980-2079 */
-               int *month,             /* 01-12 */
-               int *day,               /* 01-31 */
-               int *hour,              /* 00-23 */
-               int *minute,            /* 00-59 */
-               int *second)            /* 00-59 */
-{
-    int y;
-
-    SYS_TOD_UNPROTECT();
-
-    M48_ADDR[CONTROL] |= 0x40; /* Set READ bit */
-
-    y = from_bcd(M48_ADDR[YEAR]);
-    *year = y < 80 ? 2000 + y : 1900 + y;
-    *month = from_bcd(M48_ADDR[MONTH]);
-    *day = from_bcd(M48_ADDR[DAY]);
-    /* day_of_week = M48_ADDR[DAY_OF_WEEK] & 0xf; */
-    *hour = from_bcd(M48_ADDR[HOUR]);
-    *minute = from_bcd(M48_ADDR[MINUTE]);
-    *second = from_bcd(M48_ADDR[SECOND] & 0x7f);
-
-    M48_ADDR[CONTROL] &= ~0x40;        /* Clear READ bit */
-
-    SYS_TOD_PROTECT();
-
-    return 0;
-}
-
-int m48_tod_get_second(void)
-{
-    return from_bcd(M48_ADDR[SECOND] & 0x7f);
-}
-
-/*
- * Watchdog function
- *
- *  If usec is 0, the watchdog timer is disarmed.
- *
- *  If usec is non-zero, the watchdog timer is armed (or re-armed) for
- *    approximately usec microseconds (if the exact requested usec is
- *    not supported by the chip, the next higher available value is used).
- *
- *  Minimum watchdog timeout = 62500 usec
- *  Maximum watchdog timeout = 124 sec (124000000 usec)
- */
-
-void m48_watchdog_arm(int usec)
-{
-    int                mpy, res;
-
-    SYS_TOD_UNPROTECT();
-
-    if (usec == 0) {
-       res = 0;
-       mpy = 0;
-    } else if (usec < 2000000) {       /* Resolution: 1/16s if below 2s */
-       res = 0;
-       mpy = (usec + 62499) / 62500;
-    } else if (usec < 8000000) {       /* Resolution: 1/4s if below 8s */
-       res = 1;
-       mpy = (usec + 249999) / 250000;
-    } else if (usec < 32000000) {      /* Resolution: 1s if below 32s */
-       res = 2;
-       mpy = (usec + 999999) / 1000000;
-    } else {                           /* Resolution: 4s up to 124s */
-       res = 3;
-       mpy = (usec + 3999999) / 4000000;
-       if (mpy > 31)
-           mpy = 31;
-    }
-
-    M48_ADDR[WATCH] = (0x80 |          /* Steer to RST signal (IRQ = N/C) */
-                      mpy << 2 |
-                      res);
-
-    SYS_TOD_PROTECT();
-}
-
-/*
- * U-Boot RTC support.
- */
-int
-rtc_get( struct rtc_time *tmp )
-{
-       m48_tod_get(&tmp->tm_year,
-                   &tmp->tm_mon,
-                   &tmp->tm_mday,
-                   &tmp->tm_hour,
-                   &tmp->tm_min,
-                   &tmp->tm_sec);
-       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 )
-{
-       m48_tod_set(tmp->tm_year,               /* 1980-2079 */
-                   tmp->tm_mon,                /* 01-12 */
-                   tmp->tm_mday,              /* 01-31 */
-                   tmp->tm_hour,               /* 00-23 */
-                   tmp->tm_min,                /* 00-59 */
-                   tmp->tm_sec);               /* 00-59 */
-
-#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
-
-       return 0;
-}
-
-void
-rtc_reset (void)
-{
-  m48_tod_init();
-}
diff --git a/board/mousse/m48t59y.h b/board/mousse/m48t59y.h
deleted file mode 100644 (file)
index 2c7c092..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * SGS M48-T59Y TOD/NVRAM Driver
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
- *
- * (C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __M48_T59_Y_H
-#define __M48_T59_Y_H
-
-/*
- * M48 T59Y -Timekeeping Battery backed SRAM.
- */
-
-int m48_tod_init(void);
-
-int m48_tod_set(int year,
-               int month,
-               int day,
-               int hour,
-               int minute,
-               int second);
-
-int m48_tod_get(int *year,
-               int *month,
-               int *day,
-               int *hour,
-               int *minute,
-               int *second);
-
-int m48_tod_get_second(void);
-
-void m48_watchdog_arm(int usec);
-
-#endif /*!__M48_T59_Y_H */
diff --git a/board/mousse/mousse.c b/board/mousse/mousse.c
deleted file mode 100644 (file)
index e1724e6..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * MOUSSE Board Support
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James Dougherty, jfd@cs.stanford.edu
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc824x.h>
-#include <netdev.h>
-#include <asm/processor.h>
-#include <timestamp.h>
-
-#include "mousse.h"
-#include "m48t59y.h"
-#include <pci.h>
-
-
-int checkboard (void)
-{
-       ulong busfreq = get_bus_freq (0);
-       char buf[32];
-
-       puts ("Board: MOUSSE MPC8240/KAHLUA - CHRP (MAP B)\n");
-       printf ("Built: %s at %s\n", U_BOOT_DATE, U_BOOT_TIME);
-       printf ("MPLD:  Revision %d\n", SYS_REVID_GET ());
-       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)
-{
-       return CONFIG_SYS_RAM_SIZE;
-}
-
-
-void get_tod (void)
-{
-       int year, month, day, hour, minute, second;
-
-       m48_tod_get (&year, &month, &day, &hour, &minute, &second);
-
-       printf ("  Current date/time: %d/%d/%d %d:%d:%d \n",
-               month, day, year, hour, minute, second);
-
-}
-
-/*
- * EPIC, PCI, and I/O devices.
- * Initialize Mousse Platform, probe for PCI devices,
- * Query configuration parameters if not set.
- */
-int misc_init_f (void)
-{
-       m48_tod_init ();        /* Init SGS M48T59Y TOD/NVRAM */
-       printf ("RTC:   M48T589 TOD/NVRAM (%d) bytes\n", TOD_NVRAM_SIZE);
-       get_tod ();
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
diff --git a/board/mousse/mousse.h b/board/mousse/mousse.h
deleted file mode 100644 (file)
index ce8a054..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * MOUSSE/MPC8240 Board definitions.
- * For more info, see http://www.vooha.com/
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James Dougherty (jfd@cs.stanford.edu)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MOUSSE_H
-#define __MOUSSE_H
-
-/* System addresses */
-
-#define PCI_SPECIAL_BASE       0xfe000000
-#define PCI_SPECIAL_SIZE       0x01000000
-
-/* PORTX Device Addresses for Mousse */
-
-#define PORTX_DEV_BASE         0xff000000
-#define PORTX_DEV_SIZE         0x01000000
-
-#define ENET_DEV_BASE          0x80000000
-
-#define PLD_REG_BASE           (PORTX_DEV_BASE | 0xe09000)
-#define PLD_REG(off)           (*(volatile unsigned char *) \
-                                (PLD_REG_BASE + (off)))
-
-#define PLD_REVID_B1           0x7f
-#define PLD_REVID_B2           0x01
-
-/* MPLD */
-#define SYS_HARD_RESET()       { for (;;) PLD_REG(0) = 0; } /* clr 0x80 bit */
-#define SYS_REVID_GET()                ((int) PLD_REG(0) & 0x7f)
-#define SYS_LED_OFF()          (PLD_REG(1) |= 0x80)
-#define SYS_LED_ON()           (PLD_REG(1) &= ~0x80)
-#define SYS_WATCHDOG_IRQ3()    (PLD_REG(2) |= 0x80)
-#define SYS_WATCHDOG_RESET()   (PLD_REG(2) &= ~0x80)
-#define SYS_TOD_PROTECT()      (PLD_REG(3) |= 0x80)
-#define SYS_TOD_UNPROTECT()    (PLD_REG(3) &= ~0x80)
-
-/* SGS M48T59Y */
-#define TOD_BASE               (PORTX_DEV_BASE | 0xe0a000)
-#define TOD_REG_BASE           (TOD_BASE | 0x1ff0)
-#define TOD_NVRAM_BASE         TOD_BASE
-#define TOD_NVRAM_SIZE         0x1ff0
-#define TOD_NVRAM_LIMIT                (TOD_NVRAM_BASE + TOD_NVRAM_SIZE)
-
-/* NS16552 SIO */
-#define SERIAL_BASE(_x)                (PORTX_DEV_BASE | 0xe08000 | ((_x) ? 0 : 0x80))
-#define N_SIO_CHANNELS         2
-#define N_COM_PORTS            N_SIO_CHANNELS
-
-/*
- * On-board Dec21143 PCI Ethernet
- * Note: The PCI MBAR chosen here was used from MPC8240UM which states
- * that PCI memory is at: 0x80000 - 0xFDFFFFFF, if AMBOR[CPU_FD_ALIAS]
- * is set, then PCI memory maps 1-1 with this address range in the
- * correct byte order.
- */
-#define PCI_ENET_IOADDR                0x80000000
-#define PCI_ENET_MEMADDR       0x80000000
-
-/*
- * Flash Memory Layout
- *
- *    2 MB Flash Bank 0 runs in 8-bit mode.  In Flash Bank 0, the 32 kB
- *    sector SA3 is obscured by the 32 kB serial/TOD access space, and
- *    the 64 kB sectors SA19-SA26 are obscured by the 512 kB PLCC
- *    containing the fixed boot ROM.  (If the 512 kB PLCC is
- *    deconfigured by jumper, this window to Flash Bank 0 becomes
- *    visible, but it still contains the fixed boot code and should be
- *    considered read-only).  Flash Bank 0 sectors SA0 (16 kB), SA1 (8
- *    kB), and SA2 (8 kB) are currently unused.
- *
- *    2 MB Flash Bank 1 runs in 16-bit mode.  Flash Bank 1 is fully
- *    usable, but it's a 16-bit wide device on a 64-bit bus.  Therefore
- *    16-bit words only exist at addresses that are multiples of 8.  All
- *    PROM data and control addresses must be multiplied by 8.
- *
- *    See flashMap.c for description of flash filesystem layout.
- */
-
-/*
- * FLASH memory address space: 8-bit wide FLASH memory spaces.
- */
-#define FLASH0_SEG0_START      0xffe00000       /* Baby 32Kb segment */
-#define FLASH0_SEG0_END                0xffe07fff       /* 16 kB + 8 kB + 8 kB */
-#define FLASH0_SEG0_SIZE       0x00008000       /*   (sectors SA0-SA2) */
-
-#define FLASH0_SEG1_START      0xffe10000       /* 1MB - 64Kb FLASH0 seg */
-#define FLASH0_SEG1_END                0xffefffff       /* 960 kB */
-#define FLASH0_SEG1_SIZE       0x000f0000
-
-#define FLASH0_SEG2_START      0xfff00000       /* Boot Loader stored here */
-#define FLASH0_SEG2_END                0xfff7ffff       /* 512 kB FLASH0/PLCC seg */
-#define FLASH0_SEG2_SIZE       0x00080000
-
-#define FLASH0_SEG3_START      0xfff80000       /* 512 kB FLASH0 seg */
-#define FLASH0_SEG3_END                0xffffffff
-#define FLASH0_SEG3_SIZE       0x00080000
-
-/* Where Kahlua starts */
-#define FLASH_RESET_VECT       0xfff00100
-
-/*
- * CHRP / PREP (MAP A/B) definitions.
- */
-
-#define PREP_REG_ADDR          0x80000cf8      /* MPC107 Config, Map A */
-#define PREP_REG_DATA          0x80000cfc      /* MPC107 Config, Map A */
-/* MPC107 (MPC8240 internal EUMBBAR mapped) */
-#define CHRP_REG_ADDR          0xfec00000      /* MPC106 Config, Map B */
-#define CHRP_REG_DATA          0xfee00000      /* MPC106 Config, Map B */
-
-/*
- * Mousse PCI IDSEL Assignments (Device Number)
- */
-#define MOUSSE_IDSEL_ENET      13              /* On-board 21143 Ethernet */
-#define MOUSSE_IDSEL_LPCI      14              /* On-board PCI slot */
-#define MOUSSE_IDSEL_82371     15              /* That other thing */
-#define MOUSSE_IDSEL_CPCI2     31              /* CPCI slot 2 */
-#define MOUSSE_IDSEL_CPCI3     30              /* CPCI slot 3 */
-#define MOUSSE_IDSEL_CPCI4     29              /* CPCI slot 4 */
-#define MOUSSE_IDSEL_CPCI5     28              /* CPCI slot 5 */
-#define MOUSSE_IDSEL_CPCI6     27              /* CPCI slot 6 */
-
-/*
- * Mousse Interrupt Mapping:
- *
- *     IRQ1    Enet (intA|intB|intC|intD)
- *     IRQ2    CPCI intA (See below)
- *     IRQ3    Local PCI slot intA|intB|intC|intD
- *     IRQ4    COM1 Serial port (Actually higher addressed port on duart)
- *
- * PCI Interrupt Mapping in CPCI chassis:
- *
- *                |           CPCI Slot
- *                | 1 (CPU)    2       3       4       5       6
- *     -----------+--------+-------+-------+-------+-------+-------+
- *       intA     |    X               X               X
- *       intB     |            X               X               X
- *       intC     |    X               X               X
- *       intD     |            X               X               X
- */
-
-
-#define EPIC_VECTOR_EXT0       0
-#define EPIC_VECTOR_EXT1       1
-#define EPIC_VECTOR_EXT2       2
-#define EPIC_VECTOR_EXT3       3
-#define EPIC_VECTOR_EXT4       4
-#define EPIC_VECTOR_TM0                16
-#define EPIC_VECTOR_TM1                17
-#define EPIC_VECTOR_TM2                18
-#define EPIC_VECTOR_TM3                19
-#define EPIC_VECTOR_I2C                20
-#define EPIC_VECTOR_DMA0       21
-#define EPIC_VECTOR_DMA1       22
-#define EPIC_VECTOR_I2O                23
-
-
-#define INT_VEC_IRQ0           0
-#define INT_NUM_IRQ0           INT_VEC_IRQ0
-#define MOUSSE_IRQ_ENET                EPIC_VECTOR_EXT1        /* Hardwired */
-#define MOUSSE_IRQ_CPCI                EPIC_VECTOR_EXT2        /* Hardwired */
-#define MOUSSE_IRQ_LPCI                EPIC_VECTOR_EXT3        /* Hardwired */
-#define MOUSSE_IRQ_DUART       EPIC_VECTOR_EXT4        /* Hardwired */
-
-/* Onboard DEC 21143 Ethernet */
-#define PCI_ENET_MEMADDR       0x80000000
-#define PCI_ENET_IOADDR                0x80000000
-
-/* Some other PCI device */
-#define PCI_SLOT_MEMADDR       0x81000000
-#define PCI_SLOT_IOADDR                0x81000000
-
-/* Promise ATA66 PCI Device (ATA controller) */
-#define PROMISE_MBAR0  0xa0000000
-#define PROMISE_MBAR1  (PROMISE_MBAR0 + 0x1000)
-#define PROMISE_MBAR2  (PROMISE_MBAR0 + 0x2000)
-#define PROMISE_MBAR3  (PROMISE_MBAR0 + 0x3000)
-#define PROMISE_MBAR4  (PROMISE_MBAR0 + 0x4000)
-#define PROMISE_MBAR5  (PROMISE_MBAR0 + 0x5000)
-
-/* ATA/66 Controller offsets */
-#define CONFIG_SYS_ATA_BASE_ADDR     PROMISE_MBAR0
-#define CONFIG_SYS_IDE_MAXBUS         2 /* ide0/ide1 */
-#define CONFIG_SYS_IDE_MAXDEVICE      2 /* 2 drives per controller */
-#define CONFIG_SYS_ATA_IDE0_OFFSET    0
-#define CONFIG_SYS_ATA_IDE1_OFFSET    0x3000
-/*
- * Definitions for accessing IDE controller registers
- */
-#define CONFIG_SYS_ATA_DATA_OFFSET    0
-#define CONFIG_SYS_ATA_REG_OFFSET     0
-#define CONFIG_SYS_ATA_ALT_OFFSET    (0x1000)
-
-/*
- * The constants ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, and RAM_LOW_ADRS
- * are defined in config.h and Makefile.
- * All definitions for these constants must be identical.
- */
-#define ROM_BASE_ADRS          0xfff00000      /* base address of ROM */
-#define ROM_TEXT_ADRS          (ROM_BASE_ADRS+0x0100) /* with PC & SP */
-#define ROM_WARM_ADRS          (ROM_TEXT_ADRS+0x0004) /* warm reboot entry */
-#define ROM_SIZE               0x00080000      /* 512KB ROM space */
-#define RAM_LOW_ADRS           0x00010000   /* RAM address for vxWorks */
-#define RAM_HIGH_ADRS          0x00c00000   /* RAM address for bootrom */
-
-/*
- *  NVRAM configuration
- *  NVRAM is implemented via the SGS Thomson M48T59Y
- *  64Kbit (8Kbx8) Timekeeper SRAM.
- *  This 8KB NVRAM also has a TOD. See m48t59y.{h,c} for more information.
- */
-
-#define NV_RAM_ADRS            TOD_NVRAM_BASE
-#define NV_RAM_INTRVL          1
-#define NV_RAM_WR_ENBL         SYS_TOD_UNPROTECT()
-#define NV_RAM_WR_DSBL         SYS_TOD_PROTECT()
-
-#define NV_OFF_BOOT0           0x0000  /* Boot string 0 (256b) */
-#define NV_OFF_BOOT1           0x0100  /* Boot string 1 (256b) */
-#define NV_OFF_BOOT2           0x0200  /* Boot string 2 (256b)*/
-#define NV_OFF_MACADDR         0x0400  /* 21143 MAC address (6b) */
-#define NV_OFF_ACTIVEBOOT      0x0406  /* Active boot string, 0 to 2 (1b) */
-#define NV_OFF_UNUSED1         0x0407  /* Unused (1b) */
-#define NV_OFF_BINDFIX         0x0408  /* See sysLib.c:sysBindFix() (1b) */
-#define NV_OFF_UNUSED2         0x0409  /* Unused (7b) */
-#define NV_OFF_TIMEZONE                0x0410  /* TIMEZONE env var (64b) */
-#define NV_OFF_VXWORKS_END     0x07FF  /* 2047 VxWorks Total */
-#define NV_OFF_U_BOOT          0x0800  /* 2048 U-Boot boot-loader */
-#define NV_OFF_U_BOOT_ADDR     (TOD_BASE + NV_OFF_U_BOOT) /* sysaddr*/
-#define NV_U_BOOT_ENV_SIZE     2048    /* 2K - U-Boot Total */
-#define NV_OFF__next_free      (NV_U_BOOT_ENVSIZE +1)
-#define NV_RAM_SIZE            8176    /* NVRAM End */
-
-#endif /* __MOUSSE_H */
diff --git a/board/mousse/pci.c b/board/mousse/pci.c
deleted file mode 100644 (file)
index a64144b..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James Dougherty (jfd@cs.stanford.edu)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * PCI Configuration space access support for MPC824x/MPC107 PCI Bridge
- */
-#include <common.h>
-#include <mpc824x.h>
-#include <pci.h>
-
-#include "mousse.h"
-
-/*
- * Promise ATA/66 support.
- */
-#define XFER_PIO_4     0x0C    /* 0000|1100 */
-#define XFER_PIO_3     0x0B    /* 0000|1011 */
-#define XFER_PIO_2     0x0A    /* 0000|1010 */
-#define XFER_PIO_1     0x09    /* 0000|1001 */
-#define XFER_PIO_0     0x08    /* 0000|1000 */
-#define XFER_PIO_SLOW  0x00    /* 0000|0000 */
-
-/* Promise Regs */
-#define REG_A          0x01
-#define REG_B          0x02
-#define REG_C          0x04
-#define REG_D          0x08
-
-void
-pdc202xx_decode_registers (unsigned char registers, unsigned char value)
-{
-       unsigned char   bit = 0, bit1 = 0, bit2 = 0;
-       switch(registers) {
-               case REG_A:
-                       bit2 = 0;
-                       printf("  A Register ");
-                       if (value & 0x80) printf("SYNC_IN ");
-                       if (value & 0x40) printf("ERRDY_EN ");
-                       if (value & 0x20) printf("IORDY_EN ");
-                       if (value & 0x10) printf("PREFETCH_EN ");
-                       if (value & 0x08) { printf("PA3 ");bit2 |= 0x08; }
-                       if (value & 0x04) { printf("PA2 ");bit2 |= 0x04; }
-                       if (value & 0x02) { printf("PA1 ");bit2 |= 0x02; }
-                       if (value & 0x01) { printf("PA0 ");bit2 |= 0x01; }
-                       printf("PIO(A) = %d ", bit2);
-                       break;
-               case REG_B:
-                       bit1 = 0;bit2 = 0;
-                       printf("  B Register ");
-                       if (value & 0x80) { printf("MB2 ");bit1 |= 0x80; }
-                       if (value & 0x40) { printf("MB1 ");bit1 |= 0x40; }
-                       if (value & 0x20) { printf("MB0 ");bit1 |= 0x20; }
-                       printf("DMA(B) = %d ", bit1 >> 5);
-                       if (value & 0x10) printf("PIO_FORCED/PB4 ");
-                       if (value & 0x08) { printf("PB3 ");bit2 |= 0x08; }
-                       if (value & 0x04) { printf("PB2 ");bit2 |= 0x04; }
-                       if (value & 0x02) { printf("PB1 ");bit2 |= 0x02; }
-                       if (value & 0x01) { printf("PB0 ");bit2 |= 0x01; }
-                       printf("PIO(B) = %d ", bit2);
-                       break;
-               case REG_C:
-                       bit2 = 0;
-                       printf("  C Register ");
-                       if (value & 0x80) printf("DMARQp ");
-                       if (value & 0x40) printf("IORDYp ");
-                       if (value & 0x20) printf("DMAR_EN ");
-                       if (value & 0x10) printf("DMAW_EN ");
-
-                       if (value & 0x08) { printf("MC3 ");bit2 |= 0x08; }
-                       if (value & 0x04) { printf("MC2 ");bit2 |= 0x04; }
-                       if (value & 0x02) { printf("MC1 ");bit2 |= 0x02; }
-                       if (value & 0x01) { printf("MC0 ");bit2 |= 0x01; }
-                       printf("DMA(C) = %d ", bit2);
-                       break;
-               case REG_D:
-                       printf("  D Register ");
-                       break;
-               default:
-                       return;
-       }
-       printf("\n        %s ", (registers & REG_D) ? "DP" :
-                               (registers & REG_C) ? "CP" :
-                               (registers & REG_B) ? "BP" :
-                               (registers & REG_A) ? "AP" : "ERROR");
-       for (bit=128;bit>0;bit/=2)
-               printf("%s", (value & bit) ? "1" : "0");
-       printf("\n");
-}
-
-/*
- * Promise ATA/66 Support: configure Promise ATA66 card in specified mode.
- */
-int
-pdc202xx_tune_chipset (pci_dev_t dev, int drive, unsigned char speed)
-{
-       unsigned short          drive_conf;
-       int                     err = 0;
-       unsigned char                   drive_pci, AP, BP, CP, DP;
-       unsigned char                   TA = 0, TB = 0;
-
-       switch (drive) {
-               case 0: drive_pci = 0x60; break;
-               case 1: drive_pci = 0x64; break;
-               case 2: drive_pci = 0x68; break;
-               case 3: drive_pci = 0x6c; break;
-               default: return -1;
-       }
-
-       pci_read_config_word(dev, drive_pci, &drive_conf);
-       pci_read_config_byte(dev, (drive_pci), &AP);
-       pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-       pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
-       pci_read_config_byte(dev, (drive_pci)|0x03, &DP);
-
-       if ((AP & 0x0F) || (BP & 0x07)) {
-         /* clear PIO modes of lower 8421 bits of A Register */
-         pci_write_config_byte(dev, (drive_pci), AP & ~0x0F);
-         pci_read_config_byte(dev, (drive_pci), &AP);
-
-         /* clear PIO modes of lower 421 bits of B Register */
-         pci_write_config_byte(dev, (drive_pci)|0x01, BP & ~0x07);
-         pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-
-         pci_read_config_byte(dev, (drive_pci), &AP);
-         pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-       }
-
-       pci_read_config_byte(dev, (drive_pci), &AP);
-       pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-       pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
-
-       switch(speed) {
-               case XFER_PIO_4:        TA = 0x01; TB = 0x04; break;
-               case XFER_PIO_3:        TA = 0x02; TB = 0x06; break;
-               case XFER_PIO_2:        TA = 0x03; TB = 0x08; break;
-               case XFER_PIO_1:        TA = 0x05; TB = 0x0C; break;
-               case XFER_PIO_0:
-               default:                TA = 0x09; TB = 0x13; break;
-       }
-
-       pci_write_config_byte(dev, (drive_pci), AP|TA);
-       pci_write_config_byte(dev, (drive_pci)|0x01, BP|TB);
-
-       pci_read_config_byte(dev, (drive_pci), &AP);
-       pci_read_config_byte(dev, (drive_pci)|0x01, &BP);
-       pci_read_config_byte(dev, (drive_pci)|0x02, &CP);
-       pci_read_config_byte(dev, (drive_pci)|0x03, &DP);
-
-
-#ifdef PDC202XX_DEBUG
-       pdc202xx_decode_registers(REG_A, AP);
-       pdc202xx_decode_registers(REG_B, BP);
-       pdc202xx_decode_registers(REG_C, CP);
-       pdc202xx_decode_registers(REG_D, DP);
-#endif
-       return err;
-}
-/*
- * Show/Init PCI devices on the specified bus number.
- */
-
-void pci_mousse_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
-{
-       unsigned int line;
-
-       switch(PCI_DEV(dev)) {
-       case 0x0d:
-               line = 0x00000101;
-               break;
-
-       case 0x0e:
-       default:
-               line = 0x00000303;
-               break;
-       }
-
-       pci_write_config_dword(dev, PCI_INTERRUPT_LINE, line);
-}
-
-void pci_mousse_setup_pdc202xx(struct pci_controller *hose, pci_dev_t dev,
-                              struct pci_config_table *_)
-{
-       unsigned short vendorId;
-       unsigned int mbar0, cmd;
-       int bar, a;
-
-       pci_read_config_word(dev, PCI_VENDOR_ID, &vendorId);
-
-       if(vendorId == PCI_VENDOR_ID_PROMISE || vendorId == PCI_VENDOR_ID_CMD){
-               /* PDC 202xx card is handled differently, it is a bootable
-                * device and needs all 5 MBAR's configured
-                */
-               for(bar = 0; bar < 5; bar++){
-                       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, &mbar0);
-                       pci_write_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, ~0);
-                       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, &mbar0);
-#ifdef DEBUG
-                       printf("  ATA_bar[%d] = %dbytes\n", bar,
-                              ~(mbar0 & PCI_BASE_ADDRESS_MEM_MASK) + 1);
-#endif
-               }
-
-               /* Program all BAR's */
-               pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, PROMISE_MBAR0);
-               pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, PROMISE_MBAR1);
-               pci_write_config_dword(dev, PCI_BASE_ADDRESS_2, PROMISE_MBAR2);
-               pci_write_config_dword(dev, PCI_BASE_ADDRESS_3, PROMISE_MBAR3);
-               pci_write_config_dword(dev, PCI_BASE_ADDRESS_4, PROMISE_MBAR4);
-               pci_write_config_dword(dev, PCI_BASE_ADDRESS_5, PROMISE_MBAR5);
-
-               for(bar = 0; bar < 5; bar++){
-                       pci_read_config_dword(dev, PCI_BASE_ADDRESS_0+bar*4, &mbar0);
-#ifdef DEBUG
-                       printf("  ATA_bar[%d]@0x%x\n", bar, mbar0);
-#endif
-               }
-
-               /* Enable ROM Expansion base */
-               pci_write_config_dword(dev, PCI_ROM_ADDRESS, PROMISE_MBAR5|1);
-
-               /* Io enable, Memory enable, master enable */
-               pci_read_config_dword(dev, PCI_COMMAND, &cmd);
-               cmd &= ~0xffff0000;
-               cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY | PCI_COMMAND_IO;
-               pci_write_config_dword(dev, PCI_COMMAND, cmd);
-
-               /* Breath some life into the controller */
-               for( a = 0; a < 4; a++)
-                       pdc202xx_tune_chipset(dev, a, XFER_PIO_0);
-       }
-}
-
-static struct pci_config_table pci_sandpoint_config_table[] = {
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 0x0e, 0x00,
-         pci_mousse_setup_pdc202xx },
-#ifndef CONFIG_PCI_PNP
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 0x0d, 0x00,
-         pci_cfgfunc_config_device, {PCI_ENET_IOADDR,
-                                     PCI_ENET_MEMADDR,
-                                     PCI_COMMAND_MEMORY |
-                                     PCI_COMMAND_MASTER}},
-       { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-         pci_cfgfunc_config_device, {PCI_SLOT_IOADDR,
-                                     PCI_SLOT_MEMADDR,
-                                     PCI_COMMAND_MEMORY |
-                                     PCI_COMMAND_MASTER}},
-#endif
-       { }
-};
-
-struct pci_controller hose = {
-       config_table: pci_sandpoint_config_table,
-       fixup_irq: pci_mousse_fixup_irq,
-};
-
-void pci_init_board(void)
-{
-       pci_mpc824x_init(&hose);
-}
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
deleted file mode 100644 (file)
index f49161c..0000000
+++ /dev/null
@@ -1,77 +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: */
-  .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: */
-  . = (. + 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(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/mousse/u-boot.lds.ram b/board/mousse/u-boot.lds.ram
deleted file mode 100644 (file)
index c028131..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2000
- * Rob Taylor, Flying Pig Systems Ltd. robt@flyingpig.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-
-MEMORY {
-       ram  (!rx) : org = 0x00000000 , LENGTH = 8M
-       code (!rx) : org = 0x00002000 , LENGTH = (4M - 0x2000)
-       rom   (rx) : org = 0xfff00000 , LENGTH = 512K
-}
-
-SECTIONS
-{
-  _f_init = .;
-  PROVIDE(_f_init = .);
-  _f_init_rom = .;
-  PROVIDE(_f_init_rom = .);
-
-  .init : {
-      arch/powerpc/cpu/mpc824x/start.o (.text)
-      *(.init)
-  } > ram
-  _init_size = SIZEOF(.init);
-  PROVIDE(_init_size = SIZEOF(.init));
-
-  ENTRY(_start)
-
-/*  _ftext = .;
-  _ftext_rom = .;
-  _text_size = SIZEOF(.text);
- */
-  .text : {
-      *(.text)
-      *(.got1)
-      } > ram
-  .rodata : { *(.rodata) } > ram
-  .dtors : { *(.dtors) } > ram
-  .data : { *(.data) } > ram
-  .sdata : { *(.sdata) } > ram
-  .sdata2 : { *(.sdata2)
-      *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-    } > ram
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .sbss : { *(.sbss) } > ram
-  .sbss2 : { *(.sbss2) } > ram
-  .bss : { *(.bss) } > ram
-  .debug : { *(.debug) } > ram
-  .line : { *(.line) } > ram
-  .symtab : { *(.symtab) } > ram
-  .shrstrtab : { *(.shstrtab) } > ram
-  .strtab : { *(.strtab) } > ram
- /* .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  } > ram
-  */
-
-
-   __start___ex_table = .;
-    __ex_table : { *(__ex_table) } > ram
-    __stop___ex_table = .;
-
-
-  .ppcenv      :
-  {
-    common/env_embedded.o (.ppcenv)
-  } > ram
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/mousse/u-boot.lds.rom b/board/mousse/u-boot.lds.rom
deleted file mode 100644 (file)
index f162ae3..0000000
+++ /dev/null
@@ -1,112 +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      :
-  {
-    arch/powerpc/cpu/mpc824x/start.o   (.text)
-        common/board.o (.text)
-    arch/powerpc/lib/ppcstring.o       (.text)
-    lib/vsprintf.o     (.text)
-    lib/crc32.o                (.text)
-    lib/zlib.o         (.text)
-
-               . = env_offset;
-    common/env_embedded.o (.text)
-
-               *(.text)
-
-    *(.got1)
-    . = ALIGN(16);
-    *(.rodata)
-    *(.rodata1)
-    *(.rodata.str1.4)
-    *(.eh_frame)
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x0FF) & 0xFFFFFF00;
-  _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 = .);
-}
diff --git a/board/nx823/Makefile b/board/nx823/Makefile
deleted file mode 100644 (file)
index a22be5c..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  = nx823.o flash.o
diff --git a/board/nx823/flash.c b/board/nx823/flash.c
deleted file mode 100644 (file)
index fbe17dd..0000000
+++ /dev/null
@@ -1,449 +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+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*-----------------------------------------------------------------------
- * 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]);
-
-       /* 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]);
-
-       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;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x5555] = (FPW)0x00AA00AA;
-       addr[0x2AAA] = (FPW)0x00550055;
-       addr[0x5555] = (FPW)0x00900090;
-
-       value = addr[0];
-
-   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            */
-
-   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 count, 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
-
-       /* save sernum if needed */
-       if (addr >= CONFIG_SYS_FLASH_SN_SECTOR && addr < CONFIG_SYS_FLASH_SN_BASE)
-       {
-               u_long dest = CONFIG_SYS_FLASH_SN_BASE;
-               u_short *sn = (u_short *)gd->bd->bi_sernum;
-
-               printf("(saving sernum)");
-               for (i=0; i<4; i++)
-               {
-                       if ((rc = write_data(info, dest, sn[i])) != 0) {
-                               return (rc);
-                       }
-                       dest += port_width;
-               }
-       }
-
-       /*
-        * 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
-        */
-       count = 0;
-       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 (count++ > 0x800)
-               {
-                       putc('.');
-                       count = 0;
-               }
-       }
-
-       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/nx823/nx823.c b/board/nx823/nx823.c
deleted file mode 100644 (file)
index d49fa8c..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001-2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <malloc.h>
-#include <mpc8xx.h>
-#include <net.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static long int dram_size (long int, long int *, long int);
-
-#define        _NOT_USED_      0xFFFFFFFF
-
-const uint sdram_table[] = {
-#if (MPC8XX_SPEED <= 50000000L)
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x0F07EC04, 0x01BBD804, 0x1FF7F440, 0xFFFFFC07,
-       0xFFFFFFFF,
-
-       /*
-        * 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.
-        *
-        */
-       0x1FE7F434, 0xEFABE834, 0x1FA7D435,
-
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x0F07EC04, 0x10EFDC04, 0xF0AFFC00, 0xF0AFFC00,
-       0xF1AFFC00, 0xFFAFFC40, 0xFFAFFC07, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x0E07E804, 0x01BBD000, 0x1FF7F447, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x0E07E800, 0x10EFD400, 0xF0AFFC00, 0xF0AFFC00,
-       0xF1AFFC47, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1FF7DC84, 0xFFFFFC04, 0xFFFFFC84, 0xFFFFFC07,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-       0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-
-       /*
-        * Exception. (Offset 3c in UPMA RAM)
-        */
-       0x7FFFFC07, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF
-#else
-
-       /*
-        * Single Read. (Offset 0 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAFEC04, 0x11AFDC04, 0xEFBBF800,
-       0x1FF7F447,
-
-       /*
-        * 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.
-        *
-        */
-       0x1FF7F434, 0xEFEBE834, 0x1FB7D435,
-
-       /*
-        * Burst Read. (Offset 8 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAFEC04, 0x10AFDC04, 0xF0AFFC00,
-       0xF0AFFC00, 0xF1AFFC00, 0xEFBBF800, 0x1FF7F447,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Single Write. (Offset 18 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAFE800, 0x01BBD004, 0x1FF7F447,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Burst Write. (Offset 20 in UPMA RAM)
-        */
-       0x1F07FC04, 0xEEAFE800, 0x10AFD400, 0xF0AFFC00,
-       0xF0AFFC00, 0xE1BBF804, 0x1FF7F447, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-       _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
-
-       /*
-        * Refresh  (Offset 30 in UPMA RAM)
-        */
-       0x1FF7DC84, 0xFFFFFC04, 0xFFFFFC04, 0xFFFFFC04,
-       0xFFFFFC84, 0xFFFFFC07,
-       _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_,
-#endif
-};
-
-/* ------------------------------------------------------------------------- */
-
-
-/*
- * Check Board Identity:
- *
- */
-
-int checkboard (void)
-{
-       printf ("Board: Nexus NX823");
-       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, size8, size9;
-
-       upmconfig (UPMA, (uint *) sdram_table,
-                  sizeof (sdram_table) / sizeof (uint));
-
-       /*
-        * Up to 2 Banks of 64Mbit x 2 devices
-        * Initial builds only have 1
-        */
-       memctl->memc_mptpr = CONFIG_SYS_MPTPR_1BK_4K;
-       memctl->memc_mar = 0x00000088;
-
-       /*
-        * Map controller SDRAM bank 0
-        */
-       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);
-
-       /*
-        * Map controller SDRAM bank 1
-        */
-       memctl->memc_or2 = CONFIG_SYS_OR2_PRELIM;
-       memctl->memc_br2 = CONFIG_SYS_BR2_PRELIM;
-
-       /*
-        * 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_mcr = 0x80004105;  /* SDRAM bank 1 */
-       udelay (1);
-       memctl->memc_mcr = 0x80004230;  /* SDRAM bank 1 - execute twice */
-       udelay (1);
-
-       memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */
-       udelay (1000);
-
-       /*
-        * 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;
-
-
-       /*
-        * Check Bank 0 Memory Size for re-configuration
-        *
-        * try 8 column mode
-        */
-       size8 = dram_size (CONFIG_SYS_MAMR_8COL, (long *) SDRAM_BASE1_PRELIM,
-                          SDRAM_MAX_SIZE);
-
-       udelay (1000);
-
-       /*
-        * try 9 column mode
-        */
-       size9 = dram_size (CONFIG_SYS_MAMR_9COL, (long *) 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);  */
-       }
-
-       /*
-        * Check Bank 1 Memory Size
-        * use current column settings
-        * [9 column SDRAM may also be used in 8 column mode,
-        *  but then only half the real size will be used.]
-        */
-       size_b1 = dram_size (memctl->memc_mamr, (long *) SDRAM_BASE2_PRELIM,
-                            SDRAM_MAX_SIZE);
-/*     debug ("SDRAM Bank 1: %ld MB\n", size8 >> 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) && (size_b1 < 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
-        */
-       if (size_b1 > size_b0) {        /* SDRAM Bank 1 is bigger - map first   */
-
-               memctl->memc_or2 =
-                       ((-size_b1) & 0xFFFF0000) | CONFIG_SYS_OR_TIMING_SDRAM;
-               memctl->memc_br2 =
-                       (CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA | BR_V;
-
-               if (size_b0 > 0) {
-                       /*
-                        * Position Bank 0 immediately above Bank 1
-                        */
-                       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)
-                               + size_b1;
-               } else {
-                       unsigned long reg;
-
-                       /*
-                        * No bank 0
-                        *
-                        * invalidate bank
-                        */
-                       memctl->memc_br1 = 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;
-               }
-
-       } else {                /* SDRAM Bank 0 is bigger - map 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;
-
-               if (size_b1 > 0) {
-                       /*
-                        * Position Bank 1 immediately above Bank 0
-                        */
-                       memctl->memc_or2 =
-                               ((-size_b1) & 0xFFFF0000) |
-                               CONFIG_SYS_OR_TIMING_SDRAM;
-                       memctl->memc_br2 =
-                               ((CONFIG_SYS_SDRAM_BASE & BR_BA_MSK) | BR_MS_UPMA |
-                                BR_V)
-                               + size_b0;
-               } else {
-                       unsigned long reg;
-
-                       /*
-                        * No bank 1
-                        *
-                        * invalidate bank
-                        */
-                       memctl->memc_br2 = 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_b0 + size_b1);
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * 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));
-}
-
-int misc_init_r (void)
-{
-       int i;
-       char tmp[50];
-       uchar ethaddr[6];
-       bd_t *bd = gd->bd;
-       ulong *my_sernum = (unsigned long *)&bd->bi_sernum;
-
-       /* load unique serial number */
-       for (i = 0; i < 8; ++i)
-               bd->bi_sernum[i] = *(u_char *) (CONFIG_SYS_FLASH_SN_BASE + i);
-
-       /* save env variables according to sernum */
-       sprintf (tmp, "%08lx%08lx", my_sernum[0], my_sernum[1]);
-       setenv ("serial#", tmp);
-
-       if (!eth_getenv_enetaddr("ethaddr", ethaddr)) {
-               ethaddr[0] = 0x10;
-               ethaddr[1] = 0x20;
-               ethaddr[2] = 0x30;
-               ethaddr[3] = bd->bi_sernum[1] << 4 | bd->bi_sernum[2];
-               ethaddr[4] = bd->bi_sernum[5];
-               ethaddr[5] = bd->bi_sernum[6];
-       }
-
-       return 0;
-}
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
deleted file mode 100644 (file)
index 7ae91ff..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * (C) Copyright 2001-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/nx823/u-boot.lds.debug b/board/nx823/u-boot.lds.debug
deleted file mode 100644 (file)
index b0091db..0000000
+++ /dev/null
@@ -1,121 +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)
-
-    . = 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/ppmc8260/strataflash.c b/board/ppmc8260/strataflash.c
deleted file mode 100644 (file)
index ea3c42e..0000000
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8260.h>
-#include <asm/processor.h>
-
-#undef  DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for U-Boot.
- * 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);
-               }
-       }
-
-       /* 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+monitor_flash_len-1; i++)
-               (void)flash_real_protect(&flash_info[0], i, 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) {
-               if ((i % 5) == 0)
-                       printf ("\n");
-               printf (" %08lX%5s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : " "
-                       );
-       }
-       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)){
-               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 ctladdr;
-       cfiptr_t cptr;
-       int flag;
-
-       ctladdr.cp = flash_make_addr(info, 0, 0);
-       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;
-                       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 */
diff --git a/board/prodrive/common/flash.c b/board/prodrive/common/flash.c
deleted file mode 100644 (file)
index 9954051..0000000
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * Functions
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data);
-
-void flash_print_info(flash_info_t *info)
-{
-       int i;
-       int k;
-       int size;
-       int erased;
-       volatile unsigned long *flash;
-
-       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 ("ST ");                 break;
-       case FLASH_MAN_EXCEL:   printf ("Excel Semiconductor "); 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_AM320T:      printf ("AM29LV320T (32 M, top sector)\n");
-               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 M, bottom sector)\n");
-               break;
-       case FLASH_AMDL322T:    printf ("AM29DL322T (32 M, top sector)\n");
-               break;
-       case FLASH_AMDL322B:    printf ("AM29DL322B (32 M, bottom sector)\n");
-               break;
-       case FLASH_AMDL323T:    printf ("AM29DL323T (32 M, top sector)\n");
-               break;
-       case FLASH_AMDL323B:    printf ("AM29DL323B (32 M, bottom sector)\n");
-               break;
-       case FLASH_SST020:      printf ("SST39LF/VF020 (2 Mbit, uniform sector size)\n");
-               break;
-       case FLASH_SST040:      printf ("SST39LF/VF040 (4 Mbit, uniform sector size)\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) {
-#ifdef CONFIG_SYS_FLASH_EMPTY_INFO
-               /*
-                * 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;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size(vu_long *addr, flash_info_t *info)
-{
-       short i;
-       short n;
-       CONFIG_SYS_FLASH_WORD_SIZE value;
-       ulong base = (ulong)addr;
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-       addr2[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-       addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00900090;
-
-       value = addr2[CONFIG_SYS_FLASH_READ0];
-
-       switch (value) {
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)FUJ_MANUFACT:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)SST_MANUFACT:
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)STM_MANUFACT:
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)EXCEL_MANUFACT:
-               info->flash_id = FLASH_MAN_EXCEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr2[CONFIG_SYS_FLASH_READ1];          /* device ID            */
-
-       switch (value) {
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV400T:
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                          /* => 0.5 MB            */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV400B:
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                          /* => 0.5 MB            */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV800T:
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV800B:
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB              */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV160T:
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV160B:
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB              */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV320T:
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 71;
-               info->size = 0x00400000;  break;        /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV320B:
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 71;
-               info->size = 0x00400000;  break;        /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL322T:
-               info->flash_id += FLASH_AMDL322T;
-               info->sector_count = 71;
-               info->size = 0x00400000;  break;        /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL322B:
-               info->flash_id += FLASH_AMDL322B;
-               info->sector_count = 71;
-               info->size = 0x00400000;  break;        /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL323T:
-               info->flash_id += FLASH_AMDL323T;
-               info->sector_count = 71;
-               info->size = 0x00400000;  break;        /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL323B:
-               info->flash_id += FLASH_AMDL323B;
-               info->sector_count = 71;
-               info->size = 0x00400000;  break;        /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)SST_ID_xF020:
-               info->flash_id += FLASH_SST020;
-               info->sector_count = 64;
-               info->size = 0x00040000;
-               break;                          /* => 256 kB            */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)SST_ID_xF040:
-               info->flash_id += FLASH_SST040;
-               info->sector_count = 128;
-               info->size = 0x00080000;
-               break;                          /* => 512 kB            */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table */
-       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
-               for (i = 0; i < info->sector_count; i++)
-                       info->start[i] = base + (i * 0x00001000);
-       } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
-               /* set sector offsets for bottom boot block type        */
-               for (i=0; i<8; ++i) {           /*  8 x 8k boot sectors */
-                       info->start[i] = base;
-                       base += 8 << 10;
-               }
-               while (i < info->sector_count) {        /* 64k regular sectors  */
-                       info->start[i] = base;
-                       base += 64 << 10;
-                       ++i;
-               }
-       } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
-               /* set sector offsets for top boot block type           */
-               base += info->size;
-               i = info->sector_count;
-               for (n=0; n<8; ++n) {           /*  8 x 8k boot sectors */
-                       base -= 8 << 10;
-                       --i;
-                       info->start[i] = base;
-               }
-               while (i > 0) {                 /* 64k regular sectors  */
-                       base -= 64 << 10;
-                       --i;
-                       info->start[i] = base;
-               }
-       } 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 CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[i]);
-               if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_AMD)
-                       info->protect[i] = 0;
-               else
-                       info->protect[i] = addr2[CONFIG_SYS_FLASH_READ2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)info->start[0];
-               *addr2 = (CONFIG_SYS_FLASH_WORD_SIZE)0x00F000F0;        /* reset bank */
-       }
-
-       return (info->size);
-}
-
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[0]);
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr2;
-       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) {
-               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();
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[sect]);
-                       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
-                               addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                               addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                               addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080;
-                               addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                               addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                               addr2[0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00300030;  /* sector erase */
-
-                               /* re-enable interrupts if necessary */
-                               if (flag) {
-                                       enable_interrupts();
-                                       flag = 0;
-                               }
-
-                               /* data polling for D7 */
-                               start = get_timer (0);
-                               while ((addr2[0] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) !=
-                                      (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) {
-                                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                                               return (1);
-                               }
-                       } else {
-                               if (sect == s_first) {
-                                       addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                                       addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                                       addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080;
-                                       addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                                       addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                               }
-                               addr2[0] = (CONFIG_SYS_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 = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[l_sect]);
-       while ((addr[0] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) != (CONFIG_SYS_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 */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (CONFIG_SYS_FLASH_WORD_SIZE *)info->start[0];
-       addr[0] = (CONFIG_SYS_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 CONFIG_SYS_FLASH_WORD_SIZE *addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[0]);
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *dest2 = (CONFIG_SYS_FLASH_WORD_SIZE *)dest;
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *data2 = (CONFIG_SYS_FLASH_WORD_SIZE *)&data;
-       ulong start;
-       int flag;
-       int i;
-
-       /* 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();
-
-       for (i=0; i<4/sizeof(CONFIG_SYS_FLASH_WORD_SIZE); i++) {
-               addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-               addr2[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-               addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00A000A0;
-
-               dest2[i] = data2[i];
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               /* data polling for D7 */
-               start = get_timer (0);
-               while ((dest2[i] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) !=
-                      (data2[i] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080)) {
-                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                               return (1);
-               }
-       }
-
-       return (0);
-}
diff --git a/board/prodrive/common/fpga.c b/board/prodrive/common/fpga.c
deleted file mode 100644 (file)
index 9dce131..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2001-2004
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- * 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>
-
-/* ------------------------------------------------------------------------- */
-
-#ifdef FPGA_DEBUG
-#define DBG(x...) printf(x)
-#else
-#define DBG(x...)
-#endif /* DEBUG */
-
-#define FPGA_PRG               CONFIG_SYS_FPGA_PRG /* FPGA program pin (cpu output)*/
-#define FPGA_CLK               CONFIG_SYS_FPGA_CLK /* FPGA clk pin (cpu output)    */
-#define FPGA_DATA              CONFIG_SYS_FPGA_DATA /* FPGA data pin (cpu output)  */
-#define FPGA_DONE              CONFIG_SYS_FPGA_DONE /* FPGA done pin (cpu input)   */
-#define FPGA_INIT              CONFIG_SYS_FPGA_INIT /* FPGA init pin (cpu input)   */
-
-#define ERROR_FPGA_PRG_INIT_LOW  -1        /* Timeout after PRG* asserted   */
-#define ERROR_FPGA_PRG_INIT_HIGH -2        /* Timeout after PRG* deasserted */
-#define ERROR_FPGA_PRG_DONE      -3        /* Timeout after programming     */
-
-#ifndef OLD_VAL
-# define OLD_VAL               0
-#endif
-
-#if 0 /* test-only */
-#define FPGA_WRITE_1 { \
-               SET_FPGA(OLD_VAL | FPGA_PRG | 0        | FPGA_DATA);  /* set clock to 0 */ \
-               SET_FPGA(OLD_VAL | FPGA_PRG | 0        | FPGA_DATA);  /* set data to 1  */      \
-               SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);  /* set clock to 1 */      \
-               SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1  */
-
-#define FPGA_WRITE_0 { \
-               SET_FPGA(OLD_VAL | FPGA_PRG | 0        | FPGA_DATA);  /* set clock to 0 */      \
-               SET_FPGA(OLD_VAL | FPGA_PRG | 0        | 0        );  /* set data to 0  */      \
-               SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | 0        );  /* set clock to 1 */      \
-               SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1  */
-#else
-#define FPGA_WRITE_1 { \
-               SET_FPGA(OLD_VAL | FPGA_PRG | 0        | FPGA_DATA);  /* set data to 1  */      \
-               SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | FPGA_DATA);} /* set data to 1  */
-
-#define FPGA_WRITE_0 { \
-               SET_FPGA(OLD_VAL | FPGA_PRG | 0        | 0        );   /* set data to 0  */     \
-               SET_FPGA(OLD_VAL | FPGA_PRG | FPGA_CLK | 0        );}  /* set data to 1  */
-#endif
-
-static int fpga_boot(unsigned char *fpgadata, int size)
-{
-       int i,index,len;
-       int count;
-       int j;
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i=0; i<4; i++) {
-               len = fpgadata[index];
-               DBG("FPGA: %s\n", &(fpgadata[index+1]));
-               index += len+3;
-       }
-
-       /* search for preamble 0xFFFFFFFF */
-       while (1) {
-               if ((fpgadata[index] == 0xff) && (fpgadata[index+1] == 0xff) &&
-                   (fpgadata[index+2] == 0xff) && (fpgadata[index+3] == 0xff))
-                       break; /* preamble found */
-               else
-                       index++;
-       }
-
-       DBG("FPGA: configdata starts at position 0x%x\n",index);
-       DBG("FPGA: length of fpga-data %d\n", size-index);
-
-       /*
-        * Setup port pins for fpga programming
-        */
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);            /* set pins to high */
-
-       DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
-       DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
-       /*
-        * Init fpga by asserting and deasserting PROGRAM*
-        */
-       SET_FPGA(0 | FPGA_CLK | FPGA_DATA);             /* set prog active */
-
-       /* Wait for FPGA init line low */
-       count = 0;
-       while (FPGA_INIT_STATE) {
-               udelay(1000); /* wait 1ms */
-               /* Check for timeout - 100us max, so use 3ms */
-               if (count++ > 3) {
-                       DBG("FPGA: Booting failed!\n");
-                       return ERROR_FPGA_PRG_INIT_LOW;
-               }
-       }
-
-       DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
-       DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
-       /* deassert PROGRAM* */
-       SET_FPGA(FPGA_PRG | FPGA_CLK | FPGA_DATA);           /* set prog inactive */
-
-       /* Wait for FPGA end of init period .  */
-       count = 0;
-       while (!(FPGA_INIT_STATE)) {
-               udelay(1000); /* wait 1ms */
-               /* Check for timeout */
-               if (count++ > 3) {
-                       DBG("FPGA: Booting failed!\n");
-                       return ERROR_FPGA_PRG_INIT_HIGH;
-               }
-       }
-
-       DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
-       DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
-       DBG("write configuration data into fpga\n");
-       /* write configuration-data into fpga... */
-
-       /*
-        * Load uncompressed image into fpga
-        */
-       for (i=index; i<size; i++) {
-               for (j=0; j<8; j++) {
-                       if ((fpgadata[i] & 0x80) == 0x80) {
-                               FPGA_WRITE_1;
-                       } else {
-                               FPGA_WRITE_0;
-                       }
-                       fpgadata[i] <<= 1;
-               }
-       }
-
-       DBG("%s, ",(FPGA_DONE_STATE == 0) ? "NOT DONE" : "DONE" );
-       DBG("%s\n",(FPGA_INIT_STATE == 0) ? "NOT INIT" : "INIT" );
-
-       /*
-        * Check if fpga's DONE signal - correctly booted ?
-        */
-
-       /* Wait for FPGA end of programming period .  */
-       count = 0;
-       while (!(FPGA_DONE_STATE)) {
-               udelay(1000); /* wait 1ms */
-               /* Check for timeout */
-               if (count++ > 3) {
-                       DBG("FPGA: Booting failed!\n");
-                       return ERROR_FPGA_PRG_DONE;
-               }
-       }
-
-       DBG("FPGA: Booting successful!\n");
-       return 0;
-}
diff --git a/board/rpxsuper/Makefile b/board/rpxsuper/Makefile
deleted file mode 100644 (file)
index 239b419..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  := rpxsuper.o flash.o mii_phy.o
diff --git a/board/rpxsuper/flash.c b/board/rpxsuper/flash.c
deleted file mode 100644 (file)
index 24bcd7c..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AMD 29F080B devices
- * Added support for 64bit and AMD 29DL323B
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-#include <asm/io.h>
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-#define RD_SWP32(x) in_le32((volatile u32*)x)
-
-/*-----------------------------------------------------------------------
- * 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)
-{
-       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;
-}
-
-/*-----------------------------------------------------------------------
- */
-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 (AMD_MANUFACT & FLASH_VENDMASK):
-       printf ("AMD ");
-       break;
-    case (FUJ_MANUFACT & FLASH_VENDMASK):
-       printf ("FUJITSU ");
-       break;
-    case (SST_MANUFACT & FLASH_VENDMASK):
-       printf ("SST ");
-       break;
-    default:
-       printf ("Unknown Vendor ");
-       break;
-    }
-
-    switch (info->flash_id & FLASH_TYPEMASK) {
-    case (AMD_ID_DL323B & FLASH_TYPEMASK):
-       printf("AM29DL323B (32 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!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-    short i;
-    vu_long vendor[2], devid[2];
-    ulong base = (ulong)addr;
-
-    /* Reset and Write auto select command: read Manufacturer ID */
-    addr[0] = 0xf0f0f0f0;
-    addr[2 * 0x0555] = 0xAAAAAAAA;
-    addr[2 * 0x02AA] = 0x55555555;
-    addr[2 * 0x0555] = 0x90909090;
-    addr[1] = 0xf0f0f0f0;
-    addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
-    addr[2 * 0x02AA + 1] = 0x55555555;
-    addr[2 * 0x0555 + 1] = 0x90909090;
-    udelay (1000);
-
-    vendor[0] = RD_SWP32(&addr[0]);
-    vendor[1] = RD_SWP32(&addr[1]);
-    if (vendor[0] != vendor[1] || vendor[0] != AMD_MANUFACT) {
-       info->size = 0;
-       goto out;
-    }
-
-    devid[0] = RD_SWP32(&addr[2]);
-    devid[1] = RD_SWP32(&addr[3]);
-
-    if (devid[0] == AMD_ID_DL323B) {
-       /*
-       * we have 2 Banks
-       * Bank 1 (23 Sectors): 0-7=8kbyte, 8-22=64kbyte
-       * Bank 2 (48 Sectors): 23-70=64kbyte
-       */
-       info->flash_id     = (AMD_MANUFACT & FLASH_VENDMASK) |
-                            (AMD_ID_DL323B & FLASH_TYPEMASK);
-       info->sector_count = 71;
-       info->size         = 4 * (8 * 8 + 63 * 64) * 1024;
-    }
-    else {
-       info->size = 0;
-       goto out;
-    }
-
-    /* set up sector start address table */
-    for (i = 0; i < 8; i++) {
-       info->start[i] = base + (i * 0x8000);
-    }
-    for (i = 8; i < info->sector_count; i++) {
-       info->start[i] = base + (i * 0x40000) + 8 * 0x8000 - 8 * 0x40000;
-    }
-
-    /* check for protected sectors */
-    for (i = 0; i < info->sector_count; i++) {
-       /* read sector protection at sector address */
-       addr = (volatile unsigned long *)(info->start[i]);
-       addr[2 * 0x0555] = 0xAAAAAAAA;
-       addr[2 * 0x02AA] = 0x55555555;
-       addr[2 * 0x0555] = 0x90909090;
-       addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
-       addr[2 * 0x02AA + 1] = 0x55555555;
-       addr[2 * 0x0555 + 1] = 0x90909090;
-       udelay (1000);
-       base = RD_SWP32(&addr[4]);
-       base |= RD_SWP32(&addr[5]);
-       info->protect[i] = base & 0x00010001 ? 1 : 0;
-    }
-    addr = (vu_long*)info->start[0];
-
-out:
-    /* reset command */
-    addr[0] = 0xf0f0f0f0;
-    addr[1] = 0xf0f0f0f0;
-
-    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) {
-           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[2 * 0x0555] = 0xAAAAAAAA;
-    addr[2 * 0x02AA] = 0x55555555;
-    addr[2 * 0x0555] = 0x80808080;
-    addr[2 * 0x0555] = 0xAAAAAAAA;
-    addr[2 * 0x02AA] = 0x55555555;
-    addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
-    addr[2 * 0x02AA + 1] = 0x55555555;
-    addr[2 * 0x0555 + 1] = 0x80808080;
-    addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
-    addr[2 * 0x02AA + 1] = 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;
-           addr[1] = 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 ||
-               (addr[1] & 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 */
-    addr[1] = 0xF0F0F0F0;      /* 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)
-{
-    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();
-
-    if ((dest & 0x00000004) == 0) {
-       addr[2 * 0x0555] = 0xAAAAAAAA;
-       addr[2 * 0x02AA] = 0x55555555;
-       addr[2 * 0x0555] = 0xA0A0A0A0;
-    }
-    else {
-       addr[2 * 0x0555 + 1] = 0xAAAAAAAA;
-       addr[2 * 0x02AA + 1] = 0x55555555;
-       addr[2 * 0x0555 + 1] = 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);
-}
-
-/*-----------------------------------------------------------------------
- */
diff --git a/board/rpxsuper/mii_phy.c b/board/rpxsuper/mii_phy.c
deleted file mode 100644 (file)
index 12e23f4..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#include <common.h>
-#include <mii_phy.h>
-#include "rpxsuper.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_rpx_regs *regs = (t_rpx_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_rpx_regs *regs = (t_rpx_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/rpxsuper/readme b/board/rpxsuper/readme
deleted file mode 100644 (file)
index 21267bd..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Hi,
-
-so this is the port to the Embedded Planet RPX Super Board.
-
-ATTENTION
-This code is only tested on the AY-Version, which is an early release with some
-hardware bugs. The main problem is that this board uses the default Hard Reset
-Configuration Word and not the 4 bytes located at start of FLASH because at
-0xFE000000 is no FLASH. The FLASH consists out of 4 chips each 16bits wide. Be
-carefull, the bytes are swapped. So DQ0-7 is the high byte, DQ8-15 ist the low
-byte.
-
-The icache can only manually be enabled after reset.
-The FLASH and main SDRAM is working with icache enabled.
-The local SDRAM can only be used as data memory when icache is enabled.
-If U-Boot runs in local SDRAM, TFTP does not work.
-The functions in mii_phy.c are all working. Call mii_phy_discover() out of
-eth_init() and solve the linker error.
-I2C, RTC/NVRAM and PCMCIA are not working yet.
-
-TODO
-The 32MB local SDRAM is working but not shown in the startup messages of
-U-Boot. If you locate U-Boot or any other program to this area it won't run.
-Turning the ichache off does not solve this problem.
-
-As I won't buy another RPX Super there might be some little work to do for you
-getting this U-Boot port running on the final board.
-
-
-frank.morauf@salzbrenner.com
diff --git a/board/rpxsuper/rpxsuper.c b/board/rpxsuper/rpxsuper.c
deleted file mode 100644 (file)
index dc55870..0000000
+++ /dev/null
@@ -1,289 +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>
-#include "rpxsuper.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,   0,   0,   0   }, /* FCC1 *ATMTXEN */
-       /* PA30 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTCA   */
-       /* PA29 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTSOC  */
-       /* PA28 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 *ATMRXEN */
-       /* PA27 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRSOC */
-       /* PA26 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRCA */
-       /* PA25 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[0] */
-       /* PA24 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[1] */
-       /* PA23 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[2] */
-       /* PA22 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[3] */
-       /* PA21 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[4] */
-       /* PA20 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[5] */
-       /* PA19 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[6] */
-       /* PA18 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMTXD[7] */
-       /* PA17 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[7] */
-       /* PA16 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[6] */
-       /* PA15 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[5] */
-       /* PA14 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[4] */
-       /* PA13 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[3] */
-       /* PA12 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[2] */
-       /* PA11 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXD[1] */
-       /* PA10 */ {   1,   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,   0,   0,   0   }, /* PA7 */
-       /* PA6  */ {   1,   0,   0,   0,   0,   0   }, /* PA6 */
-       /* PA5  */ {   1,   0,   0,   0,   0,   0   }, /* PA5 */
-       /* PA4  */ {   1,   0,   0,   0,   0,   0   }, /* PA4 */
-       /* PA3  */ {   1,   0,   0,   0,   0,   0   }, /* PA3 */
-       /* PA2  */ {   1,   0,   0,   0,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* PA1 */
-       /* PA0  */ {   1,   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 */ {   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 */ {   1,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   1,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   1,   1,   1,   0,   0,   0   }, /* SCC1 EN *CLSN */
-       /* PC28 */ {   1,   0,   0,   1,   0,   0   }, /* PC28 */
-       /* PC27 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD[0] */
-       /* PC26 */ {   1,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   1,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   1,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   1,   1,   0,   1,   0,   0   }, /* ATMTFCLK */
-       /* PC22 */ {   1,   1,   0,   0,   0,   0   }, /* ATMRFCLK */
-       /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 EN RXCLK */
-       /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 EN TXCLK */
-       /* 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 */
-       /* PC15 */ {   1,   0,   0,   0,   0,   0   }, /* PC15 */
-       /* PC14 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 EN *CD */
-       /* PC13 */ {   1,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   1,   0,   0,   1,   0,   0   }, /* PC12 */
-       /* PC11 */ {   1,   0,   0,   1,   0,   0   }, /* PC11 */
-       /* PC10 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MDC */
-       /* PC9  */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MDIO */
-       /* PC8  */ {   1,   0,   0,   1,   0,   0   }, /* PC8 */
-       /* PC7  */ {   1,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   1,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   1,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   1,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   1,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   1,   0,   0,   1,   0,   1   }, /* ENET FDE */
-       /* PC1  */ {   1,   0,   0,   1,   0,   0   }, /* ENET DSQE */
-       /* PC0  */ {   1,   0,   0,   1,   0,   0   }, /* ENET LBK */
-    },
-
-    /* Port D */
-    {   /*           conf ppar psor pdir podr pdat */
-       /* PD31 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 EN RxD */
-       /* PD30 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 EN TxD */
-       /* PD29 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 EN TENA */
-       /* PD28 */ {   1,   0,   0,   0,   0,   0   }, /* PD28 */
-       /* PD27 */ {   1,   0,   0,   0,   0,   0   }, /* PD27 */
-       /* PD26 */ {   1,   0,   0,   0,   0,   0   }, /* PD26 */
-       /* PD25 */ {   1,   0,   0,   0,   0,   0   }, /* PD25 */
-       /* PD24 */ {   1,   0,   0,   0,   0,   0   }, /* PD24 */
-       /* PD23 */ {   1,   0,   0,   0,   0,   0   }, /* PD23 */
-       /* PD22 */ {   1,   0,   0,   0,   0,   0   }, /* PD22 */
-       /* PD21 */ {   1,   0,   0,   0,   0,   0   }, /* PD21 */
-       /* PD20 */ {   1,   0,   0,   0,   0,   0   }, /* PD20 */
-       /* PD19 */ {   1,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD18 */ {   1,   0,   0,   0,   0,   0   }, /* PD19 */
-       /* PD17 */ {   1,   0,   0,   0,   0,   0   }, /* FCC1 ATMRXPRTY */
-       /* PD16 */ {   1,   0,   0,   0,   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   }, /* PD13 */
-       /* PD12 */ {   1,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   1,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   1,   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  */ {   1,   0,   0,   0,   0,   0   }, /* PD7 */
-       /* PD6  */ {   1,   0,   0,   0,   0,   0   }, /* PD6 */
-       /* PD5  */ {   1,   0,   0,   0,   0,   0   }, /* PD5 */
-       /* PD4  */ {   1,   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 */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Setup CS4 to enable the Board Control/Status registers.
- * Otherwise the smcs won't work.
-*/
-int board_early_init_f (void)
-{
-    volatile t_rpx_regs *regs = (t_rpx_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 = 0x70; /* to enable terminal no SMC1 */
-    regs->bcsr2 = 0x20;        /* mut be written to enable writing FLASH */
-    return 0;
-}
-
-void
-reset_phy(void)
-{
-    volatile t_rpx_regs *regs = (t_rpx_regs*)CONFIG_SYS_REGS_BASE;
-    regs->bcsr4 = 0xC3;
-}
-
-/*
- * Check Board Identity:
- */
-
-int checkboard(void)
-{
-    volatile t_rpx_regs *regs = (t_rpx_regs*)CONFIG_SYS_REGS_BASE;
-    printf ("Board: Embedded Planet RPX Super, Revision %d\n",
-       regs->bcsr0 >> 4);
-
-    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, *ramaddr;
-    ulong psdmr, lsdmr, bcr;
-    long size = 0;
-    int i;
-
-    psdmr = CONFIG_SYS_PSDMR;
-    lsdmr = CONFIG_SYS_LSDMR;
-
-    /*
-     * 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.
-     */
-
-    size = CONFIG_SYS_SDRAM0_SIZE;
-    bcr = immap->im_siu_conf.sc_bcr;
-    immap->im_siu_conf.sc_bcr = (bcr & ~BCR_EBM);
-
-    memctl->memc_mptpr = CONFIG_SYS_MPTPR;
-
-    ramaddr = (uchar *)(CONFIG_SYS_SDRAM0_BASE);
-    memctl->memc_psrt = CONFIG_SYS_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;
-
-    immap->im_siu_conf.sc_bcr = bcr;
-
-#ifndef CONFIG_SYS_RAMBOOT
-/*    size += CONFIG_SYS_SDRAM1_SIZE; */
-    ramaddr = (uchar *)(CONFIG_SYS_SDRAM1_BASE);
-    memctl->memc_lsrt = CONFIG_SYS_LSRT;
-
-    memctl->memc_lsdmr = lsdmr | PSDMR_OP_PREA;
-    *ramaddr = c;
-
-    memctl->memc_lsdmr = lsdmr | PSDMR_OP_CBRR;
-    for (i = 0; i < 8; i++)
-       *ramaddr = c;
-
-    memctl->memc_lsdmr = lsdmr | PSDMR_OP_MRW;
-    *ramaddr = c;
-
-    memctl->memc_lsdmr = lsdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-    *ramaddr = c;
-#endif
-
-    /* return total ram size */
-    return (size * 1024 * 1024);
-}
diff --git a/board/rpxsuper/rpxsuper.h b/board/rpxsuper/rpxsuper.h
deleted file mode 100644 (file)
index af31060..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef __RPX8260_H__
-#define __RPX8260_H__
-
-typedef struct tt_rpx_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_rpx_regs;
-typedef t_rpx_regs* tp_rpx_regs;
-
-#endif
diff --git a/board/rsdproto/Makefile b/board/rsdproto/Makefile
deleted file mode 100644 (file)
index 9351e94..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  := rsdproto.o flash.o
-obj-y  += flash_asm.o
diff --git a/board/rsdproto/flash.c b/board/rsdproto/flash.c
deleted file mode 100644 (file)
index 37326d5..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Flash Routines for AM290[48]0B devices
- *
- *--------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <mpc8xx.h>
-
-/* flash hardware ids */
-#define VENDOR_AMD     0x0001
-#define AMD_29DL323C_B 0x2253
-
-/* Define this to include autoselect sequence in flash_init(). Does NOT
- * work when executing from flash itself, so this should be turned
- * on only when debugging the RAM version.
- */
-#undef WITH_AUTOSELECT
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if 1
-#define D(x)
-#else
-#define D(x) printf x
-#endif
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-static unsigned char write_ull(flash_info_t *info,
-                              unsigned long address,
-                              volatile unsigned long long data);
-
-/* from flash_asm.S */
-extern void ull_write(unsigned long long volatile *address,
-                     unsigned long long volatile *data);
-extern void ull_read(unsigned long long volatile *address,
-                    unsigned long long volatile *data);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-    int i;
-    ulong addr;
-
-#ifdef WITH_AUTOSELECT
-       {
-               unsigned long long *f_addr = (unsigned long long *)PHYS_FLASH;
-               unsigned long long f_command, vendor, device;
-               /* Perform Autoselect */
-               f_command       = 0x00AA00AA00AA00AAULL;
-               ull_write(&f_addr[0x555], &f_command);
-               f_command       = 0x0055005500550055ULL;
-               ull_write(&f_addr[0x2AA], &f_command);
-               f_command       = 0x0090009000900090ULL;
-               ull_write(&f_addr[0x555], &f_command);
-               ull_read(&f_addr[0], &vendor);
-               vendor &= 0xffff;
-               ull_read(&f_addr[1], &device);
-               device &= 0xffff;
-               f_command       = 0x00F000F000F000F0ULL;
-               ull_write(&f_addr[0x555], &f_command);
-               if (vendor != VENDOR_AMD || device != AMD_29DL323C_B)
-                 return 0;
-       }
-#endif
-
-    /* Init: no FLASHes known */
-    for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-    }
-
-       /* 1st bank: 8 x 32 KB sectors */
-       flash_info[0].flash_id = VENDOR_AMD << 16 | AMD_29DL323C_B;
-       flash_info[0].sector_count = 8;
-       flash_info[0].size = flash_info[0].sector_count * 32 * 1024;
-       addr = PHYS_FLASH;
-    for(i = 0; i < flash_info[0].sector_count; i++) {
-               flash_info[0].start[i] = addr;
-               addr += flash_info[0].size / flash_info[0].sector_count;
-       }
-       /* 1st bank: 63 x 256 KB sectors */
-       flash_info[1].flash_id = VENDOR_AMD << 16 | AMD_29DL323C_B;
-       flash_info[1].sector_count = 63;
-       flash_info[1].size = flash_info[1].sector_count * 256 * 1024;
-    for(i = 0; i < flash_info[1].sector_count; i++) {
-               flash_info[1].start[i] = addr;
-               addr += flash_info[1].size / flash_info[1].sector_count;
-       }
-
-       /*
-        * protect monitor and environment sectors
-        */
-
-#if CONFIG_SYS_MONITOR_BASE >= PHYS_FLASH
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[1]);
-#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]);
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1,
-                     &flash_info[1]);
-#endif
-
-    return flash_info[0].size + flash_info[1].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 >> 16) {
-    case VENDOR_AMD:
-               printf ("AMD ");
-               break;
-    default:
-               printf ("Unknown Vendor ");
-               break;
-    }
-
-    switch (info->flash_id & FLASH_TYPEMASK) {
-    case AMD_29DL323C_B:
-               printf ("AM29DL323CB (32 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;
-}
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-    int flag, prot, sect, l_sect;
-    ulong start;
-       unsigned long long volatile *f_addr;
-       unsigned long long volatile f_command;
-
-    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");
-    }
-
-       f_addr  = (unsigned long long *)info->start[0];
-       f_command       = 0x00AA00AA00AA00AAULL;
-       ull_write(&f_addr[0x555], &f_command);
-       f_command       = 0x0055005500550055ULL;
-       ull_write(&f_addr[0x2AA], &f_command);
-       f_command       = 0x0080008000800080ULL;
-       ull_write(&f_addr[0x555], &f_command);
-       f_command       = 0x00AA00AA00AA00AAULL;
-       ull_write(&f_addr[0x555], &f_command);
-       f_command       = 0x0055005500550055ULL;
-       ull_write(&f_addr[0x2AA], &f_command);
-
-    /* Disable interrupts which might cause a timeout here */
-    flag = disable_interrupts();
-
-    /* Start erase on unprotected sectors */
-    for (l_sect = -1, sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-
-                       f_addr  =
-                         (unsigned long long *)(info->start[sect]);
-                       f_command       = 0x0030003000300030ULL;
-                       ull_write(f_addr, &f_command);
-                       l_sect = sect;
-               }
-    }
-
-    /* re-enable interrupts if necessary */
-    if (flag)
-      enable_interrupts();
-
-       start = get_timer (0);
-       do
-       {
-               if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT)
-               {       /* write reset command, command address is unimportant */
-                       /* this command turns the flash back to read mode     */
-                       f_addr =
-                         (unsigned long long *)(info->start[l_sect]);
-                       f_command       = 0x00F000F000F000F0ULL;
-                       ull_write(f_addr, &f_command);
-                       printf (" timeout\n");
-                       return 1;
-       }
-       } while(*f_addr != 0xFFFFFFFFFFFFFFFFULL);
-
-    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)
-{
-    unsigned long cp, wp;
-       unsigned long long data;
-    int i, l, rc;
-
-    wp = (addr & ~7);  /* get lower long long 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<8 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<8; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_ull(info, wp, data)) != 0) {
-                       return rc;
-               }
-               wp += 4;
-    }
-
-    /*
-     * handle long long aligned part
-     */
-    while (cnt >= 8) {
-               data = 0;
-               for (i=0; i<8; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_ull(info, wp, data)) != 0) {
-                       return rc;
-               }
-               wp  += 8;
-               cnt -= 8;
-    }
-
-    if (cnt == 0) {
-               return ERR_OK;
-    }
-
-    /*
-     * handle unaligned tail bytes
-     */
-    data = 0;
-    for (i=0, cp=wp; i<8 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-    }
-    for (; i<8; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-    }
-
-    return write_ull(info, wp, data);
-}
-
-/*---------------------------------------------------------------------------
-*
-* FUNCTION NAME:  write_ull
-*
-* DESCRIPTION:   writes 8 bytes to flash
-*
-* EXTERNAL EFFECT: nothing
-*
-* PARAMETERS:   32 bit long pointer to address, 64 bit long pointer to data
-*
-* RETURNS:     0 if OK, 1 if timeout, 4 if parameter error
-*--------------------------------------------------------------------------*/
-
-static unsigned char write_ull(flash_info_t *info,
-                                                          unsigned long address,
-                                                          volatile unsigned long long data)
-{
-       static unsigned long long f_command;
-       static unsigned long long *f_addr;
-       ulong start;
-
-       /* address muss be 8-aligned! */
-       if (address & 0x7)
-         return ERR_ALIGN;
-
-       f_addr  = (unsigned long long *)info->start[0];
-       f_command       = 0x00AA00AA00AA00AAULL;
-       ull_write(&f_addr[0x555], &f_command);
-       f_command       = 0x0055005500550055ULL;
-       ull_write(&f_addr[0x2AA], &f_command);
-       f_command       = 0x00A000A000A000A0ULL;
-       ull_write(&f_addr[0x555], &f_command);
-
-       f_addr  = (unsigned long long *)address;
-       f_command       = data;
-       ull_write(f_addr, &f_command);
-
-       start = get_timer (0);
-       do
-       {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-               {
-                       /* write reset command, command address is unimportant */
-                       /* this command turns the flash back to read mode     */
-                       f_addr  = (unsigned long long *)info->start[0];
-                       f_command       = 0x00F000F000F000F0ULL;
-                       ull_write(f_addr, &f_command);
-                       return ERR_TIMOUT;
-               }
-       } while(*((unsigned long long *)address) != data);
-
-       return 0;
-}
diff --git a/board/rsdproto/flash_asm.S b/board/rsdproto/flash_asm.S
deleted file mode 100644 (file)
index 557cac0..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * -*- mode:c -*-
- *
- * (C) Copyright 2000
- * Marius Groeger <mgroeger@sysgo.de>
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- *
- * void ull_write(unsigned long long volatile *address,
- *                unsigned long long volatile *data)
- * r3 = address
- * r4 = data
- *
- * void ull_read(unsigned long long volatile *address,
- *                unsigned long long volatile *data)
- * r3 = address
- * r4 = data
- *
- * Uses the floating point unit to read and write 64 bit wide
- * data (unsigned long long) on the 60x bus. This is necessary
- * because all 4 flash chips use the /WE line from byte lane 0
- *
- * IMPORTANT: data should always be 8-aligned, otherwise an exception will
- * occur.
- */
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-       .globl  ull_write
-ull_write:
-       lfd             0,0(r4)
-       stfd    0,0(r3)
-       blr
-
-       .globl  ull_read
-ull_read:
-       lfd             0, 0(r3)
-       stfd    0, 0(r4)
-       blr
diff --git a/board/rsdproto/rsdproto.c b/board/rsdproto/rsdproto.c
deleted file mode 100644 (file)
index 1e85c27..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ioports.h>
-#include <mpc8260.h>
-#include <i2c.h>
-#include <bcd.h>
-
-/* define to initialise the SDRAM on the local bus */
-#undef INIT_LOCAL_BUS_SDRAM
-
-/* I2C Bus adresses for PPC & Protocol board */
-#define PPC8260_I2C_ADR                0x30    /*(0)011.0000 */
-#define LM84_PPC_I2C_ADR       0x2A    /*(0)010.1010 */
-#define LM84_SHARC_I2C_ADR     0x29    /*(0)010.1001 */
-#define VIRTEX_I2C_ADR         0x25    /*(0)010.0101 */
-#define X24645_PPC_I2C_ADR     0x00    /*(0)00X.XXXX  -> be careful ! No other i2c-chip should have an adress beginning with (0)00 !!! */
-#define RS5C372_PPC_I2C_ADR    0x32    /*(0)011.0010  -> this adress is programmed by the manufacturer and cannot be changed !!! */
-
-/*
- * 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  */ {   0,   0,   0,   0,   0,   0   },
-       /* PA8  */ {   0,   0,   0,   0,   0,   0   },
-       /* 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 */ {   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   },
-       /* 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 */ {   1,   1,   0,   0,   0,   0   },
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* ETHRXCLK: CLK14 */
-       /* PC17 */ {   0,   0,   0,   0,   0,   0   }, /* ETHTXCLK: CLK15 */
-       /* PC16 */ {   0,   0,   0,   0,   0,   0   },
-       /* PC15 */ {   0,   0,   0,   0,   0,   0   },
-       /* PC14 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 UART CD/ */
-       /* PC13 */ {   0,   0,   0,   0,   0,   0   },
-       /* PC12 */ {   0,   0,   0,   0,   0,   0   },
-       /* PC11 */ {   0,   0,   0,   0,   0,   0   },
-       /* PC10 */ {   1,   0,   0,   1,   0,   0   }, /* ETHMDC: GP */
-       /* PC9  */ {   1,   0,   0,   1,   0,   0   }, /* ETHMDIO: GP */
-       /* 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 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 UART RxD */
-       /* PD30 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 UART TxD */
-       /* 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,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   1,   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  */ {   0,   0,   0,   0,   0,   0   },
-       /* PD8  */ {   0,   0,   0,   0,   0,   0   },
-       /* 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 */
-    }
-};
-
-/* ------------------------------------------------------------------------- */
-
-struct tm {
-       unsigned int tm_sec;
-       unsigned int tm_min;
-       unsigned int tm_hour;
-       unsigned int tm_wday;
-       unsigned int tm_mday;
-       unsigned int tm_mon;
-       unsigned int tm_year;
-};
-
-void read_RS5C372_time (struct tm *timedate)
-{
-       unsigned char buffer[8];
-
-       if (! i2c_read (RS5C372_PPC_I2C_ADR, 0, 1, buffer, sizeof (buffer))) {
-               timedate->tm_sec = bcd2bin (buffer[0]);
-               timedate->tm_min = bcd2bin (buffer[1]);
-               timedate->tm_hour = bcd2bin (buffer[2]);
-               timedate->tm_wday = bcd2bin (buffer[3]);
-               timedate->tm_mday = bcd2bin (buffer[4]);
-               timedate->tm_mon = bcd2bin (buffer[5]);
-               timedate->tm_year = bcd2bin (buffer[6]) + 2000;
-       } else {
-               /*printf("i2c error %02x\n", rc); */
-               memset (timedate, 0, sizeof (struct tm));
-       }
-}
-
-/* ------------------------------------------------------------------------- */
-
-int read_LM84_temp (int address)
-{
-       unsigned char buffer[8];
-       /*int rc;*/
-
-       if (! i2c_read (address, 0, 1, buffer, 1)) {
-               return (int) buffer[0];
-       } else {
-               /*printf("i2c error %02x\n", rc); */
-               return -42;
-       }
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       struct tm timedate;
-       unsigned int ppctemp, prottemp;
-
-       puts ("Board: Rohde & Schwarz 8260 Protocol Board\n");
-
-       /* initialise i2c */
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-
-       read_RS5C372_time (&timedate);
-       printf ("  Time:  %02d:%02d:%02d\n",
-                       timedate.tm_hour, timedate.tm_min, timedate.tm_sec);
-       printf ("  Date:  %02d-%02d-%04d\n",
-                       timedate.tm_mday, timedate.tm_mon, timedate.tm_year);
-       ppctemp = read_LM84_temp (LM84_PPC_I2C_ADR);
-       prottemp = read_LM84_temp (LM84_SHARC_I2C_ADR);
-       printf ("  Temp:  PPC %d C, Protocol Board %d C\n",
-                       ppctemp, prottemp);
-
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations while still
- * running in flash
- */
-
-int misc_init_f (void)
-{
-       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;
-
-#ifdef INIT_LOCAL_BUS_SDRAM
-       volatile uchar *ramaddr8;
-#endif
-       volatile ulong *ramaddr32;
-       ulong sdmr;
-       int i;
-
-       /*
-        * Only initialize SDRAM when running from FLASH.
-        * When running from RAM, don't touch it.
-        */
-       if ((ulong) initdram & 0xff000000) {
-               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_lcl_acr = 0x02;
-               immap->im_siu_conf.sc_lcl_alrh = 0x01234567;
-               immap->im_siu_conf.sc_lcl_alrl = 0x89ABCDEF;
-               /*
-                * Program local/60x bus Transfer Error Status and Control Regs:
-                * Disable parity errors
-                */
-               immap->im_siu_conf.sc_tescr1 = 0x00040000;
-               immap->im_siu_conf.sc_ltescr1 = 0x00040000;
-
-               /*
-                * Perform Power-Up Initialisation of SDRAM (see 8260 UM, 10.4.2)
-                *
-                * The appropriate BRx/ORx registers have already
-                * been set when we get here (see cpu_init_f). The
-                * SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
-                */
-               memctl->memc_mptpr = 0x2000;
-               memctl->memc_mar = 0x0200;
-#ifdef INIT_LOCAL_BUS_SDRAM
-               /* initialise local bus ram
-                *
-                * (using the PSRMR_ definitions is NOT an error here
-                * - the LSDMR has the same fields as the PSDMR!)
-                */
-               memctl->memc_lsrt = 0x0b;
-               memctl->memc_lurt = 0x00;
-               ramaddr = (uchar *) PHYS_SDRAM_LOCAL;
-               sdmr = CONFIG_SYS_LSDMR & ~(PSDMR_OP_MSK | PSDMR_RFEN | PSDMR_PBI);
-               memctl->memc_lsdmr = sdmr | PSDMR_OP_PREA;
-               *ramaddr = 0xff;
-               for (i = 0; i < 8; i++) {
-                       memctl->memc_lsdmr = sdmr | PSDMR_OP_CBRR;
-                       *ramaddr = 0xff;
-               }
-               memctl->memc_lsdmr = sdmr | PSDMR_OP_MRW;
-               *ramaddr = 0xff;
-               memctl->memc_lsdmr = CONFIG_SYS_LSDMR | PSDMR_OP_NORM;
-#endif
-               /* initialise 60x bus ram */
-               memctl->memc_psrt = 0x0b;
-               memctl->memc_purt = 0x08;
-               ramaddr32 = (ulong *) PHYS_SDRAM_60X;
-               sdmr = CONFIG_SYS_PSDMR & ~(PSDMR_OP_MSK | PSDMR_RFEN | PSDMR_PBI);
-               memctl->memc_psdmr = sdmr | PSDMR_OP_PREA;
-               ramaddr32[0] = 0x00ff00ff;
-               ramaddr32[1] = 0x00ff00ff;
-               memctl->memc_psdmr = sdmr | PSDMR_OP_CBRR;
-               for (i = 0; i < 8; i++) {
-                       ramaddr32[0] = 0x00ff00ff;
-                       ramaddr32[1] = 0x00ff00ff;
-               }
-               memctl->memc_psdmr = sdmr | PSDMR_OP_MRW;
-               ramaddr32[0] = 0x00ff00ff;
-               ramaddr32[1] = 0x00ff00ff;
-               memctl->memc_psdmr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
-       }
-
-       /* return the size of the 60x bus ram */
-       return PHYS_SDRAM_60X_SIZE;
-}
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations after monitor
- * has been relocated into ram
- */
-
-int misc_init_r (void)
-{
-       printf ("misc_init_r\n");
-       return (0);
-}
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
deleted file mode 100644 (file)
index 44bcd19..0000000
+++ /dev/null
@@ -1,114 +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      :
-  {
-    arch/powerpc/cpu/mpc8260/start.o   (.text)
-    *(.text)
-    *(.got1)
-    /*. = env_offset; */
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(.eh_frame)
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* 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)
-    *(.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 (NOLOAD)       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index dc155ad0e5b3bdb70133369dba8290a9e311f5c2..cebabe920a29de022c99e5a1429e11929ce8ee74 100644 (file)
@@ -66,11 +66,9 @@ static struct ums *ums_disk_init(struct mmc *mmc)
 
 struct ums *ums_init(unsigned int dev_num)
 {
-       struct mmc *mmc = NULL;
+       struct mmc *mmc = find_mmc_device(dev_num);
 
-       mmc = find_mmc_device(dev_num);
-       if (!mmc)
+       if (!mmc || mmc_init(mmc))
                return NULL;
-
        return ums_disk_init(mmc);
 }
diff --git a/board/samsung/goni/mem_setup.S b/board/samsung/goni/mem_setup.S
deleted file mode 100644 (file)
index 5dc980c..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (C) 2009 Samsung Electrnoics
- * Minkyu Kang <mk7.kang@samsung.com>
- * Kyungmin Park <kyungmin.park@samsung.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-       .globl mem_ctrl_asm_init
-mem_ctrl_asm_init:
-       cmp     r7, r8
-
-       ldreq   r0, =S5PC100_DMC_BASE                   @ 0xE6000000
-       ldrne   r0, =S5PC110_DMC0_BASE                  @ 0xF0000000
-       ldrne   r6, =S5PC110_DMC1_BASE                  @ 0xF1400000
-
-       /* DLL parameter setting */
-       ldr     r1, =0x50101000
-       str     r1, [r0, #0x018]                        @ PHYCONTROL0_OFFSET
-       strne   r1, [r6, #0x018]                        @ PHYCONTROL0_OFFSET
-       ldr     r1, =0x000000f4
-       str     r1, [r0, #0x01C]                        @ PHYCONTROL1_OFFSET
-       strne   r1, [r6, #0x01C]                        @ PHYCONTROL1_OFFSET
-       ldreq   r1, =0x0
-       streq   r1, [r0, #0x020]                        @ PHYCONTROL2_OFFSET
-
-       /* DLL on */
-       ldr     r1, =0x50101002
-       str     r1, [r0, #0x018]                        @ PHYCONTROL0_OFFSET
-       strne   r1, [r6, #0x018]                        @ PHYCONTROL0_OFFSET
-
-       /* DLL start */
-       ldr     r1, =0x50101003
-       str     r1, [r0, #0x018]                        @ PHYCONTROL0_OFFSET
-       strne   r1, [r6, #0x018]                        @ PHYCONTROL0_OFFSET
-
-       mov     r2, #0x4000
-wait:  subs    r2, r2, #0x1
-       cmp     r2, #0x0
-       bne     wait
-
-       cmp     r7, r8
-       /* Force value locking for DLL off */
-       str     r1, [r0, #0x018]                        @ PHYCONTROL0_OFFSET
-       strne   r1, [r6, #0x018]                        @ PHYCONTROL0_OFFSET
-
-       /* DLL off */
-       ldr     r1, =0x50101009
-       str     r1, [r0, #0x018]                        @ PHYCONTROL0_OFFSET
-       strne   r1, [r6, #0x018]                        @ PHYCONTROL0_OFFSET
-
-       /* auto refresh off */
-       ldr     r1, =0xff001010 | (1 << 7)
-       ldr     r2, =0xff001010 | (1 << 7)
-       str     r1, [r0, #0x000]                        @ CONCONTROL_OFFSET
-       strne   r2, [r6, #0x000]                        @ CONCONTROL_OFFSET
-
-       /*
-        * Burst Length 4, 2 chips, 32-bit, LPDDR
-        * OFF: dynamic self refresh, force precharge, dynamic power down off
-        */
-       ldr     r1, =0x00212100
-       ldr     r2, =0x00212100
-       str     r1, [r0, #0x004]                        @ MEMCONTROL_OFFSET
-       strne   r2, [r6, #0x004]                        @ MEMCONTROL_OFFSET
-
-       /*
-        * Note:
-        * If Bank0 has Mobile RAM we place it at 0x3800'0000 (s5pc100 only)
-        * So finally Bank1 OneDRAM should address start at at 0x3000'0000
-        */
-
-       /*
-        * DMC0: CS0 : S5PC100/S5PC110
-        * 0x30 -> 0x30000000
-        * 0xf8 -> 0x37FFFFFF
-        * [15:12] 0: Linear
-        * [11:8 ] 2: 9 bits
-        * [ 7:4 ] 2: 14 bits
-        * [ 3:0 ] 2: 4 banks
-        */
-       ldr     r3, =0x30f80222
-       ldr     r4, =0x40f00222
-swap_memory:
-       str     r3, [r0, #0x008]                        @ MEMCONFIG0_OFFSET
-       str     r4, [r0, #0x00C]                        @ dummy write
-
-       /*
-        * DMC1: CS0 : S5PC110
-        * 0x40 -> 0x40000000
-        * 0xf8 -> 0x47FFFFFF (1Gib)
-        * 0x40 -> 0x40000000
-        * 0xf0 -> 0x4FFFFFFF (2Gib)
-        * [15:12] 0: Linear
-        * [11:8 ] 2: 9 bits  - Col (1Gib)
-        * [11:8 ] 3: 10 bits - Col (2Gib)
-        * [ 7:4 ] 2: 14 bits - Row
-        * [ 3:0 ] 2: 4 banks
-        */
-       /* Default : 2GiB */
-       ldr     r4, =0x40f01322                         @ 2Gib: MCP B
-       ldr     r5, =0x50f81312                         @ dummy: MCP D
-       cmp     r9, #1
-       ldreq   r4, =0x40f81222                         @ 1Gib: MCP A
-       cmp     r9, #3
-       ldreq   r5, =0x50f81312                         @ 2Gib + 1Gib: MCP D
-       cmp     r9, #4
-       ldreq   r5, =0x50f01312                         @ 2Gib + 2Gib: MCP E
-
-       cmp     r7, r8
-       strne   r4, [r6, #0x008]                        @ MEMCONFIG0_OFFSET
-       strne   r5, [r6, #0x00C]                        @ MEMCONFIG1_OFFSET
-
-       /*
-        * DMC0: CS1: S5PC100
-        * 0x38 -> 0x38000000
-        * 0xf8 -> 0x3fFFFFFF
-        * [15:12] 0: Linear
-        * [11:8 ] 2: 9 bits
-        * [ 7:4 ] 2: 14 bits
-        * [ 3:0 ] 2: 4 banks
-        */
-       eoreq   r3, r3, #0x08000000
-       streq   r3, [r0, #0xc]                          @ MEMCONFIG1_OFFSET
-
-       ldr     r1, =0x20000000
-       str     r1, [r0, #0x014]                        @ PRECHCONFIG_OFFSET
-       strne   r1, [r0, #0x014]                        @ PRECHCONFIG_OFFSET
-       strne   r1, [r6, #0x014]                        @ PRECHCONFIG_OFFSET
-
-       /*
-        * S5PC100:
-        * DMC:  CS0: 166MHz
-        *       CS1: 166MHz
-        * S5PC110:
-        * DMC0: CS0: 166MHz
-        * DMC1: CS0: 200MHz
-        *
-        * 7.8us * 200MHz %LE %LONG1560(0x618)
-        * 7.8us * 166MHz %LE %LONG1294(0x50E)
-        * 7.8us * 133MHz %LE %LONG1038(0x40E),
-        * 7.8us * 100MHz %LE %LONG780(0x30C),
-        */
-       ldr     r1, =0x0000050E
-       str     r1, [r0, #0x030]                        @ TIMINGAREF_OFFSET
-       ldrne   r1, =0x00000618
-       strne   r1, [r6, #0x030]                        @ TIMINGAREF_OFFSET
-
-       ldr     r1, =0x14233287
-       str     r1, [r0, #0x034]                        @ TIMINGROW_OFFSET
-       ldrne   r1, =0x182332c8
-       strne   r1, [r6, #0x034]                        @ TIMINGROW_OFFSET
-
-       ldr     r1, =0x12130005
-       str     r1, [r0, #0x038]                        @ TIMINGDATA_OFFSET
-       ldrne   r1, =0x13130005
-       strne   r1, [r6, #0x038]                        @ TIMINGDATA_OFFSET
-
-       ldr     r1, =0x0E140222
-       str     r1, [r0, #0x03C]                        @ TIMINGPOWER_OFFSET
-       ldrne   r1, =0x0E180222
-       strne   r1, [r6, #0x03C]                        @ TIMINGPOWER_OFFSET
-
-       /* chip0 Deselect */
-       ldr     r1, =0x07000000
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip0 PALL */
-       ldr     r1, =0x01000000
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip0 REFA */
-       ldr     r1, =0x05000000
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-       /* chip0 REFA */
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip0 MRS */
-       ldr     r1, =0x00000032
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip0 EMRS */
-       ldr     r1, =0x00020020
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip1 Deselect */
-       ldr     r1, =0x07100000
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip1 PALL */
-       ldr     r1, =0x01100000
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip1 REFA */
-       ldr     r1, =0x05100000
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-       /* chip1 REFA */
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip1 MRS */
-       ldr     r1, =0x00100032
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* chip1 EMRS */
-       ldr     r1, =0x00120020
-       str     r1, [r0, #0x010]                        @ DIRECTCMD_OFFSET
-       strne   r1, [r6, #0x010]                        @ DIRECTCMD_OFFSET
-
-       /* auto refresh on */
-       ldr     r1, =0xFF002030 | (1 << 7)
-       str     r1, [r0, #0x000]                        @ CONCONTROL_OFFSET
-       strne   r1, [r6, #0x000]                        @ CONCONTROL_OFFSET
-
-       /* PwrdnConfig */
-       ldr     r1, =0x00100002
-       str     r1, [r0, #0x028]                        @ PWRDNCONFIG_OFFSET
-       strne   r1, [r6, #0x028]                        @ PWRDNCONFIG_OFFSET
-
-       ldr     r1, =0x00212113
-       str     r1, [r0, #0x004]                        @ MEMCONTROL_OFFSET
-       strne   r1, [r6, #0x004]                        @ MEMCONTROL_OFFSET
-
-       /* Skip when S5PC110 */
-       bne     1f
-
-       /* Check OneDRAM access area at s5pc100 */
-       ldreq   r3, =0x38f80222
-       ldreq   r1, =0x37ffff00
-       str     r3, [r1]
-       ldr     r2, [r1]
-       cmp     r2, r3
-       beq     swap_memory
-1:
-       mov     pc, lr
-
-       .ltorg
index d502f02d3dac2a339a099734ac541fd2f7365e2c..a539267a1ca43339ddfe246ecc37aa85b0f73b9f 100644 (file)
@@ -30,13 +30,6 @@ int board_usb_init(int index, enum usb_init_type init)
        return 0;
 }
 
-#ifdef CONFIG_USB_CABLE_CHECK
-int usb_cable_connected(void)
-{
-       return 0;
-}
-#endif
-
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int exynos_early_init_f(void)
 {
diff --git a/board/samsung/smdkc100/mem_setup.S b/board/samsung/smdkc100/mem_setup.S
deleted file mode 100644 (file)
index 2f2df0b..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Originates from Samsung's u-boot 1.1.6 port to S5PC1xx
- *
- * Copyright (C) 2009 Samsung Electrnoics
- * Inki Dae <inki.dae@samsung.com>
- * Heungjun Kim <riverful.kim@samsung.com>
- * Minkyu Kang <mk7.kang@samsung.com>
- * Kyungmin Park <kyungmin.park@samsung.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-       .globl mem_ctrl_asm_init
-mem_ctrl_asm_init:
-       ldr     r6, =S5PC100_DMC_BASE                   @ 0xE6000000
-
-       /* DLL parameter setting */
-       ldr     r1, =0x50101000
-       str     r1, [r6, #0x018]                        @ PHYCONTROL0
-       ldr     r1, =0xf4
-       str     r1, [r6, #0x01C]                        @ PHYCONTROL1
-       ldr     r1, =0x0
-       str     r1, [r6, #0x020]                        @ PHYCONTROL2
-
-       /* DLL on */
-       ldr     r1, =0x50101002
-       str     r1, [r6, #0x018]                        @ PHYCONTROL0
-
-       /* DLL start */
-       ldr     r1, =0x50101003
-       str     r1, [r6, #0x018]                        @ PHYCONTROL0
-
-       /* Force value locking for DLL off */
-       str     r1, [r6, #0x018]                        @ PHYCONTROL0
-
-       /* DLL off */
-       ldr     r1, =0x50101001
-       str     r1, [r6, #0x018]                        @ PHYCONTROL0
-
-       /* auto refresh off */
-       ldr     r1, =0xff001010
-       str     r1, [r6, #0x000]                        @ CONCONTROL
-
-       /*
-        * Burst Length 4, 2 chips, 32-bit, LPDDR
-        * OFF: dynamic self refresh, force precharge, dynamic power down off
-        */
-       ldr     r1, =0x00212100
-       str     r1, [r6, #0x004]                        @ MEMCONTROL
-
-       /*
-        * Note:
-        * If Bank0 has OneDRAM we place it at 0x2800'0000
-        * So finally Bank1 should address start at at 0x2000'0000
-        */
-       mov     r4, #0x0
-
-swap_memory:
-       /*
-        * Bank0
-        * 0x30 -> 0x30000000
-        * 0xf8 -> 0x37FFFFFF
-        * [15:12] 0: Linear
-        * [11:8 ] 2: 9 bits
-        * [ 7:4 ] 2: 14 bits
-        * [ 3:0 ] 2: 4 banks
-        */
-       ldr     r1, =0x30f80222
-       /* if r4 is 1, swap the bank */
-       cmp     r4, #0x1
-       orreq   r1, r1, #0x08000000
-       str     r1, [r6, #0x008]                        @ MEMCONFIG0
-
-       /*
-        * Bank1
-        * 0x38 -> 0x38000000
-        * 0xf8 -> 0x3fFFFFFF
-        * [15:12] 0: Linear
-        * [11:8 ] 2: 9 bits
-        * [ 7:4 ] 2: 14 bits
-        * [ 3:0 ] 2: 4 banks
-        */
-       ldr     r1, =0x38f80222
-       /* if r4 is 1, swap the bank */
-       cmp     r4, #0x1
-       biceq   r1, r1, #0x08000000
-       str     r1, [r6, #0x00c]                        @ MEMCONFIG1
-
-       ldr     r1, =0x20000000
-       str     r1, [r6, #0x014]                        @ PRECHCONFIG
-
-       /*
-        * FIXME: Please verify these values
-        * 7.8us * 166MHz %LE %LONG1294(0x50E)
-        * 7.8us * 133MHz %LE %LONG1038(0x40E),
-        * 7.8us * 100MHz %LE %LONG780(0x30C),
-        * 7.8us * 20MHz  %LE %LONG156(0x9C),
-        * 7.8us * 10MHz  %LE %LONG78(0x4E)
-        */
-       ldr     r1, =0x0000050e
-       str     r1, [r6, #0x030]                        @ TIMINGAREF
-
-       /* 166 MHz */
-       ldr     r1, =0x0c233287
-       str     r1, [r6, #0x034]                        @ TIMINGROW
-
-       /* twtr=3 twr=2 trtp=3 cl=3 wl=3 rl=3 */
-       ldr     r1, =0x32330303
-       str     r1, [r6, #0x038]                        @ TIMINGDATA
-
-       /* tfaw=4 sxsr=0x14 txp=0x14 tcke=3 tmrd=3 */
-       ldr     r1, =0x04141433
-       str     r1, [r6, #0x03C]                        @ TIMINGPOWER
-
-       /* chip0 Deselect */
-       ldr     r1, =0x07000000
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip0 PALL */
-       ldr     r1, =0x01000000
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip0 REFA */
-       ldr     r1, =0x05000000
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-       /* chip0 REFA */
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip0 MRS, CL%LE %LONG3, BL%LE %LONG4 */
-       ldr     r1, =0x00000032
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip1 Deselect */
-       ldr     r1, =0x07100000
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip1 PALL */
-       ldr     r1, =0x01100000
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip1 REFA */
-       ldr     r1, =0x05100000
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-       /* chip1 REFA */
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* chip1 MRS, CL%LE %LONG3, BL%LE %LONG4 */
-       ldr     r1, =0x00100032
-       str     r1, [r6, #0x010]                        @ DIRECTCMD
-
-       /* auto refresh on */
-       ldr     r1, =0xff002030
-       str     r1, [r6, #0x000]                        @ CONCONTROL
-
-       /* PwrdnConfig */
-       ldr     r1, =0x00100002
-       str     r1, [r6, #0x028]                        @ PWRDNCONFIG
-
-       /* BL%LE %LONG */
-       ldr     r1, =0xff212100
-       str     r1, [r6, #0x004]                        @ MEMCONTROL
-
-
-       /* Try to test memory area */
-       cmp     r4, #0x1
-       beq     1f
-
-       mov     r4, #0x1
-       ldr     r1, =0x37ffff00
-       str     r4, [r1]
-       str     r4, [r1, #0x4]                          @ dummy write
-       ldr     r0, [r1]
-       cmp     r0, r4
-       bne     swap_memory
-
-1:
-       mov     pc, lr
-
-       .ltorg
index f8b290800237dbfa5f7a32956657b6e5a59d5323..fec72d4c54223dfdd653809533addd934c7db3b1 100644 (file)
@@ -426,8 +426,7 @@ int board_usb_init(int index, enum usb_init_type init)
        return s3c_udc_probe(&s5pc210_otg_data);
 }
 
-#ifdef CONFIG_USB_CABLE_CHECK
-int usb_cable_connected(void)
+int g_dnl_board_usb_cable_connected(void)
 {
        struct pmic *muic = pmic_get("MAX8997_MUIC");
        if (!muic)
@@ -436,7 +435,6 @@ int usb_cable_connected(void)
        return !!muic->chrg->chrg_type(muic);
 }
 #endif
-#endif
 
 static void pmic_reset(void)
 {
index d4d5926d8140e6d78e902c2495085957dbf500e7..e4987ce8b4fe45cf73431d7a4b36611942b73d66 100644 (file)
@@ -302,8 +302,7 @@ int board_usb_init(int index, enum usb_init_type init)
        return s3c_udc_probe(&s5pc210_otg_data);
 }
 
-#ifdef CONFIG_USB_CABLE_CHECK
-int usb_cable_connected(void)
+int g_dnl_board_usb_cable_connected(void)
 {
        struct pmic *muic = pmic_get("MAX77693_MUIC");
        if (!muic)
@@ -312,7 +311,6 @@ int usb_cable_connected(void)
        return !!muic->chrg->chrg_type(muic);
 }
 #endif
-#endif
 
 static int pmic_init_max77686(void)
 {
index 25f2a935b710b2d562b116a421a27a220ce52dfd..47e7f538d65b7cd35943328d91ecb44385096961 100644 (file)
@@ -195,13 +195,6 @@ int board_usb_init(int index, enum usb_init_type init)
        return s3c_udc_probe(&s5pc210_otg_data);
 }
 
-#ifdef CONFIG_USB_CABLE_CHECK
-int usb_cable_connected(void)
-{
-       return 0;
-}
-#endif
-
 int exynos_early_init_f(void)
 {
        wdt_stop();
diff --git a/board/sandpoint/early_init.S b/board/sandpoint/early_init.S
deleted file mode 100644 (file)
index 5a9b924..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2001
- * Thomas Koeller, tkoeller@gmx.net
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __ASSEMBLY__
-#define __ASSEMBLY__   1
-#endif
-
-#include <asm-offsets.h>
-#include <config.h>
-#include <asm/processor.h>
-#include <mpc824x.h>
-#include <ppc_asm.tmpl>
-
-#if defined(USE_DINK32)
-  /* We are running from RAM, so do not clear the MCCR1_MEMGO bit! */
-  #define MCCR1VAL ((CONFIG_SYS_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CONFIG_SYS_ROMFAL << MCCR1_ROMFAL_SHIFT) | MCCR1_MEMGO)
-#else
-  #define MCCR1VAL (CONFIG_SYS_ROMNAL << MCCR1_ROMNAL_SHIFT) | (CONFIG_SYS_ROMFAL << MCCR1_ROMFAL_SHIFT)
-#endif
-
-       .text
-
-       /* Values to program into memory controller registers */
-tbl:   .long   MCCR1, MCCR1VAL
-       .long   MCCR2, CONFIG_SYS_REFINT << MCCR2_REFINT_SHIFT
-       .long   MCCR3
-       .long   (((CONFIG_SYS_BSTOPRE & 0x000000f0) >> 4) << MCCR3_BSTOPRE2TO5_SHIFT) | \
-               (CONFIG_SYS_REFREC << MCCR3_REFREC_SHIFT) | \
-               (CONFIG_SYS_RDLAT  << MCCR3_RDLAT_SHIFT)
-       .long   MCCR4
-       .long   (CONFIG_SYS_PRETOACT << MCCR4_PRETOACT_SHIFT) | (CONFIG_SYS_ACTTOPRE << MCCR4_ACTTOPRE_SHIFT) | \
-               (CONFIG_SYS_REGISTERD_TYPE_BUFFER << 20) | \
-               (((CONFIG_SYS_BSTOPRE & 0x00000300) >> 8) << MCCR4_BSTOPRE0TO1_SHIFT ) | \
-               ((CONFIG_SYS_SDMODE_CAS_LAT << 4) | (CONFIG_SYS_SDMODE_WRAP << 3) | \
-               (CONFIG_SYS_SDMODE_BURSTLEN) << MCCR4_SDMODE_SHIFT) | \
-               (CONFIG_SYS_ACTTORW << MCCR4_ACTTORW_SHIFT) | \
-               ((CONFIG_SYS_BSTOPRE & 0x0000000f) << MCCR4_BSTOPRE6TO9_SHIFT )
-       .long   MSAR1
-       .long   (((CONFIG_SYS_BANK0_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMSAR1
-       .long   (((CONFIG_SYS_BANK0_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   MSAR2
-       .long   (((CONFIG_SYS_BANK4_START & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMSAR2
-       .long   (((CONFIG_SYS_BANK4_START & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   MEAR1
-       .long   (((CONFIG_SYS_BANK0_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMEAR1
-       .long   (((CONFIG_SYS_BANK0_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   MEAR2
-       .long   (((CONFIG_SYS_BANK4_END & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   EMEAR2
-       .long   (((CONFIG_SYS_BANK4_END & MICR_EADDR_MASK) >> MICR_EADDR_SHIFT) <<  0) | \
-               (((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)
-       .long   0
-
-
-       /*
-        * Early CPU initialization. Set up memory controller, so we can access any RAM at all. This
-        * must be done in assembly, since we have no stack at this point.
-        */
-       .global early_init_f
-early_init_f:
-       mflr    r10
-
-       /* basic memory controller configuration */
-       lis     r3, CONFIG_ADDR_HIGH
-       lis     r4, CONFIG_DATA_HIGH
-       bl      lab
-lab:   mflr    r5
-       lwzu    r0, tbl - lab(r5)
-loop:  lwz     r1, 4(r5)
-       stwbrx  r0, 0, r3
-       eieio
-       stwbrx  r1, 0, r4
-       eieio
-       lwzu    r0, 8(r5)
-       cmpli   cr0, 0, r0, 0
-       bne     cr0, loop
-
-       /* set bank enable bits */
-       lis     r0, MBER@h
-       ori     r0, 0, MBER@l
-       li      r1, CONFIG_SYS_BANK_ENABLE
-       stwbrx  r0, 0, r3
-       eieio
-       stb     r1, 0(r4)
-       eieio
-
-       /* delay loop */
-       lis     r0, 0x0003
-       mtctr   r0
-delay: bdnz    delay
-
-       /* enable memory controller */
-       lis     r0, MCCR1@h
-       ori     r0, 0, MCCR1@l
-       stwbrx  r0, 0, r3
-       eieio
-       lwbrx   r0, 0, r4
-       oris    r0, 0, MCCR1_MEMGO@h
-       stwbrx  r0, 0, r4
-       eieio
-
-       /* set up stack pointer */
-       lis     r1, CONFIG_SYS_INIT_SP_OFFSET@h
-       ori     r1, r1, CONFIG_SYS_INIT_SP_OFFSET@l
-
-       mtlr    r10
-       blr
index a9e3d34df9681a24ff5d296e6e58c3eac31cd4d1..2c5a0f8a117e9626813b3947f0a0c8eded6566ca 100644 (file)
@@ -34,6 +34,7 @@ SECTIONS
        .text :
        {
                *(.__image_copy_start)
+               *(.vectors)
                CPUDIR/start.o (.text*)
                board/ti/am335x/built-in.o (.text*)
                *(.text*)
index 89334f658569e4a767ff49a893a85d7eb373ecb2..880d972523b9eb81c7e99065b904937c0fdaa6d8 100644 (file)
@@ -522,10 +522,6 @@ Active  mips        mips32         au1x00      -               dbau1x00
 Active  mips        mips32         au1x00      -               dbau1x00            dbau1550                             dbau1x00:DBAU1550                                                                                                                 Thomas Lange <thomas@corelatus.se>
 Active  mips        mips32         au1x00      -               dbau1x00            dbau1550_el                          dbau1x00:DBAU1550,SYS_LITTLE_ENDIAN                                                                                               Thomas Lange <thomas@corelatus.se>
 Active  mips        mips32         au1x00      -               pb1x00              pb1000                               pb1x00:PB1000                                                                                                                     -
-Active  mips        mips32         incaip      -               incaip              incaip                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  mips        mips32         incaip      -               incaip              incaip_100MHz                        incaip:CPU_CLOCK_RATE=100000000                                                                                                   Wolfgang Denk <wd@denx.de>
-Active  mips        mips32         incaip      -               incaip              incaip_133MHz                        incaip:CPU_CLOCK_RATE=133000000                                                                                                   Wolfgang Denk <wd@denx.de>
-Active  mips        mips32         incaip      -               incaip              incaip_150MHz                        incaip:CPU_CLOCK_RATE=150000000                                                                                                   Wolfgang Denk <wd@denx.de>
 Active  mips        mips64         -           -               qemu-mips           qemu_mips64                          qemu-mips64:SYS_BIG_ENDIAN                                                                                                        -
 Active  mips        mips64         -           -               qemu-mips           qemu_mips64el                        qemu-mips64:SYS_LITTLE_ENDIAN                                                                                                     -
 Active  nds32       n1213          ag101       AndesTech       adp-ag101           adp-ag101                            -                                                                                                                                 Andes <uboot@andestech.com>
@@ -537,7 +533,6 @@ Active  nios2       nios2          -           psyent          pk1c20
 Active  openrisc    or1200         -           openrisc        openrisc-generic    openrisc-generic                     -                                                                                                                                 Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
 Active  powerpc     74xx_7xx       -           -               -                   ppmc7xx                              -                                                                                                                                 -
 Active  powerpc     74xx_7xx       -           -               evb64260            P3G4                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     74xx_7xx       -           -               evb64260            ZUMA                                 -                                                                                                                                 Nye Liu <nyet@zumanetworks.com>
 Active  powerpc     74xx_7xx       -           eltec           elppc               ELPPC                                -                                                                                                                                 -
 Active  powerpc     74xx_7xx       -           esd             cpci750             CPCI750                              -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
 Active  powerpc     74xx_7xx       -           freescale       mpc7448hpc2         mpc7448hpc2                          -                                                                                                                                 Roy Zang <tie-fei.zang@freescale.com>
@@ -644,23 +639,21 @@ Active  powerpc     mpc824x        -           -               cpc45
 Active  powerpc     mpc824x        -           -               cpc45               CPC45_ROMBOOT                        CPC45:BOOT_ROM                                                                                                                    Josef Wagner <Wagner@Microsys.de>
 Active  powerpc     mpc824x        -           -               cu824               CU824                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
 Active  powerpc     mpc824x        -           -               eXalion             eXalion                              -                                                                                                                                 Torsten Demke <torsten.demke@fci.com>
-Active  powerpc     mpc824x        -           -               musenki             MUSENKI                              -                                                                                                                                 Jim Thompson <jim@musenki.com>
 Active  powerpc     mpc824x        -           -               mvblue              MVBLUE                               -                                                                                                                                 -
 Active  powerpc     mpc824x        -           -               sandpoint           Sandpoint8240                        -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc824x        -           -               sandpoint           Sandpoint8245                        -                                                                                                                                 Jim Thompson <jim@musenki.com>
 Active  powerpc     mpc8260        -           -               -                   atc                                  -                                                                                                                                 Wolfgang Denk <wd@denx.de>
 Active  powerpc     mpc8260        -           -               -                   ep8260                               -                                                                                                                                 Frank Panno <fpanno@delphintech.com>
 Active  powerpc     mpc8260        -           -               -                   ep82xxm                              -                                                                                                                                 -
 Active  powerpc     mpc8260        -           -               -                   gw8260                               -                                                                                                                                 Oliver Brown <obrown@adventnetworks.com>
 Active  powerpc     mpc8260        -           -               -                   hymod                                -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
-Active  powerpc     mpc8260        -           -               -                   ppmc8260                             -                                                                                                                                 Brad Kemp <Brad.Kemp@seranoa.com>
 Active  powerpc     mpc8260        -           -               -                   sacsng                               -                                                                                                                                 Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
 Active  powerpc     mpc8260        -           -               cogent              cogent_mpc8260                       -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
 Active  powerpc     mpc8260        -           -               cpu86               CPU86                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
 Active  powerpc     mpc8260        -           -               cpu86               CPU86_ROMBOOT                        CPU86:BOOT_ROM                                                                                                                    Wolfgang Denk <wd@denx.de>
 Active  powerpc     mpc8260        -           -               cpu87               CPU87                                -                                                                                                                                 -
 Active  powerpc     mpc8260        -           -               cpu87               CPU87_ROMBOOT                        CPU87:BOOT_ROM                                                                                                                    -
-Active  powerpc     mpc8260        -           -               ids8247             IDS8247                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc8260        -           -               ep8248              ep8248                               -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Active  powerpc     mpc8260        -           ids             ids8247             IDS8247                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
 Active  powerpc     mpc8260        -           -               iphase4539          IPHASE4539                           -                                                                                                                                 Wolfgang Grandegger <wg@denx.de>
 Active  powerpc     mpc8260        -           -               muas3001            muas3001                             -                                                                                                                                 Heiko Schocher <hs@denx.de>
 Active  powerpc     mpc8260        -           -               muas3001            muas3001_dev                         muas3001:MUAS_DEV_BOARD                                                                                                           Heiko Schocher <hs@denx.de>
@@ -729,6 +722,7 @@ Active  powerpc     mpc83xx        -           freescale       mpc8360emds
 Active  powerpc     mpc83xx        -           freescale       mpc837xemds         MPC837XEMDS                          -                                                                                                                                 Dave Liu <daveliu@freescale.com>
 Active  powerpc     mpc83xx        -           freescale       mpc837xemds         MPC837XEMDS_HOST                     MPC837XEMDS:PCI                                                                                                                   Dave Liu <daveliu@freescale.com>
 Active  powerpc     mpc83xx        -           freescale       mpc837xerdb         MPC837XERDB                          -                                                                                                                                 Joe D'Abbraccio <ljd015@freescale.com>
+Active  powerpc     mpc83xx        -           ids             ids8313             ids8313                              ids8313:SYS_TEXT_BASE=0xFFF00000                                                                                                  Heiko Schocher <hs@denx.de>
 Active  powerpc     mpc83xx        -           keymile         km83xx              kmcoge5ne                            km8360:KMCOGE5NE                                                                                                                  Holger Brunck <holger.brunck@keymile.com>
 Active  powerpc     mpc83xx        -           keymile         km83xx              kmeter1                              km8360:KMETER1                                                                                                                    Holger Brunck <holger.brunck@keymile.com>
 Active  powerpc     mpc83xx        -           keymile         km83xx              kmopti2                              tuxx1:KMOPTI2                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
@@ -748,10 +742,11 @@ Active  powerpc     mpc85xx        -           -               sbc8548
 Active  powerpc     mpc85xx        -           -               socrates            socrates                             -                                                                                                                                 -
 Active  powerpc     mpc85xx        -           exmeritus       hww1u1a             HWW1U1A                              -                                                                                                                                 Kyle Moffett <Kyle.D.Moffett@boeing.com>
 Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS                             B4860QDS:PPC_B4420                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_NAND                        B4860QDS:PPC_B4420,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                      -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_NAND                        B4860QDS:PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                      -
 Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_SPIFLASH                    B4860QDS:PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS                             B4860QDS:PPC_B4860                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_NAND                        B4860QDS:PPC_B4860,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                      -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SECURE_BOOT                 B4860QDS:PPC_B4860,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_NAND                        B4860QDS:PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND
 Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SPIFLASH                    B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SRIO_PCIE_BOOT              B4860QDS:PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_NAND                      BSC9131RDB:BSC9131RDB,NAND                                                                                                        Poonam Aggrwal <poonam.aggrwal@freescale.com>
@@ -766,6 +761,14 @@ Active  powerpc     mpc85xx        -           freescale       bsc9132qds
 Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK133          BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133                                                                                  Naveen Burmi <NaveenBurmi@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK100        BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100                                                                                Naveen Burmi <NaveenBurmi@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK133        BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133                                                                                Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK100_SECURE      BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                             Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK133_SECURE      BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                             Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK100_SECURE   BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                      Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK133_SECURE   BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                      Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK100_SECURE BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK133_SECURE BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK100_SECURE     BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK133_SECURE     BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                Aneesh Bansal <aneesh.bansal@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE                             C29XPCIE:C29XPCIE,36BIT                                                                                                           Po Liu <po.liu@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE_NAND                        C29XPCIE:C29XPCIE,36BIT,NAND                                                                                                      Po Liu <po.liu@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE_SPIFLASH                    C29XPCIE:C29XPCIE,36BIT,SPIFLASH                                                                                                  Po Liu <po.liu@freescale.com>
@@ -940,32 +943,46 @@ Active  powerpc     mpc85xx        -           freescale       p2041rdb
 Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SPIFLASH                    P2041RDB:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                            -
 Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SRIO_PCIE_BOOT              P2041RDB:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                            -
 Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS                             T1040QDS:PPC_T1040                                                                                                                Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB                             T1040RDB:PPC_T1040                                                                                                                Poonam Aggrwal  <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI                          T1042RDB_PI:PPC_T1042                                                                                                             Poonam Aggrwal  <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS_D4                          T1040QDS:PPC_T1040,SYS_FSL_DDR4                                                                                                   Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS_SECURE_BOOT                 T1040QDS:PPC_T1040,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB                             T104xRDB:PPC_T1040,T1040RDB                                                                                                       Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_NAND                        T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                            Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SDCARD                      T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SECURE_BOOT                 T104xRDB:PPC_T1040,SECURE_BOOT,T1040RDB                                                                                           Aneesh Bansal  <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SPIFLASH                    T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                        Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI                          T104xRDB:PPC_T1042,T1042RDB_PI                                                                                                             Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_NAND                     T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                         Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_SDCARD                   T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_SPIFLASH                 T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                     Priyanka Jain  <Priyanka.Jain@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS                             T208xQDS:PPC_T2080                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_NAND                        T208xQDS:PPC_T2080,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                      -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SDCARD                      T208xQDS:PPC_T2080,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                    -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SPIFLASH                    T208xQDS:PPC_T2080,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SECURE_BOOT                 T208xQDS:PPC_T2080,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_NAND                        T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SDCARD                      T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SPIFLASH                    T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH
 Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SRIO_PCIE_BOOT              T208xQDS:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS                             T208xQDS:PPC_T2081                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_NAND                        T208xQDS:PPC_T2081,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                      -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SDCARD                      T208xQDS:PPC_T2081,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                    -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SPIFLASH                    T208xQDS:PPC_T2081,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_NAND                        T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SDCARD                      T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SPIFLASH                    T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                                           -
 Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SRIO_PCIE_BOOT              T208xQDS:PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB                             T208xRDB:PPC_T2080                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_NAND                        T208xRDB:PPC_T2080,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                      -
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SDCARD                      T208xRDB:PPC_T2080,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                    -
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SPIFLASH                    T208xRDB:PPC_T2080,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_NAND                        T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SDCARD                      T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SPIFLASH                    T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH
 Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SRIO_PCIE_BOOT              T208xRDB:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS                             T4240QDS:PPC_T4160                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SDCARD                      T4240QDS:PPC_T4160,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                    -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SECURE_BOOT                 T4240QDS:PPC_T4160,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_NAND                        T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                    -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SDCARD                      T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                    -
 Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SPIFLASH                    T4240QDS:PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       t4qds               T4240EMU                             T4240EMU:PPC_T4240                                                                                                                York Sun <yorksun@freescale.com>
 Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS                             T4240QDS:PPC_T4240                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_NAND                        T4240QDS:PPC_T4240,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                      -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SDCARD                      T4240QDS:PPC_T4240,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                    -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SECURE_BOOT                 T4240QDS:PPC_T4240,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_NAND                       T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                      -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SDCARD                      T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                    -
 Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SPIFLASH                    T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
 Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SRIO_PCIE_BOOT              T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       qemu-ppce500        qemu-ppce500                         -                                                                                                                                 Alexander Graf <agraf@suse.de>
 Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_36BIT_SDCARD          controlcenterd:36BIT,SDCARD                                                                                                       Dirk Eibach <eibach@gdsys.de>
 Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_36BIT_SDCARD_DEVELOP  controlcenterd:36BIT,SDCARD,DEVELOP                                                                                               Dirk Eibach <eibach@gdsys.de>
 Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_TRAILBLAZER           controlcenterd:TRAILBLAZER,SPIFLASH                                                                                               Dirk Eibach <eibach@gdsys.de>
@@ -1194,6 +1211,11 @@ Active  sparc       leon3          -           gaisler         -
 Active  sparc       leon3          -           gaisler         -                   gr_xc3s_1500                         -                                                                                                                                 -
 Active  sparc       leon3          -           gaisler         -                   grsim                                -                                                                                                                                 -
 Active  x86         x86            coreboot    chromebook-x86  coreboot            coreboot-x86                         coreboot:SYS_TEXT_BASE=0x01110000                                                                                                 -
+# The following were moved to "Orphan" in April, 2014
+Orphan  powerpc     74xx_7xx       -           -               evb64260            ZUMA                                 -                                                                                                                                 Nye Liu <nyet@zumanetworks.com>
+Orphan  powerpc     mpc824x        -           -               musenki             MUSENKI                              -                                                                                                                                 Jim Thompson <jim@musenki.com>
+Orphan  powerpc     mpc824x        -           -               sandpoint           Sandpoint8245                        -                                                                                                                                 Jim Thompson <jim@musenki.com>
+Orphan  powerpc     mpc8260        -           -               -                   ppmc8260                             -                                                                                                                                 Brad Kemp <Brad.Kemp@seranoa.com>
 # The following were moved to "Orphan" in March, 2014
 Orphan  blackfin    blackfin       -           -               -                   cm-bf527                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
 Orphan  blackfin    blackfin       -           -               -                   cm-bf533                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
@@ -1243,18 +1265,3 @@ Orphan  powerpc     ppc4xx         -           sandburst       metrobox
 # The following were move to "Orphan" in September, 2013
 Orphan  arm         arm1136        mx31        -               imx31_phycore       imx31_phycore_eet                    imx31_phycore:IMX31_PHYCORE_EET                                                                                                   (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
 Orphan  arm         arm1136        mx31        freescale       -                   mx31ads                              -                                                                                                                                 (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
-Orphan  arm         pxa            -           -               -                   lubbock                              -                                                                                                                                 (dead address) Kyle Harris <kharris@nexus-tech.net>
-Orphan  powerpc     74xx_7xx       -           -               evb64260            EVB64260                             -                                                                                                                                 -
-Orphan  powerpc     mpc824x        -           -               mousse              MOUSSE                               -                                                                                                                                 -
-Orphan  powerpc     mpc8260        -           -               -                   rsdproto                             -                                                                                                                                 -
-Orphan  powerpc     mpc8260        -           -               rpxsuper            RPXsuper                             -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               -                   RPXClassic                           -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               -                   RPXlite                              -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               fads                ADS860                               -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               fads                FADS823                              -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               fads                FADS850SAR                           -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               fads                FADS860T                             -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               genietv             GENIETV                              -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               mbx8xx              MBX                                  -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               mbx8xx              MBX860T                              -                                                                                                                                 -
-Orphan  powerpc     mpc8xx         -           -               nx823               NX823                                -                                                                                                                                 -
index cecd81a9a08e8b986d7828e2d04ccbd559c75e8e..7c853ae4422bf331e98813555ffa2c0d62a02ce9 100644 (file)
@@ -48,6 +48,7 @@ obj-$(CONFIG_ENV_IS_IN_UBI) += env_ubi.o
 obj-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
 
 # command
+obj-$(CONFIG_CMD_AES) += cmd_aes.o
 obj-$(CONFIG_CMD_AMBAPP) += cmd_ambapp.o
 obj-$(CONFIG_SOURCE) += cmd_source.o
 obj-$(CONFIG_CMD_SOURCE) += cmd_source.o
index f285bad5388e74cc2170955b79e3a47aaf197dd5..cbdf06f812e4b5a73a3c474d1d15bcf4db59376a 100644 (file)
@@ -173,7 +173,7 @@ static int announce_dram_init(void)
        return 0;
 }
 
-#ifdef CONFIG_PPC
+#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
 static int init_func_ram(void)
 {
 #ifdef CONFIG_BOARD_TYPES
@@ -819,7 +819,7 @@ static init_fnc_t init_sequence_f[] = {
        /* TODO: can we rename this to timer_init()? */
        init_timebase,
 #endif
-#ifdef CONFIG_ARM
+#if defined(CONFIG_ARM) || defined(CONFIG_MIPS)
        timer_init,             /* initialize timer */
 #endif
 #ifdef CONFIG_SYS_ALLOC_DPRAM
@@ -889,7 +889,7 @@ static init_fnc_t init_sequence_f[] = {
 #ifdef CONFIG_ARM
        dram_init,              /* configure available RAM banks */
 #endif
-#ifdef CONFIG_PPC
+#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
        init_func_ram,
 #endif
 #ifdef CONFIG_POST
index 8629a656c28a9afe30a25c0fe3ec39a63dbf8a65..d1f0aa9b1ad12272bb657d6fabbad382d72ad746 100644 (file)
@@ -528,6 +528,7 @@ static int show_model_r(void)
 # else
        checkboard();
 # endif
+       return 0;
 }
 #endif
 
diff --git a/common/cmd_aes.c b/common/cmd_aes.c
new file mode 100644 (file)
index 0000000..76da3ef
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 Marek Vasut <marex@denx.de>
+ *
+ * Command for en/de-crypting block of memory with AES-128-CBC cipher.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <environment.h>
+#include <aes.h>
+#include <malloc.h>
+#include <asm/byteorder.h>
+#include <linux/compiler.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/**
+ * do_aes() - Handle the "aes" command-line command
+ * @cmdtp:     Command data struct pointer
+ * @flag:      Command flag
+ * @argc:      Command-line argument count
+ * @argv:      Array of command-line arguments
+ *
+ * Returns zero on success, CMD_RET_USAGE in case of misuse and negative
+ * on error.
+ */
+static int do_aes(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+       uint32_t key_addr, src_addr, dst_addr, len;
+       uint8_t *key_ptr, *src_ptr, *dst_ptr;
+       uint8_t key_exp[AES_EXPAND_KEY_LENGTH];
+       uint32_t aes_blocks;
+       int enc;
+
+       if (argc != 6)
+               return CMD_RET_USAGE;
+
+       if (!strncmp(argv[1], "enc", 3))
+               enc = 1;
+       else if (!strncmp(argv[1], "dec", 3))
+               enc = 0;
+       else
+               return CMD_RET_USAGE;
+
+       key_addr = simple_strtoul(argv[2], NULL, 16);
+       src_addr = simple_strtoul(argv[3], NULL, 16);
+       dst_addr = simple_strtoul(argv[4], NULL, 16);
+       len = simple_strtoul(argv[5], NULL, 16);
+
+       key_ptr = (uint8_t *)key_addr;
+       src_ptr = (uint8_t *)src_addr;
+       dst_ptr = (uint8_t *)dst_addr;
+
+       /* First we expand the key. */
+       aes_expand_key(key_ptr, key_exp);
+
+       /* Calculate the number of AES blocks to encrypt. */
+       aes_blocks = DIV_ROUND_UP(len, AES_KEY_LENGTH);
+
+       if (enc)
+               aes_cbc_encrypt_blocks(key_exp, src_ptr, dst_ptr, aes_blocks);
+       else
+               aes_cbc_decrypt_blocks(key_exp, src_ptr, dst_ptr, aes_blocks);
+
+       return 0;
+}
+
+/***************************************************/
+#ifdef CONFIG_SYS_LONGHELP
+static char aes_help_text[] =
+       "enc key src dst len - Encrypt block of data $len bytes long\n"
+       "                          at address $src using a key at address\n"
+       "                          $key and store the result at address\n"
+       "                          $dst. The $len size must be multiple of\n"
+       "                          16 bytes and $key must be 16 bytes long.\n"
+       "aes dec key src dst len - Decrypt block of data $len bytes long\n"
+       "                          at address $src using a key at address\n"
+       "                          $key and store the result at address\n"
+       "                          $dst. The $len size must be multiple of\n"
+       "                          16 bytes and $key must be 16 bytes long.";
+#endif
+
+U_BOOT_CMD(
+       aes, 6, 1, do_aes,
+       "AES 128 CBC encryption",
+       aes_help_text
+);
index 9751edc9076121db4680fa91cc606c3ae4369804..c243a5bd78a92ec55fb7d8f2feefe51f7fc9589a 100644 (file)
@@ -453,7 +453,7 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end,
 #endif /* CONFIG_LZMA */
 #ifdef CONFIG_LZO
        case IH_COMP_LZO: {
-               size_t size;
+               size_t size = unc_len;
 
                printf("   Uncompressing %s ... ", type_name);
 
index 5547678208adf8753800bf76f68b4f7ad34869b8..a03538dabb370c320815aa12637fae31e5eccd3c 100644 (file)
@@ -22,7 +22,6 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        char *interface = argv[2];
        char *devstring = argv[3];
 
-       char *s = "dfu";
        int ret, i = 0;
 
        ret = dfu_init_env_entities(interface, simple_strtoul(devstring,
@@ -38,7 +37,7 @@ 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);
 
-       g_dnl_register(s);
+       g_dnl_register("usb_dnl_dfu");
        while (1) {
                if (dfu_reset())
                        /*
diff --git a/common/cmd_fdos.c b/common/cmd_fdos.c
deleted file mode 100644 (file)
index 6930325..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * (C) Copyright 2002
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT  p.aubert@staubli.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Dos floppy support
- */
-
-#include <common.h>
-#include <config.h>
-#include <command.h>
-#include <fdc.h>
-
-/*-----------------------------------------------------------------------------
- * do_fdosboot --
- *-----------------------------------------------------------------------------
- */
-int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-    char *name;
-    char *ep;
-    int size;
-    int drive = CONFIG_SYS_FDC_DRIVE_NUMBER;
-
-    /* pre-set load_addr */
-    if ((ep = getenv("loadaddr")) != NULL) {
-       load_addr = simple_strtoul(ep, NULL, 16);
-    }
-
-    /* pre-set Boot file name */
-    if ((name = getenv("bootfile")) == NULL) {
-       name = "uImage";
-    }
-
-    switch (argc) {
-    case 1:
-       break;
-    case 2:
-       /* only one arg - accept two forms:
-        * just load address, or just boot file name.
-        * The latter form must be written "filename" here.
-        */
-       if (argv[1][0] == '"') {        /* just boot filename */
-           name = argv [1];
-       } else {                        /* load address */
-           load_addr = simple_strtoul(argv[1], NULL, 16);
-       }
-       break;
-    case 3:
-       load_addr = simple_strtoul(argv[1], NULL, 16);
-       name = argv [2];
-       break;
-    default:
-       return CMD_RET_USAGE;
-    }
-
-    /* Init physical layer                                                   */
-    if (!fdc_fdos_init (drive)) {
-       return (-1);
-    }
-
-    /* Open file                                                             */
-    if (dos_open (name) < 0) {
-       printf ("Unable to open %s\n", name);
-       return 1;
-    }
-    if ((size = dos_read (load_addr)) < 0) {
-       printf ("boot error\n");
-       return 1;
-    }
-    flush_cache (load_addr, size);
-
-    setenv_hex("filesize", size);
-
-    printf("Floppy DOS load complete: %d bytes loaded to 0x%lx\n",
-          size, load_addr);
-
-    return bootm_maybe_autostart(cmdtp, argv[0]);
-}
-
-/*-----------------------------------------------------------------------------
- * do_fdosls --
- *-----------------------------------------------------------------------------
- */
-int do_fdosls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-    char *path = "";
-    int drive = CONFIG_SYS_FDC_DRIVE_NUMBER;
-
-    switch (argc) {
-    case 1:
-       break;
-    case 2:
-       path = argv [1];
-       break;
-    }
-
-    /* Init physical layer                                                   */
-    if (!fdc_fdos_init (drive)) {
-       return (-1);
-    }
-    /* Open directory                                                        */
-    if (dos_open (path) < 0) {
-       printf ("Unable to open %s\n", path);
-       return 1;
-    }
-    return (dos_dir ());
-}
-
-U_BOOT_CMD(
-       fdosboot,       3,      0,      do_fdosboot,
-       "boot from a dos floppy file",
-       "[loadAddr] [filename]"
-);
-
-U_BOOT_CMD(
-       fdosls, 2,      0,      do_fdosls,
-       "list files in a directory",
-       "[directory]"
-);
index 3a9edd6468c3b47d06fb51018be99651e51077c7..a6744ed9c2509eb14cb441df45d4cb64974f385c 100644 (file)
@@ -570,7 +570,7 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                ft_board_setup(working_fdt, gd->bd);
 #endif
        /* Create a chosen node */
-       else if (argv[1][0] == 'c') {
+       else if (strncmp(argv[1], "cho", 3) == 0) {
                unsigned long initrd_start = 0, initrd_end = 0;
 
                if ((argc != 2) && (argc != 4))
@@ -583,6 +583,41 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
                fdt_chosen(working_fdt, 1);
                fdt_initrd(working_fdt, initrd_start, initrd_end, 1);
+
+#if defined(CONFIG_FIT_SIGNATURE)
+       } else if (strncmp(argv[1], "che", 3) == 0) {
+               int cfg_noffset;
+               int ret;
+               unsigned long addr;
+               struct fdt_header *blob;
+
+               if (!working_fdt)
+                       return CMD_RET_FAILURE;
+
+               if (argc > 2) {
+                       addr = simple_strtoul(argv[2], NULL, 16);
+                       blob = map_sysmem(addr, 0);
+               } else {
+                       blob = (struct fdt_header *)gd->fdt_blob;
+               }
+               if (!fdt_valid(&blob))
+                       return 1;
+
+               gd->fdt_blob = blob;
+               cfg_noffset = fit_conf_get_node(working_fdt, NULL);
+               if (!cfg_noffset) {
+                       printf("Could not find configuration node: %s\n",
+                              fdt_strerror(cfg_noffset));
+                       return CMD_RET_FAILURE;
+               }
+
+               ret = fit_config_verify(working_fdt, cfg_noffset);
+               if (ret == 1)
+                       return CMD_RET_SUCCESS;
+               else
+                       return CMD_RET_FAILURE;
+#endif
+
        }
        /* resize the fdt */
        else if (strncmp(argv[1], "re", 2) == 0) {
@@ -992,6 +1027,11 @@ static char fdt_help_text[] =
        "fdt rsvmem delete <index>           - Delete a mem reserves\n"
        "fdt chosen [<start> <end>]          - Add/update the /chosen branch in the tree\n"
        "                                        <start>/<end> - initrd start/end addr\n"
+#if defined(CONFIG_FIT_SIGNATURE)
+       "fdt checksign [<addr>]              - check FIT signature\n"
+       "                                        <start> - addr of key blob\n"
+       "                                                  default gd->fdt_blob\n"
+#endif
        "NOTE: Dereference aliases by omiting the leading '/', "
                "e.g. fdt print ethernet0.";
 #endif
index 778aa5f0987baa732fce85a94672f5a39616fea8..aff044518f455e520ca7d9d8ea305ea32ad0d9c3 100644 (file)
 #include <dm.h>
 #include <asm/gpio.h>
 
-#ifndef name_to_gpio
-#define name_to_gpio(name) simple_strtoul(name, NULL, 10)
-#endif
+int __weak name_to_gpio(const char *name)
+{
+       return simple_strtoul(name, NULL, 10);
+}
 
 enum gpio_cmd {
        GPIO_INPUT,
index c4b35114587d09d8badcbb8703480d12d823b9f4..2dd750928e41ad39c2a924b38140c898f5c114e7 100644 (file)
@@ -22,7 +22,6 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        char *interface = argv[2];
        char *devstring = argv[3];
 
-       const char *s = "thor";
        int ret;
 
        puts("TIZEN \"THOR\" Downloader\n");
@@ -40,7 +39,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                goto exit;
        }
 
-       g_dnl_register(s);
+       g_dnl_register("usb_dnl_thor");
 
        ret = thor_init();
        if (ret) {
index 5f557d5f857df2916cc5f818abbd8ac1b5e08b1c..d8d9efd4f62b348b6ad553fbb95c1d50d3b824a4 100644 (file)
@@ -40,15 +40,19 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_FAILURE;
        }
 
-       g_dnl_register("ums");
+       g_dnl_register("usb_dnl_ums");
 
        /* Timeout unit: seconds */
        int cable_ready_timeout = UMS_CABLE_READY_TIMEOUT;
 
-       if (!usb_cable_connected()) {
+       if (!g_dnl_board_usb_cable_connected()) {
+               /*
+                * Won't execute if we don't know whether the cable is
+                * connected.
+                */
                puts("Please connect USB cable.\n");
 
-               while (!usb_cable_connected()) {
+               while (!g_dnl_board_usb_cable_connected()) {
                        if (ctrlc()) {
                                puts("\rCTRL+C - Operation aborted.\n");
                                goto exit;
index 7a388bb9fa10ac03915224110ebef119d9ae83e3..438e71afd2020b921e350ddf9ed7e2c6e1c98329 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -116,3 +116,46 @@ ddr3_spd_check(const ddr3_spd_eeprom_t *spd)
                return 1;
        }
 }
+
+unsigned int ddr4_spd_check(const struct ddr4_spd_eeprom_s *spd)
+{
+       char *p = (char *)spd;
+       int csum16;
+       int len;
+       char crc_lsb;   /* byte 126 */
+       char crc_msb;   /* byte 127 */
+
+       len = 126;
+       csum16 = crc16(p, len);
+
+       crc_lsb = (char) (csum16 & 0xff);
+       crc_msb = (char) (csum16 >> 8);
+
+       if (spd->crc[0] != crc_lsb || spd->crc[1] != crc_msb) {
+               printf("SPD checksum unexpected.\n"
+                       "Checksum lsb in SPD = %02X, computed SPD = %02X\n"
+                       "Checksum msb in SPD = %02X, computed SPD = %02X\n",
+                       spd->crc[0], crc_lsb, spd->crc[1], crc_msb);
+               return 1;
+       }
+
+       p = (char *)((ulong)spd + 128);
+       len = 126;
+       csum16 = crc16(p, len);
+
+       crc_lsb = (char) (csum16 & 0xff);
+       crc_msb = (char) (csum16 >> 8);
+
+       if (spd->mod_section.uc[126] != crc_lsb ||
+           spd->mod_section.uc[127] != crc_msb) {
+               printf("SPD checksum unexpected.\n"
+                       "Checksum lsb in SPD = %02X, computed SPD = %02X\n"
+                       "Checksum msb in SPD = %02X, computed SPD = %02X\n",
+                       spd->mod_section.uc[126],
+                       crc_lsb, spd->mod_section.uc[127],
+                       crc_msb);
+               return 1;
+       }
+
+       return 0;
+}
index c0bfc2f5db3b3efebb7c039747b54abc186c1acc..cd7b4cd1dfb7c3a59bfad6f1ae6c5fe5bb07dd8f 100644 (file)
@@ -140,6 +140,52 @@ int set_default_vars(int nvars, char * const vars[])
                                H_NOCLEAR | H_INTERACTIVE, nvars, vars);
 }
 
+#ifdef CONFIG_ENV_AES
+#include <aes.h>
+/**
+ * env_aes_cbc_get_key() - Get AES-128-CBC key for the environment
+ *
+ * This function shall return 16-byte array containing AES-128 key used
+ * to encrypt and decrypt the environment. This function must be overriden
+ * by the implementer as otherwise the environment encryption will not
+ * work.
+ */
+__weak uint8_t *env_aes_cbc_get_key(void)
+{
+       return NULL;
+}
+
+static int env_aes_cbc_crypt(env_t *env, const int enc)
+{
+       unsigned char *data = env->data;
+       uint8_t *key;
+       uint8_t key_exp[AES_EXPAND_KEY_LENGTH];
+       uint32_t aes_blocks;
+
+       key = env_aes_cbc_get_key();
+       if (!key)
+               return -EINVAL;
+
+       /* First we expand the key. */
+       aes_expand_key(key, key_exp);
+
+       /* Calculate the number of AES blocks to encrypt. */
+       aes_blocks = ENV_SIZE / AES_KEY_LENGTH;
+
+       if (enc)
+               aes_cbc_encrypt_blocks(key_exp, data, data, aes_blocks);
+       else
+               aes_cbc_decrypt_blocks(key_exp, data, data, aes_blocks);
+
+       return 0;
+}
+#else
+static inline int env_aes_cbc_crypt(env_t *env, const int enc)
+{
+       return 0;
+}
+#endif
+
 /*
  * Check if CRC is valid and (if yes) import the environment.
  * Note that "buf" may or may not be aligned.
@@ -147,6 +193,7 @@ int set_default_vars(int nvars, char * const vars[])
 int env_import(const char *buf, int check)
 {
        env_t *ep = (env_t *)buf;
+       int ret;
 
        if (check) {
                uint32_t crc;
@@ -159,6 +206,14 @@ int env_import(const char *buf, int check)
                }
        }
 
+       /* Decrypt the env if desired. */
+       ret = env_aes_cbc_crypt(ep, 0);
+       if (ret) {
+               error("Failed to decrypt env!\n");
+               set_default_env("!import failed");
+               return ret;
+       }
+
        if (himport_r(&env_htab, (char *)ep->data, ENV_SIZE, '\0', 0,
                        0, NULL)) {
                gd->flags |= GD_FLG_ENV_READY;
@@ -172,6 +227,30 @@ int env_import(const char *buf, int check)
        return 0;
 }
 
+/* Emport the environment and generate CRC for it. */
+int env_export(env_t *env_out)
+{
+       char *res;
+       ssize_t len;
+       int ret;
+
+       res = (char *)env_out->data;
+       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
+       if (len < 0) {
+               error("Cannot export environment: errno = %d\n", errno);
+               return 1;
+       }
+
+       /* Encrypt the env if desired. */
+       ret = env_aes_cbc_crypt(env_out, 1);
+       if (ret)
+               return ret;
+
+       env_out->crc = crc32(0, env_out->data, ENV_SIZE);
+
+       return 0;
+}
+
 void env_relocate(void)
 {
 #if defined(CONFIG_NEEDS_MANUAL_RELOC)
index b53b87e95874bb0c9299db2eb2d0bfab6b044aac..034e3231693e3b751dc41f6e181a9672f03d6540 100644 (file)
@@ -56,17 +56,12 @@ void env_relocate_spec(void)
 
 int saveenv(void)
 {
-       env_t   env_new;
-       ssize_t len;
-       char    *res;
-
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
+       env_t env_new;
+       int ret;
+
+       ret = env_export(&env_new);
+       if (ret)
+               return ret;
 
        return write_dataflash(CONFIG_ENV_ADDR,
                                (unsigned long)&env_new,
index 0db2bb63fe1d9671b7e586a88e9b4f08063fae37..490ac731b31da018a4c3e12d0941e71a35011ec9 100644 (file)
@@ -98,8 +98,6 @@ void env_relocate_spec(void)
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
-       char    *res;
        int     rc;
        unsigned int off        = CONFIG_ENV_OFFSET;
 #ifdef CONFIG_ENV_OFFSET_REDUND
@@ -109,13 +107,9 @@ int saveenv(void)
 
        BUG_ON(env_ptr != NULL);
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
+       rc = env_export(&env_new);
+       if (rc)
+               return rc;
 
 #ifdef CONFIG_ENV_OFFSET_REDUND
        if (gd->env_valid == 1) {
index 708fd13dc72b25eba1bb3e2a86c0fe7a4706f37d..aad0487c32805aea4ec94e488f498c842e18cef6 100644 (file)
@@ -37,19 +37,14 @@ int env_init(void)
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
-       char    *res;
        block_dev_desc_t *dev_desc = NULL;
        int dev = FAT_ENV_DEVICE;
        int part = FAT_ENV_PART;
        int err;
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
+       err = env_export(&env_new);
+       if (err)
+               return err;
 
 #ifdef CONFIG_MMC
        if (strcmp(FAT_ENV_INTERFACE, "mmc") == 0) {
@@ -79,7 +74,6 @@ int saveenv(void)
                return 1;
        }
 
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
        err = file_fat_write(FAT_ENV_FILE, (void *)&env_new, sizeof(env_t));
        if (err == -1) {
                printf("\n** Unable to write \"%s\" from %s%d:%d **\n",
index 7d5a4cfc8aa31d58e0ddf8d79061b87e27dc5b21..004e8849a7dd23508dd790a41e3298f92b167c43 100644 (file)
@@ -106,8 +106,7 @@ int env_init(void)
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
-       char    *res, *saved_data = NULL;
+       char    *saved_data = NULL;
        char    flag = OBSOLETE_FLAG, new_flag = ACTIVE_FLAG;
        int     rc = 1;
 #if CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE
@@ -125,13 +124,9 @@ int saveenv(void)
        if (flash_sect_protect(0, (ulong)flash_addr_new, end_addr_new))
                goto done;
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               goto done;
-       }
-       env_new.crc     = crc32(0, env_new.data, ENV_SIZE);
+       rc = env_export(&env_new);
+       if (rc)
+               return rc;
        env_new.flags   = new_flag;
 
 #if CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE
@@ -229,9 +224,8 @@ int env_init(void)
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
        int     rc = 1;
-       char    *res, *saved_data = NULL;
+       char    *saved_data = NULL;
 #if CONFIG_ENV_SECT_SIZE > CONFIG_ENV_SIZE
        ulong   up_data = 0;
 
@@ -258,13 +252,9 @@ int saveenv(void)
        if (flash_sect_protect(0, (long)flash_addr, end_addr))
                goto done;
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
+       rc = env_export(&env_new);
+       if (rc)
                goto done;
-       }
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
 
        puts("Erasing Flash...");
        if (flash_sect_erase((long)flash_addr, end_addr))
index f47bd777256f0bdee6252d69eaa940010620f1d0..7da10e61afbba4733fddf5bbbcd11f0006a396b0 100644 (file)
@@ -129,8 +129,6 @@ static unsigned char env_flags;
 int saveenv(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
-       ssize_t len;
-       char    *res;
        struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
        u32     offset;
        int     ret, copy = 0;
@@ -138,15 +136,9 @@ int saveenv(void)
        if (init_mmc_for_env(mmc))
                return 1;
 
-       res = (char *)&env_new->data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               ret = 1;
+       ret = env_export(env_new);
+       if (ret)
                goto fini;
-       }
-
-       env_new->crc = crc32(0, &env_new->data[0], ENV_SIZE);
 
 #ifdef CONFIG_ENV_OFFSET_REDUND
        env_new->flags  = ++env_flags; /* increase the serial */
index 695a9eebb01e68e3f11a7a545d96ac68507eebbc..5a734a9321a9400a73ee8024f29bcdb17d546ee6 100644 (file)
@@ -181,8 +181,6 @@ int saveenv(void)
 {
        int     ret = 0;
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
-       ssize_t len;
-       char    *res;
        int     env_idx = 0;
        static const struct env_location location[] = {
                {
@@ -207,13 +205,10 @@ int saveenv(void)
        if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)
                return 1;
 
-       res = (char *)&env_new->data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
-       env_new->crc   = crc32(0, env_new->data, ENV_SIZE);
+       ret = env_export(env_new);
+       if (ret)
+               return ret;
+
 #ifdef CONFIG_ENV_OFFSET_REDUND
        env_new->flags = ++env_flags; /* increase the serial */
        env_idx = (gd->env_valid == 1);
index 0866cde924b658f37419e42df61624afefb9e297..524f07d5f8967460ac37dd7eb453f385f54cafc8 100644 (file)
@@ -69,17 +69,11 @@ void env_relocate_spec(void)
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
-       char    *res;
        int     rcode = 0;
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
+       rcode = env_export(&env_new);
+       if (rcode)
+               return rcode;
 
 #ifdef CONFIG_SYS_NVRAM_ACCESS_ROUTINE
        nvram_write(CONFIG_ENV_ADDR, &env_new, CONFIG_ENV_SIZE);
index 4b4463218092fc48e29c5dce2dd67fb1c90d216a..cc3d670de83d4314834695c86ef8ab654f56a8fd 100644 (file)
@@ -66,8 +66,7 @@ void env_relocate_spec(void)
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
-       char    *res;
+       int ret;
        struct mtd_info *mtd = &onenand_mtd;
 #ifdef CONFIG_ENV_ADDR_FLEX
        struct onenand_chip *this = &onenand_chip;
@@ -78,13 +77,9 @@ int saveenv(void)
                .callback       = NULL,
        };
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
+       ret = env_export(&env_new);
+       if (ret)
+               return ret;
 
        instr.len = CONFIG_ENV_SIZE;
 #ifdef CONFIG_ENV_ADDR_FLEX
index be270f21bcf6577ae44bd1d394817c5eb609fb01..37ab13ae17842309339fa9a70a42e49b8669207e 100644 (file)
@@ -47,8 +47,7 @@ static struct spi_flash *env_flash;
 int saveenv(void)
 {
        env_t   env_new;
-       ssize_t len;
-       char    *res, *saved_buffer = NULL, flag = OBSOLETE_FLAG;
+       char    *saved_buffer = NULL, flag = OBSOLETE_FLAG;
        u32     saved_size, saved_offset, sector = 1;
        int     ret;
 
@@ -62,13 +61,9 @@ int saveenv(void)
                }
        }
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
-       env_new.crc     = crc32(0, env_new.data, ENV_SIZE);
+       ret = env_export(&env_new);
+       if (ret)
+               return ret;
        env_new.flags   = ACTIVE_FLAG;
 
        if (gd->env_valid == 1) {
@@ -225,10 +220,9 @@ out:
 int saveenv(void)
 {
        u32     saved_size, saved_offset, sector = 1;
-       char    *res, *saved_buffer = NULL;
+       char    *saved_buffer = NULL;
        int     ret = 1;
        env_t   env_new;
-       ssize_t len;
 
        if (!env_flash) {
                env_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS,
@@ -260,13 +254,9 @@ int saveenv(void)
                        sector++;
        }
 
-       res = (char *)&env_new.data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
+       ret = env_export(&env_new);
+       if (ret)
                goto done;
-       }
-       env_new.crc = crc32(0, env_new.data, ENV_SIZE);
 
        puts("Erasing SPI flash...");
        ret = spi_flash_erase(env_flash, CONFIG_ENV_OFFSET,
index c0828a47d3214131c9156157fe7c53aaf5f2e6cd..77bbfa6ef43caf051ba5166dd8045944e6e7a821 100644 (file)
@@ -37,15 +37,11 @@ static unsigned char env_flags;
 int saveenv(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
-       ssize_t len;
-       char *res;
+       int ret;
 
-       res = (char *)&env_new->data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
+       ret = env_export(env_new);
+       if (ret)
+               return ret;
 
        if (ubi_part(CONFIG_ENV_UBI_PART, NULL)) {
                printf("\n** Cannot find mtd partition \"%s\"\n",
@@ -53,7 +49,6 @@ int saveenv(void)
                return 1;
        }
 
-       env_new->crc = crc32(0, env_new->data, ENV_SIZE);
        env_new->flags = ++env_flags; /* increase the serial */
 
        if (gd->env_valid == 1) {
@@ -86,15 +81,11 @@ int saveenv(void)
 int saveenv(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
-       ssize_t len;
-       char *res;
+       int ret;
 
-       res = (char *)&env_new->data;
-       len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
-       if (len < 0) {
-               error("Cannot export environment: errno = %d\n", errno);
-               return 1;
-       }
+       ret = env_export(env_new);
+       if (ret)
+               return ret;
 
        if (ubi_part(CONFIG_ENV_UBI_PART, NULL)) {
                printf("\n** Cannot find mtd partition \"%s\"\n",
@@ -102,8 +93,6 @@ int saveenv(void)
                return 1;
        }
 
-       env_new->crc = crc32(0, env_new->data, ENV_SIZE);
-
        if (ubi_volume_write(CONFIG_ENV_UBI_VOLUME, (void *)env_new,
                             CONFIG_ENV_SIZE)) {
                printf("\n** Unable to write env to %s:%s **\n",
index f9f358e7e8308e17dd76a6268558f45f3fa0d570..fcd252336cdf15d8cebe503e4025ef2f07d41b09 100644 (file)
@@ -49,6 +49,37 @@ static void write_cell(u8 *addr, u64 val, int size)
        }
 }
 
+/**
+ * fdt_getprop_u32_default_node - Return a node's property or a default
+ *
+ * @fdt: ptr to device tree
+ * @off: offset of node
+ * @cell: cell offset in property
+ * @prop: property name
+ * @dflt: default value if the property isn't found
+ *
+ * Convenience function to return a node's property or a default value if
+ * the property doesn't exist.
+ */
+u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell,
+                               const char *prop, const u32 dflt)
+{
+       const fdt32_t *val;
+       int len;
+
+       val = fdt_getprop(fdt, off, prop, &len);
+
+       /* Check if property exists */
+       if (!val)
+               return dflt;
+
+       /* Check if property is long enough */
+       if (len < ((cell + 1) * sizeof(uint32_t)))
+               return dflt;
+
+       return fdt32_to_cpu(*val);
+}
+
 /**
  * fdt_getprop_u32_default - Find a node and return it's property or a default
  *
@@ -63,18 +94,13 @@ static void write_cell(u8 *addr, u64 val, int size)
 u32 fdt_getprop_u32_default(const void *fdt, const char *path,
                                const char *prop, const u32 dflt)
 {
-       const fdt32_t *val;
        int off;
 
        off = fdt_path_offset(fdt, path);
        if (off < 0)
                return dflt;
 
-       val = fdt_getprop(fdt, off, prop, NULL);
-       if (val)
-               return fdt32_to_cpu(*val);
-       else
-               return dflt;
+       return fdt_getprop_u32_default_node(fdt, off, 0, prop, dflt);
 }
 
 /**
@@ -1409,3 +1435,97 @@ u64 fdt_get_base_address(void *fdt, int node)
 
        return prop ? fdt_translate_address(fdt, node, prop + naddr) : 0;
 }
+
+/*
+ * Read a property of size <prop_len>. Currently only supports 1 or 2 cells.
+ */
+static int fdt_read_prop(const fdt32_t *prop, int prop_len, int cell_off,
+                        uint64_t *val, int cells)
+{
+       const fdt32_t *prop32 = &prop[cell_off];
+       const fdt64_t *prop64 = (const fdt64_t *)&prop[cell_off];
+
+       if ((cell_off + cells) > prop_len)
+               return -FDT_ERR_NOSPACE;
+
+       switch (cells) {
+       case 1:
+               *val = fdt32_to_cpu(*prop32);
+               break;
+       case 2:
+               *val = fdt64_to_cpu(*prop64);
+               break;
+       default:
+               return -FDT_ERR_NOSPACE;
+       }
+
+       return 0;
+}
+
+/**
+ * fdt_read_range - Read a node's n'th range property
+ *
+ * @fdt: ptr to device tree
+ * @node: offset of node
+ * @n: range index
+ * @child_addr: pointer to storage for the "child address" field
+ * @addr: pointer to storage for the CPU view translated physical start
+ * @len: pointer to storage for the range length
+ *
+ * Convenience function that reads and interprets a specific range out of
+ * a number of the "ranges" property array.
+ */
+int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
+                  uint64_t *addr, uint64_t *len)
+{
+       int pnode = fdt_parent_offset(fdt, node);
+       const fdt32_t *ranges;
+       int pacells;
+       int acells;
+       int scells;
+       int ranges_len;
+       int cell = 0;
+       int r = 0;
+
+       /*
+        * The "ranges" property is an array of
+        * { <child address> <parent address> <size in child address space> }
+        *
+        * All 3 elements can span a diffent number of cells. Fetch their size.
+        */
+       pacells = fdt_getprop_u32_default_node(fdt, pnode, 0, "#address-cells", 1);
+       acells = fdt_getprop_u32_default_node(fdt, node, 0, "#address-cells", 1);
+       scells = fdt_getprop_u32_default_node(fdt, node, 0, "#size-cells", 1);
+
+       /* Now try to get the ranges property */
+       ranges = fdt_getprop(fdt, node, "ranges", &ranges_len);
+       if (!ranges)
+               return -FDT_ERR_NOTFOUND;
+       ranges_len /= sizeof(uint32_t);
+
+       /* Jump to the n'th entry */
+       cell = n * (pacells + acells + scells);
+
+       /* Read <child address> */
+       if (child_addr) {
+               r = fdt_read_prop(ranges, ranges_len, cell, child_addr,
+                                 acells);
+               if (r)
+                       return r;
+       }
+       cell += acells;
+
+       /* Read <parent address> */
+       if (addr)
+               *addr = fdt_translate_address(fdt, node, ranges + cell);
+       cell += pacells;
+
+       /* Read <size in child address space> */
+       if (len) {
+               r = fdt_read_prop(ranges, ranges_len, cell, len, scells);
+               if (r)
+                       return r;
+       }
+
+       return 0;
+}
index 872cd8542800895cd94f13d5290fd1a82c3e9cf7..7627b84b451421a599f378511eccd71639e450fe 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <malloc.h>
 #include <hw_sha.h>
 #include <hash.h>
 #include <sha1.h>
 #include <asm/io.h>
 #include <asm/errno.h>
 
+#ifdef CONFIG_CMD_SHA1SUM
+static int hash_init_sha1(struct hash_algo *algo, void **ctxp)
+{
+       sha1_context *ctx = malloc(sizeof(sha1_context));
+       sha1_starts(ctx);
+       *ctxp = ctx;
+       return 0;
+}
+
+static int hash_update_sha1(struct hash_algo *algo, void *ctx, const void *buf,
+                           unsigned int size, int is_last)
+{
+       sha1_update((sha1_context *)ctx, buf, size);
+       return 0;
+}
+
+static int hash_finish_sha1(struct hash_algo *algo, void *ctx, void *dest_buf,
+                           int size)
+{
+       if (size < algo->digest_size)
+               return -1;
+
+       sha1_finish((sha1_context *)ctx, dest_buf);
+       free(ctx);
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_SHA256
+static int hash_init_sha256(struct hash_algo *algo, void **ctxp)
+{
+       sha256_context *ctx = malloc(sizeof(sha256_context));
+       sha256_starts(ctx);
+       *ctxp = ctx;
+       return 0;
+}
+
+static int hash_update_sha256(struct hash_algo *algo, void *ctx,
+                             const void *buf, unsigned int size, int is_last)
+{
+       sha256_update((sha256_context *)ctx, buf, size);
+       return 0;
+}
+
+static int hash_finish_sha256(struct hash_algo *algo, void *ctx, void
+                             *dest_buf, int size)
+{
+       if (size < algo->digest_size)
+               return -1;
+
+       sha256_finish((sha256_context *)ctx, dest_buf);
+       free(ctx);
+       return 0;
+}
+#endif
+
+static int hash_init_crc32(struct hash_algo *algo, void **ctxp)
+{
+       uint32_t *ctx = malloc(sizeof(uint32_t));
+       *ctx = 0;
+       *ctxp = ctx;
+       return 0;
+}
+
+static int hash_update_crc32(struct hash_algo *algo, void *ctx,
+                            const void *buf, unsigned int size, int is_last)
+{
+       *((uint32_t *)ctx) = crc32(*((uint32_t *)ctx), buf, size);
+       return 0;
+}
+
+static int hash_finish_crc32(struct hash_algo *algo, void *ctx, void *dest_buf,
+                            int size)
+{
+       if (size < algo->digest_size)
+               return -1;
+
+       *((uint32_t *)dest_buf) = *((uint32_t *)ctx);
+       free(ctx);
+       return 0;
+}
+
 /*
  * These are the hash algorithms we support. Chips which support accelerated
  * crypto could perhaps add named version of these algorithms here. Note that
@@ -53,6 +136,9 @@ static struct hash_algo hash_algo[] = {
                SHA1_SUM_LEN,
                sha1_csum_wd,
                CHUNKSZ_SHA1,
+               hash_init_sha1,
+               hash_update_sha1,
+               hash_finish_sha1,
        },
 #define MULTI_HASH
 #endif
@@ -62,6 +148,9 @@ static struct hash_algo hash_algo[] = {
                SHA256_SUM_LEN,
                sha256_csum_wd,
                CHUNKSZ_SHA256,
+               hash_init_sha256,
+               hash_update_sha256,
+               hash_finish_sha256,
        },
 #define MULTI_HASH
 #endif
@@ -70,6 +159,9 @@ static struct hash_algo hash_algo[] = {
                4,
                crc32_wd_buf,
                CHUNKSZ_CRC32,
+               hash_init_crc32,
+               hash_update_crc32,
+               hash_finish_crc32,
        },
 };
 
@@ -204,16 +296,19 @@ static int parse_verify_sum(struct hash_algo *algo, char *verify_str, u8 *vsum,
        return 0;
 }
 
-static struct hash_algo *find_hash_algo(const char *name)
+int hash_lookup_algo(const char *algo_name, struct hash_algo **algop)
 {
        int i;
 
        for (i = 0; i < ARRAY_SIZE(hash_algo); i++) {
-               if (!strcmp(name, hash_algo[i].name))
-                       return &hash_algo[i];
+               if (!strcmp(algo_name, hash_algo[i].name)) {
+                       *algop = &hash_algo[i];
+                       return 0;
+               }
        }
 
-       return NULL;
+       debug("Unknown hash algorithm '%s'\n", algo_name);
+       return -EPROTONOSUPPORT;
 }
 
 static void show_hash(struct hash_algo *algo, ulong addr, ulong len,
@@ -230,12 +325,12 @@ int hash_block(const char *algo_name, const void *data, unsigned int len,
               uint8_t *output, int *output_size)
 {
        struct hash_algo *algo;
+       int ret;
+
+       ret = hash_lookup_algo(algo_name, &algo);
+       if (ret)
+               return ret;
 
-       algo = find_hash_algo(algo_name);
-       if (!algo) {
-               debug("Unknown hash algorithm '%s'\n", algo_name);
-               return -EPROTONOSUPPORT;
-       }
        if (output_size && *output_size < algo->digest_size) {
                debug("Output buffer size %d too small (need %d bytes)",
                      *output_size, algo->digest_size);
@@ -265,8 +360,7 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
                u8 vsum[HASH_MAX_DIGEST_SIZE];
                void *buf;
 
-               algo = find_hash_algo(algo_name);
-               if (!algo) {
+               if (hash_lookup_algo(algo_name, &algo)) {
                        printf("Unknown hash algorithm '%s'\n", algo_name);
                        return CMD_RET_USAGE;
                }
index b94a3fe86dc3469bf651f09980b3d366b573cb04..77f32bce316fe41e74e630e5ae6488262988ec06 100644 (file)
@@ -22,6 +22,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #include <bootstage.h>
 #include <sha1.h>
+#include <sha256.h>
 #include <u-boot/crc.h>
 #include <u-boot/md5.h>
 
@@ -882,6 +883,10 @@ int calculate_hash(const void *data, int data_len, const char *algo,
                sha1_csum_wd((unsigned char *)data, data_len,
                             (unsigned char *)value, CHUNKSZ_SHA1);
                *value_len = 20;
+       } else if (IMAGE_ENABLE_SHA256 && strcmp(algo, "sha256") == 0) {
+               sha256_csum_wd((unsigned char *)data, data_len,
+                              (unsigned char *)value, CHUNKSZ_SHA256);
+               *value_len = SHA256_SUM_LEN;
        } else if (IMAGE_ENABLE_MD5 && strcmp(algo, "md5") == 0) {
                md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5);
                *value_len = 16;
index 973b06d505f174177c3ea634af38b86c4eddb6d5..72284eb1d1fd00947863c63b55b1a3f3ece6f8c0 100644 (file)
@@ -14,16 +14,79 @@ DECLARE_GLOBAL_DATA_PTR;
 #endif /* !USE_HOSTCC*/
 #include <image.h>
 #include <rsa.h>
+#include <rsa-checksum.h>
 
 #define IMAGE_MAX_HASHED_NODES         100
 
+#ifdef USE_HOSTCC
+void *host_blob;
+void image_set_host_blob(void *blob)
+{
+       host_blob = blob;
+}
+void *image_get_host_blob(void)
+{
+       return host_blob;
+}
+#endif
+
+struct checksum_algo checksum_algos[] = {
+       {
+               "sha1",
+               SHA1_SUM_LEN,
+               RSA2048_BYTES,
+#if IMAGE_ENABLE_SIGN
+               EVP_sha1,
+#endif
+               sha1_calculate,
+               padding_sha1_rsa2048,
+       },
+       {
+               "sha256",
+               SHA256_SUM_LEN,
+               RSA2048_BYTES,
+#if IMAGE_ENABLE_SIGN
+               EVP_sha256,
+#endif
+               sha256_calculate,
+               padding_sha256_rsa2048,
+       },
+       {
+               "sha256",
+               SHA256_SUM_LEN,
+               RSA4096_BYTES,
+#if IMAGE_ENABLE_SIGN
+               EVP_sha256,
+#endif
+               sha256_calculate,
+               padding_sha256_rsa4096,
+       }
+
+};
+
 struct image_sig_algo image_sig_algos[] = {
        {
                "sha1,rsa2048",
                rsa_sign,
                rsa_add_verify_data,
                rsa_verify,
+               &checksum_algos[0],
+       },
+       {
+               "sha256,rsa2048",
+               rsa_sign,
+               rsa_add_verify_data,
+               rsa_verify,
+               &checksum_algos[1],
+       },
+       {
+               "sha256,rsa4096",
+               rsa_sign,
+               rsa_add_verify_data,
+               rsa_verify,
+               &checksum_algos[2],
        }
+
 };
 
 struct image_sig_algo *image_get_sig_algo(const char *name)
index 8b6f274fa25f723fd2553c1c61a2a32606a90f1a..e54f63b95626615001f5deee9756362675346934 100644 (file)
@@ -427,6 +427,12 @@ void main_loop(void)
 
        bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop");
 
+#ifndef CONFIG_SYS_GENERIC_BOARD
+       puts("Warning: Your board does not use generic board. Please read\n");
+       puts("doc/README.generic-board and take action. Boards not\n");
+       puts("upgraded by the late 2014 may break or be removed.\n");
+#endif
+
 #ifdef CONFIG_MODEM_SUPPORT
        debug("DEBUG: main_loop:   do_mdm_init=%d\n", do_mdm_init);
        if (do_mdm_init) {
index 1ad67caf13c554c6fd0eb34945f41b3a20f736bc..0b77c16c5ffc5c05cef1137900ff8caf8b565528 100644 (file)
@@ -91,6 +91,12 @@ static const unsigned char usb_kbd_arrow[] = {
 #define USB_KBD_LEDMASK                \
        (USB_KBD_NUMLOCK | USB_KBD_CAPSLOCK | USB_KBD_SCROLLLOCK)
 
+/*
+ * USB Keyboard reports are 8 bytes in boot protocol.
+ * Appendix B of HID Device Class Definition 1.11
+ */
+#define USB_KBD_BOOT_REPORT_SIZE 8
+
 struct usb_kbd_pdata {
        uint32_t        repeat_delay;
 
@@ -99,7 +105,7 @@ struct usb_kbd_pdata {
        uint8_t         usb_kbd_buffer[USB_KBD_BUFFER_LEN];
 
        uint8_t         *new;
-       uint8_t         old[8];
+       uint8_t         old[USB_KBD_BOOT_REPORT_SIZE];
 
        uint8_t         flags;
 };
@@ -131,7 +137,8 @@ void usb_kbd_generic_poll(void)
        /* Submit a interrupt transfer request */
        maxp = usb_maxpacket(usb_kbd_dev, pipe);
        usb_submit_int_msg(usb_kbd_dev, pipe, data->new,
-                       maxp > 8 ? 8 : maxp, ep->bInterval);
+               min(maxp, USB_KBD_BOOT_REPORT_SIZE),
+               ep->bInterval);
 }
 
 /* Puts character in the queue and sets up the in and out pointer. */
@@ -266,8 +273,11 @@ static uint32_t usb_kbd_service_key(struct usb_device *dev, int i, int up)
                old = data->old;
        }
 
-       if ((old[i] > 3) && (memscan(new + 2, old[i], 6) == new + 8))
+       if ((old[i] > 3) &&
+           (memscan(new + 2, old[i], USB_KBD_BOOT_REPORT_SIZE - 2) ==
+                       new + USB_KBD_BOOT_REPORT_SIZE)) {
                res |= usb_kbd_translate(data, old[i], data->new[0], up);
+       }
 
        return res;
 }
@@ -285,7 +295,7 @@ static int usb_kbd_irq_worker(struct usb_device *dev)
        else if ((data->new[0] == LEFT_CNTR) || (data->new[0] == RIGHT_CNTR))
                data->flags |= USB_KBD_CTRL;
 
-       for (i = 2; i < 8; i++) {
+       for (i = 2; i < USB_KBD_BOOT_REPORT_SIZE; i++) {
                res |= usb_kbd_service_key(dev, i, 0);
                res |= usb_kbd_service_key(dev, i, 1);
        }
@@ -297,7 +307,7 @@ static int usb_kbd_irq_worker(struct usb_device *dev)
        if (res == 1)
                usb_kbd_setled(dev);
 
-       memcpy(data->old, data->new, 8);
+       memcpy(data->old, data->new, USB_KBD_BOOT_REPORT_SIZE);
 
        return 1;
 }
@@ -305,7 +315,8 @@ static int usb_kbd_irq_worker(struct usb_device *dev)
 /* Keyboard interrupt handler */
 static int usb_kbd_irq(struct usb_device *dev)
 {
-       if ((dev->irq_status != 0) || (dev->irq_act_len != 8)) {
+       if ((dev->irq_status != 0) ||
+           (dev->irq_act_len != USB_KBD_BOOT_REPORT_SIZE)) {
                debug("USB KBD: Error %lX, len %d\n",
                      dev->irq_status, dev->irq_act_len);
                return 1;
@@ -333,7 +344,8 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev)
        /* Submit a interrupt transfer request */
        maxp = usb_maxpacket(dev, pipe);
        usb_submit_int_msg(dev, pipe, &data->new[0],
-                       maxp > 8 ? 8 : maxp, ep->bInterval);
+               min(maxp, USB_KBD_BOOT_REPORT_SIZE),
+               ep->bInterval);
 
        usb_kbd_irq_worker(dev);
 #elif  defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP)
@@ -341,8 +353,8 @@ static inline void usb_kbd_poll_for_event(struct usb_device *dev)
        struct usb_kbd_pdata *data = dev->privptr;
        iface = &dev->config.if_desc[0];
        usb_get_report(dev, iface->desc.bInterfaceNumber,
-                       1, 0, data->new, sizeof(data->new));
-       if (memcmp(data->old, data->new, sizeof(data->new)))
+                      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);
 #endif
 }
@@ -441,7 +453,8 @@ static int usb_kbd_probe(struct usb_device *dev, unsigned int ifnum)
        memset(data, 0, sizeof(struct usb_kbd_pdata));
 
        /* allocate input buffer aligned and sized to USB DMA alignment */
-       data->new = memalign(USB_DMA_MINALIGN, roundup(8, USB_DMA_MINALIGN));
+       data->new = memalign(USB_DMA_MINALIGN,
+               roundup(USB_KBD_BOOT_REPORT_SIZE, USB_DMA_MINALIGN));
 
        /* Insert private data into USB device structure */
        dev->privptr = data;
@@ -459,7 +472,8 @@ 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, maxp > 8 ? 8 : maxp,
+       if (usb_submit_int_msg(dev, pipe, data->new,
+                              min(maxp, USB_KBD_BOOT_REPORT_SIZE),
                               ep->bInterval) < 0) {
                printf("Failed to get keyboard state from device %04x:%04x\n",
                       dev->descriptor.idVendor, dev->descriptor.idProduct);
index 720f245ceb1f34dcf2f01c9607291db14a118d40..7ebd5465d9277ce250d4cfd97c17295da75afb6a 100644 (file)
@@ -10,5 +10,6 @@
 *.out
 *.png
 *.gif
+*.svg
 media-indices.tmpl
 media-entities.tmpl
index 9b4a9b6762f5f41c4760b8be4ea2ffe6005f15b8..593237f04ae2dea836cdd4fff3d64fe9cddb782c 100644 (file)
@@ -26,6 +26,7 @@ PS_METHOD     = $(prefer-db2x)
 # The targets that may be used.
 PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs
 
+targets += $(DOCBOOKS)
 BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
 xmldocs: $(BOOKS)
 sgmldocs: xmldocs
@@ -44,17 +45,18 @@ htmldocs: $(HTML)
 
 MAN := $(patsubst %.xml, %.9, $(BOOKS))
 mandocs: $(MAN)
+       $(if $(wildcard $(obj)/man/*.9),gzip -f $(obj)/man/*.9)
 
 installmandocs: mandocs
        mkdir -p /usr/local/man/man9/
-       install doc/DocBook/man/*.9.gz /usr/local/man/man9/
+       install $(obj)/man/*.9.gz /usr/local/man/man9/
 
 ###
 #External programs used
 KERNELDOC = $(srctree)/scripts/kernel-doc
 DOCPROC   = $(objtree)/scripts/docproc
 
-XMLTOFLAGS = -m $(srctree)/doc/DocBook/stylesheet.xsl
+XMLTOFLAGS = -m $(srctree)/$(src)/stylesheet.xsl
 XMLTOFLAGS += --skip-validation
 
 ###
@@ -76,21 +78,9 @@ define rule_docproc
         ) > $(dir $@).$(notdir $@).cmd
 endef
 
-%.xml: %.tmpl FORCE
+%.xml: %.tmpl $(KERNELDOC) $(DOCPROC) FORCE
        $(call if_changed_rule,docproc)
 
-###
-#Read in all saved dependency files
-cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd))
-
-ifneq ($(cmd_files),)
-  include $(cmd_files)
-endif
-
-###
-# Changes in kernel-doc force a rebuild of all documentation
-$(BOOKS): $(KERNELDOC)
-
 # Tell kbuild to always build the programs
 always := $(hostprogs-y)
 
@@ -128,16 +118,16 @@ quiet_cmd_db2pdf = PDF     $@
 
 
 index = index.html
-main_idx = doc/DocBook/$(index)
+main_idx = $(obj)/$(index)
 build_main_index = rm -rf $(main_idx); \
                   echo '<h1>U-Boot Bootloader HTML Documentation</h1>' >> $(main_idx) && \
                   echo '<h2>U-Boot Version: $(UBOOTVERSION)</h2>' >> $(main_idx) && \
                   cat $(HTML) >> $(main_idx)
 
 quiet_cmd_db2html = HTML    $@
-      cmd_db2html = xmlto xhtml $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \
+      cmd_db2html = xmlto html $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \
                echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/index.html"> \
-        $(patsubst %.html,%,$(notdir $@))</a><p>' > $@
+               $(patsubst %.html,%,$(notdir $@))</a><p>' > $@
 
 %.html:        %.xml
        @(which xmlto > /dev/null 2>&1) || \
@@ -149,7 +139,7 @@ quiet_cmd_db2html = HTML    $@
             cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
 
 quiet_cmd_db2man = MAN     $@
-      cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; gzip -f $(obj)/man/*.9; fi
+      cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; fi
 %.9 : %.xml
        @(which xmlto > /dev/null 2>&1) || \
         (echo "*** You need to install xmlto ***"; \
index 3da77d9f0f83a000e1676cf00d11c553cc4ed046..eada0c7dd89b55d7be39bc500c241dd491e6eaa4 100644 (file)
@@ -328,3 +328,39 @@ The below commands apply to both B4860QDS and B4420QDS.
    On Linux the interfaces are renamed as:
        . eth2 -> fm1-gb2
        . eth3 -> fm1-gb3
+
+NAND boot with 2 Stage boot loader
+----------------------------------
+PBL initialise the internal SRAM and copy SPL(160KB) in SRAM.
+SPL further initialise DDR using SPD and environment variables and copy
+u-boot(768 KB) from flash to DDR.
+Finally SPL transer control to u-boot for futher booting.
+
+SPL has following features:
+ - Executes within 256K
+ - No relocation required
+
+ Run time view of SPL framework during  boot :-
+ -----------------------------------------------
+ Area        | Address                         |
+-----------------------------------------------
+ Secure boot | 0xFFFC0000 (32KB)               |
+ headers     |                                 |
+ -----------------------------------------------
+ GD, BD      | 0xFFFC8000 (4KB)                |
+ -----------------------------------------------
+ ENV         | 0xFFFC9000 (8KB)                |
+ -----------------------------------------------
+ HEAP        | 0xFFFCB000 (30KB)               |
+ -----------------------------------------------
+ STACK       | 0xFFFD8000 (22KB)               |
+ -----------------------------------------------
+ U-boot SPL  | 0xFFFD8000 (160KB)              |
+ -----------------------------------------------
+
+NAND Flash memory Map on B4860 and B4420QDS
+------------------------------------------
+ Start          End            Definition                      Size
+0x000000       0x0FFFFF        u-boot                          1MB
+0x140000       0x15FFFF        u-boot env                      128KB
+0x1A0000       0x1BFFFF        FMAN Ucode                      128KB
index c9ef59e9a5f6b6b4e0394c2450d4cd41cc256e92..aadf596a8a89ddddff94e6f9e3d98ba83b9eba72 100644 (file)
@@ -25,7 +25,7 @@ stdout or stderr) to any device you see in that list simply by
 assigning its name to the corresponding environment variable. For
 example:
 
-    setenv stdin wl_kbd                <- To use the wireless keyboard
+    setenv stdin serial                <- To use the serial input
     setenv stdout video                <- To use the video console
 
 Do a simple "saveenv" to save the console settings in the environment
@@ -99,4 +99,3 @@ The driver has been tested with the following configurations (see
 CREDITS for other contact informations):
 
 - MPC823FADS with AD7176 on a PAL TV (YCbYCr)  - arsenio@tin.it
-- GENIETV    with AD7177 on a PAL TV (YCbYCr)  - arsenio@tin.it
diff --git a/doc/README.generic-board b/doc/README.generic-board
new file mode 100644 (file)
index 0000000..50d3a26
--- /dev/null
@@ -0,0 +1,189 @@
+#
+# (C) Copyright 2014 Google, Inc
+# Simon Glass <sjg@chromium.org>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+DEPRECATION NOTICE FOR arch/<arch>/lib/board.c
+
+For board maintainers: Please submit patches for boards you maintain before
+July 2014, to make them use generic board.
+
+For architecture maintainers: Please submit patches to remove your
+architecture-specific board.c file before October 2014.
+
+
+Background
+----------
+
+U-Boot has tranditionally had a board.c file for each architecture. This has
+introduced quite a lot of duplication, with each architecture tending to do
+initialisation slightly differently. To address this, a new 'generic board
+init' feature was introduced a year ago in March 2013 (further motivation is
+provided in the cover letter below).
+
+
+What has changed?
+-----------------
+
+The main change is that the arch/<arch>/lib/board.c file is being removed in
+favour of common/board_f.c (for pre-relocation init) and common/board_r.c
+(for post-relocation init).
+
+Related to this, the global_data and bd_t structures now have a core set of
+fields which are common to all architectures. Architecture-specific fields
+have been moved to separate structures.
+
+
+Supported Arcthitectures
+------------------------
+
+If you are unlucky then your architecture may not support generic board.
+The following architectures are supported at the time of writing:
+
+   arc
+   arm
+   powerpc
+   sandbox
+   x86
+
+If your architecture is not supported, you need to adjust your
+arch/<arch>/config.mk file to include:
+
+   __HAVE_ARCH_GENERIC_BOARD := y
+
+and test it with a suitable board, as follows.
+
+
+Adding Support for your Board
+-----------------------------
+
+To enable generic board for your board, define CONFIG_SYS_GENERIC_BOARD in
+your board config header file.
+
+Test that U-Boot still functions correctly on your board, and fix any
+problems you find. Don't be surprised if there are no problems - generic
+board has had a reasonable amount of testing with common boards.
+
+
+DeadLine
+--------
+
+Please don't take this the wrong way - there is no intent to make your life
+miserable, and we have the greatest respect and admiration for U-Boot users.
+However, with any migration there has to be a period where the old way is
+deprecated and removed. Every patch to the deprecated code introduces a
+potential breakage in the new unused code. Therefore:
+
+Boards or architectures not converted over to general board by the
+end of 2014 may be forcibly changed over (potentially causing run-time
+breakage) or removed.
+
+
+
+Further Background
+------------------
+
+The full text of the original generic board series is reproduced below.
+
+--8<-------------
+
+This series creates a generic board.c implementation which contains
+the essential functions of the major arch/xxx/lib/board.c files.
+
+What is the motivation for this change?
+
+1. There is a lot of repeated code in the board.c files. Any change to
+things like setting up the baud rate requires a change in 10 separate
+places.
+
+2. Since there are 10 separate files, adding a new feature which requires
+initialisation is painful since it must be independently added in 10
+places.
+
+3. As time goes by the architectures naturely diverge since there is limited
+pressure to compare features or even CONFIG options against simiilar things
+in other board.c files.
+
+4. New architectures must implement all the features all over again, and
+sometimes in subtley different ways. This places an unfair burden on getting
+a new architecture fully functional and running with U-Boot.
+
+5. While it is a bit of a tricky change, I believe it is worthwhile and
+achievable. There is no requirement that all code be common, only that
+the code that is common should be located in common/board.c rather than
+arch/xxx/lib/board.c.
+
+All the functions of board_init_f() and board_init_r() are broken into
+separate function calls so that they can easily be included or excluded
+for a particular architecture. It also makes it easier to adopt Graeme's
+initcall proposal when it is ready.
+
+http://lists.denx.de/pipermail/u-boot/2012-January/114499.html
+
+This series removes the dependency on generic relocation. So relocation
+happens as one big chunk and is still completely arch-specific. See the
+relocation series for a proposed solution to this for ARM:
+
+http://lists.denx.de/pipermail/u-boot/2011-December/112928.html
+
+or Graeme's recent x86 series v2:
+
+http://lists.denx.de/pipermail/u-boot/2012-January/114467.html
+
+Instead of moving over a whole architecture, this series takes the approach
+of simply enabling generic board support for an architecture. It is then up
+to each board to opt in by defining CONFIG_SYS_GENERIC_BOARD in the board
+config file. If this is not done, then the code will be generated as
+before. This allows both sets of code to co-exist until we are comfortable
+with the generic approach, and enough boards run.
+
+ARM is a relatively large board.c file and one which I can test, therefore
+I think it is a good target for this series. On the other hand, x86 is
+relatively small and simple, but different enough that it introduces a
+few issues to be solved. So I have chosen both ARM and x86 for this series.
+After a suggestion from Wolfgang I have added PPC also. This is the
+largest and most feature-full board, so hopefully we have all bases
+covered in this RFC.
+
+A generic global_data structure is also required. This might upset a few
+people. Here is my basic reasoning: most fields are the same, all
+architectures include and need it, most global_data.h files already have
+#ifdefs to select fields for a particular SOC, so it is hard to
+see why architecures are different in this area. We can perhaps add a
+way to put architecture-specific fields into a separate header file, but
+for now I have judged that to be counter-productive.
+
+Similarly we need a generic bd_info structure, since generic code will
+be accessing it. I have done this in the same way as global_data and the
+same comments apply.
+
+There was dicussion on the list about passing gd_t around as a parameter
+to pre-relocation init functions. I think this makes sense, but it can
+be done as a separate change, and this series does not require it.
+
+While this series needs to stand on its own (as with the link script
+cleanup series and the generic relocation series) the goal is the
+unification of the board init code. So I hope we can address issues with
+this in mind, rather than focusing too narrowly on particular ARM, x86 or
+PPC issues.
+
+I have run-tested ARM on Tegra Seaboard only. To try it out, define
+CONFIG_SYS_GENERIC_BOARD in your board file and rebuild. Most likely on
+x86 and PPC at least it will hang, but if you are lucky it will print
+something first :-)
+
+I have run this though MAKEALL with CONFIG_SYS_GENERIC_BOARD on for all
+ARM, PPC and x86 boards. There are a few failures due to errors in
+the board config, which I have sent patches for. The main issue is
+just the difference between __bss_end and __bss_end__.
+
+Note: the first group of commits are required for this series to build,
+but could be separated out if required. I have included them here for
+convenience.
+
+------------->8--
+
+Simon Glass, sjg@chromium.org
+March 2014
diff --git a/doc/README.power-framework b/doc/README.power-framework
new file mode 100644 (file)
index 0000000..1f6fd43
--- /dev/null
@@ -0,0 +1,166 @@
+#
+# (C) Copyright 2014 Samsung Electronics
+# Lukasz Majewski <l.majewski@samsung.com>
+#
+# SPDX-License-Identifier:      GPL-2.0+
+#
+
+Introduction
+------------
+
+This document describes the second version of the u-boot's PMIC (Power
+Management IC) framework. As a reference boards please consider Samsungs' Trats
+and Trats2.
+
+Background
+----------
+
+Boards supported by u-boot are getting increasingly complex. Developers and
+designers strive to cut down power consumption. Hence several different types of
+devices are now available on the board - namely power managers (PMIC), fuel
+gauges (FG), micro USB interface controllers (MUIC), batteries, multi-function
+devices (MFD).
+
+Explanation of key design decisions
+-----------------------------------
+
+One package can integrate PMIC and MUIC with different addresses on the I2C bus.
+The same device - e.g. MAX8997 uses two different I2C busses and addresses.
+
+Power devices use not only I2C for communication, but SPI as well. Additionally
+different ICs use different endianess. For this reason struct pmic holds
+information about I2C/SPI transmission, which is used with generic
+pmic_req_write() function.
+
+The "flat" hierarchy for power devices works well when each device performs only
+one operation - e.g. PMIC enables LDO.
+
+The problem emerges when we have a device (battery) which conceptually shall be
+the master and uses methods exported by other devices. We need to control MUIC
+to start charging the battery, use PMIC to reduce board's overall power
+consumption (by disabling not needed LDOs, BUCKs) and get current state of
+energy on the battery from FG.
+Up till now u-boot doesn't support device model, so a simple one had to be
+added.
+
+The directory hierarchy has following structure:
+./include/power/<device_name>_<device_function>.h
+e.g. ./include/power/max8997_pmic.h
+
+./drivers/power/pmic/power_{core files}.c
+e.g. ./drivers/power/pmic/power_core.c
+
+./drivers/power/pmic/<device_function>/<device_function>_<device_name>.c
+e.g. ./drivers/power/pmic/pmic_max8997.c
+e.g. ./drivers/power/battery/trats/bat_trats.c
+e.g. ./drivers/power/fuel_gauge/fg_max17042.c
+
+The framework classifies devices by their function - separate directories should
+be maintained for different classes of devices.
+
+Current design
+--------------
+
+Everything is a power device described by struct pmic. Even battery is
+considered as a valid power device. This helps for better management of those
+devices.
+
+- Block diagram of the hierarchy:
+                       -----------------
+               --------| BAT           |------------
+               |       |               |           |
+               |       -----------------           |
+               |               |                   |
+              \|/             \|/                 \|/
+       -----------     -----------------       ---------
+       |FG       |     |MUIC           |       |CHRG   |
+       |         |     |               |       |       |
+       -----------     -----------------       ---------
+
+
+1. When hierarchy is not needed (no complex battery charge):
+
+Definition of the struct pmic is only required with proper name and parameters
+for communication. This is enough to use the "pmic" command in the u-boot
+prompt to change values of device's register (enable/disable LDO, BUCK).
+
+The PG, MUIC and CHRG above are regarded to be in the same level in the
+hierarchy.
+
+2. Complex battery charging.
+
+To charge a battery, information from several "abstract" power devices is
+needed (defined at ./include/power/pmic.h):
+- FG device (struct power_fg):
+            -- *fg_battery_check - check if battery is not above its limits
+            -- *fg_battery_update - update the pmic framework with current
+                                    battery state(voltage and current capacity)
+
+- Charger device (struct power_chrq):
+            -- *chrg_type - type/capacity of the charger (including information
+                            about USB cable disconnection)
+            -- *chrg_bat_present - detection if battery to be charged is
+                                   present
+            -- *chrg_state - status of the charger - if it is enabled or
+                             disabled
+
+- Battery device (struct power_battery):
+            -- *battery_init - assign proper callbacks to be used by top
+                               hierarchy battery device
+            -- *battery_charge - called from "pmic" command, responsible
+                                 for performing the charging
+
+Now two batteries are supported; trats and trats2 [*]. Those differ in the way
+how they handle the exact charging. Trats uses polling (MAX8997) and trats2
+relies on the PMIC/MUIC HW completely (MAX77693).
+
+__Example for trats (this can be very different for other board):__
+            -- *fg_battery_check       -> FG device (fg_max17042.c)
+            -- *fg_battery_update      -> FG device (fg_max17042.c)
+            -- *chrg_type              -> MUIC device (muic_max8997.c)
+            -- *chrg_bat_present       -> PMIC device (pmic_max8997.c)
+            -- *chrg_state             -> PMIC device (pmic_max8997.c)
+            -- *battery_init           -> BAT device (bat_trats.c)
+            -- *battery_charge         -> BAT device (bat_trats.c)
+
+Also the struct pmic holds method (*low_power_mode) for reducing board's
+power consumption when one calls "pmic BAT_TRATS bat charge" command.
+
+How to add a new power device
+-----------------------------
+
+1. Simple device should be added with creation of file
+<pmic_function>_<pmic_name>.c, <pmic_name>_<pmic_function>.h  according to the
+proposed and described above scheme.
+
+Then "pmic" command supports reading/writing/dump of device's internal
+registers.
+
+2. Charging battery with hierarchy
+Define devices as listed at 1.
+
+Define battery file (bat_<board>.c). Please also note that one might need a
+corresponding battery model description for FG.
+
+For points 1 and 2 use a generic function power_init_board() to initialise the
+power framework on your board.
+
+For reference, please look into the trats/trats2 boards.
+
+TO DO list (for PMICv3) - up till v2014.04
+------------------------------------------
+
+1. Description of the devices related to power via device tree is not available.
+This is the main problem when a developer tries to build a multi-boot u-boot
+binary. The best would be to parse the DTS from Linux kernel.
+
+2. To support many instances of the same IC, like two MAX8997, one needs to
+copy the corresponding pmic_max8997.c file with changed name to "MAX8997_PMICX",
+where X is the device number. This problem will be addressed when extended
+pmic_core.c will support storing available devices in a list.
+
+3. Definition of batteries [*] (for trats/trats2) should be excluded from the
+code responsible for charging them and since it in fact describes the charging
+profile it should be put to a separate file.
+
+4. Adjust the framework to work with the device model.
index 7d670339ddf6dd0afad80055f2b88ae03c4d105a..f9742e7d49454f7ec6bf0983109684e12769e237 100644 (file)
@@ -11,8 +11,17 @@ easily if here is something they might want to dig for...
 
 Board            Arch        CPU            Commit      Removed     Last known maintainer/contact
 =================================================================================================
-idmr             m68k        mcf52x2        -           2014-01-28
-M5271EVB         m68k        mcf52x2        -           2014-01-28
+lubbock          arm         pxa            -           2014-04-04  Kyle Harris <kharris@nexus-tech.net>
+MOUSSE           powerpc     mpc824x        -           2014-04-04
+rsdproto         powerpc     mpc8260        -           2014-04-04
+RPXsuper         powerpc     mpc8260        -           2014-04-04
+RPXClassic       powerpc     mpc8xx         -           2014-04-04
+RPXlite          powerpc     mpc8xx         -           2014-04-04
+genietv          powerpc     mpc8xx         -           2014-04-04
+mbx8xx           powerpc     mpc8xx         -           2014-04-04
+nx823            powerpc     mpc8xx         -           2014-04-04
+idmr             m68k        mcf52x2        ba650e9b    2014-01-28
+M5271EVB         m68k        mcf52x2        ba650e9b    2014-01-28
 dvl_host         arm         ixp            e317de6b    2014-01-28  Michael Schwingen <michael@schwingen.org>
 actux4           arm         ixp            6ff7aafa    2014-01-28  Michael Schwingen <michael@schwingen.org>
 actux3           arm         ixp            38da33f3    2014-01-28  Michael Schwingen <michael@schwingen.org>
@@ -26,11 +35,15 @@ pdnb3            arm         ixp            304db0b     2013-09-24  Stefan Roese
 scpu             arm         ixp            304db0b     2013-09-24  Stefan Roese <sr@denx.de>
 omap1510inn      arm         arm925t        0610a16     2013-09-23  Kshitij Gupta <kshitij@ti.com>
 CANBT            powerpc     405CR          fb8f4fd     2013-08-07  Matthias Fuchs <matthias.fuchs@esd.eu>
+omap2420h4       arm         omap24xx       7f5eef9     2013-06-04  Richard Woodruff <r-woodruff2@ti.com>
 Alaska8220       powerpc     mpc8220        d6ed322     2013-05-11
 Yukon8220        powerpc     mpc8220        d6ed322     2013-05-11
 sorcery          powerpc     mpc8220        d6ed322     2013-05-11
 smdk6400         arm         arm1176        52587f1     2013-04-12  Zhong Hongbo <bocui107@gmail.com>
 ns9750dev        arm         arm926ejs      4cfc611     2013-02-28  Markus Pietrek <mpietrek@fsforth.de>
+eNET             x86         x86            7e8c53d     2013-02-14  Graeme Russ <graeme.russ@gmail.com>
+PCIPPC2          powerpc     MPC740/MPC750  7c9e89b     2013-02-07  Wolfgang Denk <wd@denx.de>
+PCIPPC6          powerpc     MPC740/MPC750  7c9e89b     2013-02-07  Wolfgang Denk <wd@denx.de>
 AMX860           powerpc     mpc860         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
 c2mon            powerpc     mpc855         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
 EP88x            powerpc     mpc885         1b0757e     2012-10-28
@@ -40,15 +53,17 @@ LANTEC           powerpc     mpc850         1b0757e     2012-10-28  Wolfgang Den
 SCM              powerpc     mpc8260        1b0757e     2012-10-28  Wolfgang Grandegger <wg@denx.de>
 SX1              arm         arm925t        53c4154     2012-10-26
 TQM85xx          powerpc     MPC85xx        d923a5d     2012-10-04  Stefan Roese <sr@denx.de>
+ADCIOP           powerpc     ppc4xx         99bcad1     2012-09-19  Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+DASA_SIM         powerpc     ppc4xx         99bcad1     2012-09-19  Matthias Fuchs <matthias.fuchs@esd-electronics.com>
 apollon          arm         omap24xx       535c74f     2012-09-18  Kyungmin Park <kyungmin.park@samsung.com>
 tb0229           mips        mips32         3f3110d     2011-12-12
 rmu              powerpc     MPC850         fb82fd7     2011-12-07  Wolfgang Denk <wd@denx.de>
 OXC              powerpc     MPC8240        309a292     2011-12-07
 BAB7xx           powerpc     MPC740/MPC750  c53043b     2011-12-07  Frank Gottschling <fgottschling@eltec.de>
-xm250            arm         pxa            c746cdd     2011-25-11
-pleb2            arm         pxa            b185a1c     2011-25-11
-cradle           arm         pxa            4e24f8a     2011-25-11  Kyle Harris <kharris@nexus-tech.net>
-cerf250          arm         pxa            a3f1241     2011-25-11  Prakash Kumar <prakash@embedx.com>
+xm250            arm         pxa            c477d72     2011-11-25
+pleb2            arm         pxa            d299173     2011-11-25
+cradle           arm         pxa            00c4aca     2011-11-25  Kyle Harris <kharris@nexus-tech.net>
+cerf250          arm         pxa            f13eba6     2011-11-25  Prakash Kumar <prakash@embedx.com>
 mpq101           powerpc     mpc85xx        e877fab     2011-10-23  Alex Dubov <oakad@yahoo.com>
 ixdpg425         arm         ixp            0ca8eb7     2011-09-22  Stefan Roese <sr@denx.de>
 ixdp425          arm         ixp            0ca8eb7     2011-09-22  Kyle Harris <kharris@nexus-tech.net>
@@ -87,13 +102,13 @@ B2               arm         s3c44b0        5dcf536     2011-07-16  Andrea Scian
 armadillo        arm         arm720t        be28857     2011-07-16  Rowel Atienza <rowel@diwalabs.com>
 assabet          arm         sa1100         c91e90d     2011-07-16  George G. Davis <gdavis@mvista.com>
 trab             arm         S3C2400        566e5cf     2011-05-01  Gary Jennejohn <garyj@denx.de>
-xsengine         ARM         PXA2xx         4262a7c     2010-10-20
-wepep250         ARM         PXA2xx         7369478     2010-10-20  Peter Figuli <peposh@etc.sk>
-delta            ARM         PXA2xx         75e2035     2010-10-20
 mp2usb           ARM         AT91RM2900     ee986e2     2011-01-25  Eric Bénard <eric@eukrea.com>
 barco            powerpc     MPC8245        afaa27b     2010-11-23  Marc Leeman <marc.leeman@barco.com>
 ERIC             powerpc     405GP          d9ba451     2010-11-21  Swen Anderson <sand@peppercon.de>
 VoVPN-GW_100MHz  powerpc     MPC8260        26fe3d2     2010-10-24  Juergen Selent <j.selent@elmeg.de>
+xsengine         ARM         PXA2xx         4262a7c     2010-10-20
+wepep250         ARM         PXA2xx         7369478     2010-10-20  Peter Figuli <peposh@etc.sk>
+delta            ARM         PXA2xx         75e2035     2010-10-20
 NC650            powerpc     MPC852         333d86d     2010-10-19  Wolfgang Denk <wd@denx.de>
 CP850            powerpc     MPC852         333d86d     2010-10-19  Wolfgang Denk <wd@denx.de>
 logodl           ARM         PXA2xx         059e778     2010-10-18  August Hoeraendl <august.hoerandl@gmx.at>
@@ -110,7 +125,4 @@ MVS1             powerpc     MPC823         306620b     2008-08-26  Andre Schwar
 adsvix           ARM         PXA27x         7610db1     2008-07-30  Adrian Filipi <adrian.filipi@eurotech.com>
 R5200            ColdFire    -              48ead7a     2008-03-31  Zachary P. Landau <zachary.landau@labxtechnologies.com>
 CPCI440          powerpc     440GP          b568fd2     2007-12-27  Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-PCIPPC2          powerpc     MPC740/MPC750  7c9e89b     2013-02-07  Wolfgang Denk <wd@denx.de>
-PCIPPC6          powerpc     MPC740/MPC750  -           -           Wolfgang Denk <wd@denx.de>
-omap2420h4       arm         omap24xx       -           2013-06-04  Richard Woodruff <r-woodruff2@ti.com>
-eNET             x86         x86            7e8c53d     2013-02-14  Graeme Russ <graeme.russ@gmail.com>
+incaip           mips        mips32         -           2014-04-17  Wolfgang Denk <wd@denx.de>
index a9841fb5f74c76f558141041cee35cb8c731d171..ef8c75f3b2c853e219649fb6acb42079a72b04cd 100644 (file)
@@ -120,3 +120,56 @@ The override voltage takes effect when booting.
 Note: voltage adjustment needs to be done step by step. Changing voltage too
 rapidly may cause current surge. The voltage stepping is done by software.
 Users can set the final voltage directly.
+
+2-stage NAND/SD boot loader
+-------------------------------
+PBL initializes the internal SRAM and copy SPL(160K) in SRAM.
+SPL further initialise DDR using SPD and environment variables
+and copy u-boot(768 KB) from NAND/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 T4QDS
+--------------------------------------------------------------
+Start          End             Definition      Size
+0x000000       0x0FFFFF        u-boot img      1MB
+0x140000       0x15FFFF        u-boot env      128KB
+0x160000       0x17FFFF        FMAN Ucode      128KB
+
+Micro SD Card memory Map on T4QDS
+----------------------------------------------------
+Block          #blocks         Definition      Size
+0x008          2048            u-boot img      1MB
+0x800          0016            u-boot env      8KB
+0x820          0128            FMAN ucode      64KB
+
+Switch Settings: (ON is 1, OFF is 0)
+===============
+NAND boot SW setting:
+SW1[1:8] = 10000010
+SW2[1.1] = 0
+SW6[1:4] = 1001
+
+SD boot SW setting:
+SW1[1:8] = 00100000
+SW2[1.1] = 0
index f09d5f9f6bfe138632c0ea009bca406efc955245..dadbfcd2fdc8934d8f09a7d1b17c66dc9863a06d 100644 (file)
@@ -11,8 +11,6 @@ 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
-- GENIETV    with AD7177 on a PAL TV (YCbYCr)  - arsenio@tin.it
-
 
 "video-mode" environment variable
 ===============================
index bc9f3fa6e13684d147e23d90b12a432dc053e7fe..95020377055d259a2b9e285b178371fccefc3ea3 100644 (file)
@@ -346,7 +346,9 @@ Simple Verified Boot Test
 
 Please see doc/uImage.FIT/verified-boot.txt for more information
 
+/home/hs/ids/u-boot/sandbox/tools/mkimage -D -I dts -O dtb -p 2000
 Build keys
+do sha1 test
 Build FIT with signed images
 Test Verified Boot Run: unsigned signatures:: OK
 Sign images
@@ -355,10 +357,26 @@ Build FIT with signed configuration
 Test Verified Boot Run: unsigned config: OK
 Sign images
 Test Verified Boot Run: signed config: OK
+check signed config on the host
+OK
+Test Verified Boot Run: signed config: OK
+Test Verified Boot Run: signed config with bad hash: OK
+do sha256 test
+Build FIT with signed images
+Test Verified Boot Run: unsigned signatures:: OK
+Sign images
+Test Verified Boot Run: signed images: OK
+Build FIT with signed configuration
+Test Verified Boot Run: unsigned config: OK
+Sign images
+Test Verified Boot Run: signed config: OK
+check signed config on the host
+OK
+Test Verified Boot Run: signed config: OK
+Test Verified Boot Run: signed config with bad hash: OK
 
 Test passed
 
-
 Future Work
 -----------
 - Roll-back protection using a TPM is done using the tpm command. This can
index 265204f31199bd7069c14175bf4a15d7615d3120..df66c07230fff40b1ade0e2284153f14dec83c2c 100644 (file)
@@ -1,19 +1,20 @@
 #
-# Copyright 2008-2011 Freescale Semiconductor, Inc.
+# Copyright 2008-2014 Freescale Semiconductor, 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.
 #
 
-obj-$(CONFIG_SYS_FSL_DDR1)     += main.o util.o ctrl_regs.o options.o \
-                                  lc_common_dimm_params.o
+obj-$(CONFIG_SYS_FSL_DDR1) += main.o util.o ctrl_regs.o options.o \
+                               lc_common_dimm_params.o
+obj-$(CONFIG_SYS_FSL_DDR2) += main.o util.o ctrl_regs.o options.o \
+                               lc_common_dimm_params.o
+obj-$(CONFIG_SYS_FSL_DDR3) += main.o util.o ctrl_regs.o options.o \
+                               lc_common_dimm_params.o
+obj-$(CONFIG_SYS_FSL_DDR4) += main.o util.o ctrl_regs.o options.o \
+                               lc_common_dimm_params.o
 
-obj-$(CONFIG_SYS_FSL_DDR2)     += main.o util.o ctrl_regs.o options.o \
-                                  lc_common_dimm_params.o
-
-obj-$(CONFIG_SYS_FSL_DDR3)     += main.o util.o ctrl_regs.o options.o \
-                                  lc_common_dimm_params.o
 ifdef CONFIG_DDR_SPD
 SPD := y
 endif
@@ -24,6 +25,7 @@ ifdef SPD
 obj-$(CONFIG_SYS_FSL_DDR1)     += ddr1_dimm_params.o
 obj-$(CONFIG_SYS_FSL_DDR2)     += ddr2_dimm_params.o
 obj-$(CONFIG_SYS_FSL_DDR3)     += ddr3_dimm_params.o
+obj-$(CONFIG_SYS_FSL_DDR4)     += ddr4_dimm_params.o
 endif
 
 obj-$(CONFIG_FSL_DDR_INTERACTIVE)      += interactive.o
@@ -32,3 +34,4 @@ obj-$(CONFIG_SYS_FSL_DDRC_GEN2)       += mpc85xx_ddr_gen2.o
 obj-$(CONFIG_SYS_FSL_DDRC_GEN3)        += mpc85xx_ddr_gen3.o
 obj-$(CONFIG_SYS_FSL_DDR_86XX)         += mpc86xx_ddr.o
 obj-$(CONFIG_SYS_FSL_DDRC_ARM_GEN3)    += arm_ddr_gen3.o
+obj-$(CONFIG_SYS_FSL_DDRC_GEN4) += fsl_ddr_gen4.o
index 0882932b0708083d091002dbcd7b5b6fd97a9a02..78e82bba3d4302a3f34efe1ea0df8a70b0c406fc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2012 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <fsl_immap.h>
 #include <asm/io.h>
 
-#define _DDR_ADDR CONFIG_SYS_FSL_DDR_ADDR
-
-static u32 fsl_ddr_get_version(void)
-{
-       struct ccsr_ddr __iomem *ddr;
-       u32 ver_major_minor_errata;
-
-       ddr = (void *)_DDR_ADDR;
-       ver_major_minor_errata = (ddr_in32(&ddr->ip_rev1) & 0xFFFF) << 8;
-       ver_major_minor_errata |= (ddr_in32(&ddr->ip_rev2) & 0xFF00) >> 8;
-
-       return ver_major_minor_errata;
-}
-
 unsigned int picos_to_mclk(unsigned int picos);
 
 /*
@@ -81,6 +67,39 @@ static inline int fsl_ddr_get_rtt(void)
        return rtt;
 }
 
+#ifdef CONFIG_SYS_FSL_DDR4
+/*
+ * compute CAS write latency according to DDR4 spec
+ * CWL = 9 for <= 1600MT/s
+ *       10 for <= 1866MT/s
+ *       11 for <= 2133MT/s
+ *       12 for <= 2400MT/s
+ *       14 for <= 2667MT/s
+ *       16 for <= 2933MT/s
+ *       18 for higher
+ */
+static inline unsigned int compute_cas_write_latency(void)
+{
+       unsigned int cwl;
+       const unsigned int mclk_ps = get_memory_clk_period_ps();
+       if (mclk_ps >= 1250)
+               cwl = 9;
+       else if (mclk_ps >= 1070)
+               cwl = 10;
+       else if (mclk_ps >= 935)
+               cwl = 11;
+       else if (mclk_ps >= 833)
+               cwl = 12;
+       else if (mclk_ps >= 750)
+               cwl = 14;
+       else if (mclk_ps >= 681)
+               cwl = 16;
+       else
+               cwl = 18;
+
+       return cwl;
+}
+#else
 /*
  * compute the CAS write latency according to DDR3 spec
  * CWL = 5 if tCK >= 2.5ns
@@ -119,6 +138,7 @@ static inline unsigned int compute_cas_write_latency(void)
        }
        return cwl;
 }
+#endif
 
 /* Chip Select Configuration (CSn_CONFIG) */
 static void set_csn_config(int dimm_number, int i, fsl_ddr_cfg_regs_t *ddr,
@@ -135,6 +155,11 @@ static void set_csn_config(int dimm_number, int i, fsl_ddr_cfg_regs_t *ddr,
        unsigned int row_bits_cs_n = 0; /* Num of row bits for SDRAM on CSn */
        unsigned int col_bits_cs_n = 0; /* Num of ocl bits for SDRAM on CSn */
        int go_config = 0;
+#ifdef CONFIG_SYS_FSL_DDR4
+       unsigned int bg_bits_cs_n = 0; /* Num of bank group bits */
+#else
+       unsigned int n_banks_per_sdram_device;
+#endif
 
        /* Compute CS_CONFIG only for existing ranks of each DIMM.  */
        switch (i) {
@@ -178,14 +203,18 @@ static void set_csn_config(int dimm_number, int i, fsl_ddr_cfg_regs_t *ddr,
                break;
        }
        if (go_config) {
-               unsigned int n_banks_per_sdram_device;
                cs_n_en = 1;
                ap_n_en = popts->cs_local_opts[i].auto_precharge;
                odt_rd_cfg = popts->cs_local_opts[i].odt_rd_cfg;
                odt_wr_cfg = popts->cs_local_opts[i].odt_wr_cfg;
+#ifdef CONFIG_SYS_FSL_DDR4
+               ba_bits_cs_n = dimm_params[dimm_number].bank_addr_bits;
+               bg_bits_cs_n = dimm_params[dimm_number].bank_group_bits;
+#else
                n_banks_per_sdram_device
                        = dimm_params[dimm_number].n_banks_per_sdram_device;
                ba_bits_cs_n = __ilog2(n_banks_per_sdram_device) - 2;
+#endif
                row_bits_cs_n = dimm_params[dimm_number].n_row_addr - 12;
                col_bits_cs_n = dimm_params[dimm_number].n_col_addr - 8;
        }
@@ -203,6 +232,9 @@ static void set_csn_config(int dimm_number, int i, fsl_ddr_cfg_regs_t *ddr,
 
                | ((ba_bits_cs_n & 0x3) << 14)
                | ((row_bits_cs_n & 0x7) << 8)
+#ifdef CONFIG_SYS_FSL_DDR4
+               | ((bg_bits_cs_n & 0x3) << 4)
+#endif
                | ((col_bits_cs_n & 0x7) << 0)
                );
        debug("FSLDDR: cs[%d]_config = 0x%08x\n", i,ddr->cs[i].config);
@@ -262,11 +294,23 @@ static void set_timing_cfg_0(fsl_ddr_cfg_regs_t *ddr,
        /* Precharge powerdown exit timing (tXP). */
        unsigned char pre_pd_exit_mclk;
        /* ODT powerdown exit timing (tAXPD). */
-       unsigned char taxpd_mclk;
+       unsigned char taxpd_mclk = 0;
        /* Mode register set cycle time (tMRD). */
        unsigned char tmrd_mclk;
 
-#ifdef CONFIG_SYS_FSL_DDR3
+#ifdef CONFIG_SYS_FSL_DDR4
+       /* tXP=max(4nCK, 6ns) */
+       int txp = max((get_memory_clk_period_ps() * 4), 6000); /* unit=ps */
+       trwt_mclk = 2;
+       twrt_mclk = 1;
+       act_pd_exit_mclk = picos_to_mclk(txp);
+       pre_pd_exit_mclk = act_pd_exit_mclk;
+       /*
+        * MRS_CYC = max(tMRD, tMOD)
+        * tMRD = 8nCK, tMOD = max(24nCK, 15ns)
+        */
+       tmrd_mclk = max(24, picos_to_mclk(15000));
+#elif defined(CONFIG_SYS_FSL_DDR3)
        /*
         * (tXARD and tXARDS). Empirical?
         * The DDR3 spec has not tXARD,
@@ -275,7 +319,7 @@ 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.
         */
-       int tXP = max((get_memory_clk_period_ps() * 3), 7500); /* unit=ps */
+       int txp = max((get_memory_clk_period_ps() * 3), 7500); /* unit=ps */
        unsigned int data_rate = get_ddr_freq(0);
        tmrd_mclk = 4;
        /* set the turnaround time */
@@ -300,7 +344,7 @@ static void set_timing_cfg_0(fsl_ddr_cfg_regs_t *ddr,
                taxpd_mclk = 1;
        } else {
                /* act_pd_exit_mclk = tXARD, see above */
-               act_pd_exit_mclk = picos_to_mclk(tXP);
+               act_pd_exit_mclk = picos_to_mclk(txp);
                /* Mode register MR0[A12] is '1' - fast exit */
                pre_pd_exit_mclk = act_pd_exit_mclk;
                taxpd_mclk = 1;
@@ -364,8 +408,12 @@ static void set_timing_cfg_3(fsl_ddr_cfg_regs_t *ddr,
        ext_acttorw = picos_to_mclk(common_dimm->trcd_ps) >> 4;
        ext_caslat = (2 * cas_latency - 1) >> 4;
        ext_add_lat = additive_latency >> 4;
+#ifdef CONFIG_SYS_FSL_DDR4
+       ext_refrec = (picos_to_mclk(common_dimm->trfc1_ps) - 8) >> 4;
+#else
        ext_refrec = (picos_to_mclk(common_dimm->trfc_ps) - 8) >> 4;
        /* ext_wrrec only deals with 16 clock and above, or 14 with OTF */
+#endif
        ext_wrrec = (picos_to_mclk(common_dimm->twr_ps) +
                (popts->otf_burst_chop_en ? 2 : 0)) >> 4;
 
@@ -404,9 +452,19 @@ static void set_timing_cfg_1(fsl_ddr_cfg_regs_t *ddr,
        unsigned char acttoact_mclk;
        /* Last write data pair to read command issue interval (tWTR) */
        unsigned char wrtord_mclk;
+#ifdef CONFIG_SYS_FSL_DDR4
+       /* DDR4 supports 10, 12, 14, 16, 18, 20, 24 */
+       static const u8 wrrec_table[] = {
+               10, 10, 10, 10, 10,
+               10, 10, 10, 10, 10,
+               12, 12, 14, 14, 16,
+               16, 18, 18, 20, 20,
+               24, 24, 24, 24};
+#else
        /* DDR_SDRAM_MODE doesn't support 9,11,13,15 */
        static const u8 wrrec_table[] = {
                1, 2, 3, 4, 5, 6, 7, 8, 10, 10, 12, 12, 14, 14, 0, 0};
+#endif
 
        pretoact_mclk = picos_to_mclk(common_dimm->trp_ps);
        acttopre_mclk = picos_to_mclk(common_dimm->tras_ps);
@@ -438,20 +496,34 @@ static void set_timing_cfg_1(fsl_ddr_cfg_regs_t *ddr,
         * we need set extend bit for it at
         * TIMING_CFG_3[EXT_CASLAT]
         */
-       caslat_ctrl = 2 * cas_latency - 1;
+       if (fsl_ddr_get_version() <= 0x40400)
+               caslat_ctrl = 2 * cas_latency - 1;
+       else
+               caslat_ctrl = (cas_latency - 1) << 1;
 #endif
 
+#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));
+       if ((wrrec_mclk < 1) || (wrrec_mclk > 24))
+               printf("Error: WRREC doesn't support %d clocks\n", wrrec_mclk);
+       else
+               wrrec_mclk = wrrec_table[wrrec_mclk - 1];
+#else
        refrec_ctrl = picos_to_mclk(common_dimm->trfc_ps) - 8;
        wrrec_mclk = picos_to_mclk(common_dimm->twr_ps);
-
-       if (wrrec_mclk > 16)
-               printf("Error: WRREC doesn't support more than 16 clocks\n");
+       acttoact_mclk = picos_to_mclk(common_dimm->trrd_ps);
+       wrtord_mclk = picos_to_mclk(common_dimm->twtr_ps);
+       if ((wrrec_mclk < 1) || (wrrec_mclk > 16))
+               printf("Error: WRREC doesn't support %d clocks\n", wrrec_mclk);
        else
                wrrec_mclk = wrrec_table[wrrec_mclk - 1];
+#endif
        if (popts->otf_burst_chop_en)
                wrrec_mclk += 2;
 
-       acttoact_mclk = picos_to_mclk(common_dimm->trrd_ps);
        /*
         * JEDEC has min requirement for tRRD
         */
@@ -459,7 +531,6 @@ static void set_timing_cfg_1(fsl_ddr_cfg_regs_t *ddr,
        if (acttoact_mclk < 4)
                acttoact_mclk = 4;
 #endif
-       wrtord_mclk = picos_to_mclk(common_dimm->twtr_ps);
        /*
         * JEDEC has some min requirements for tWTR
         */
@@ -526,14 +597,18 @@ static void set_timing_cfg_2(fsl_ddr_cfg_regs_t *ddr,
        wr_lat = compute_cas_write_latency();
 #endif
 
+#ifdef CONFIG_SYS_FSL_DDR4
+       rd_to_pre = picos_to_mclk(7500);
+#else
        rd_to_pre = picos_to_mclk(common_dimm->trtp_ps);
+#endif
        /*
         * JEDEC has some min requirements for tRTP
         */
 #if defined(CONFIG_SYS_FSL_DDR2)
        if (rd_to_pre  < 2)
                rd_to_pre  = 2;
-#elif defined(CONFIG_SYS_FSL_DDR3)
+#elif defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
        if (rd_to_pre < 4)
                rd_to_pre = 4;
 #endif
@@ -541,13 +616,20 @@ static void set_timing_cfg_2(fsl_ddr_cfg_regs_t *ddr,
                rd_to_pre += 2; /* according to UM */
 
        wr_data_delay = popts->write_data_delay;
+#ifdef CONFIG_SYS_FSL_DDR4
+       cpo = 0;
+       cke_pls = max(3, picos_to_mclk(5000));
+#else
        cke_pls = picos_to_mclk(popts->tcke_clock_pulse_width_ps);
+#endif
+
        four_act = picos_to_mclk(popts->tfaw_window_four_activates_ps);
 
        ddr->timing_cfg_2 = (0
                | ((add_lat_mclk & 0xf) << 28)
                | ((cpo & 0x1f) << 23)
                | ((wr_lat & 0xf) << 19)
+               | ((wr_lat & 0x10) << 14)
                | ((rd_to_pre & RD_TO_PRE_MASK) << RD_TO_PRE_SHIFT)
                | ((wr_data_delay & WR_DATA_DELAY_MASK) << WR_DATA_DELAY_SHIFT)
                | ((cke_pls & 0x7) << 6)
@@ -640,7 +722,8 @@ static void set_ddr_sdram_cfg(fsl_ddr_cfg_regs_t *ddr,
         * we must clear it when use the on-the-fly mode,
         * must set it when use the 32-bits bus mode.
         */
-       if (sdram_type == SDRAM_TYPE_DDR3) {
+       if ((sdram_type == SDRAM_TYPE_DDR3) ||
+           (sdram_type == SDRAM_TYPE_DDR4)) {
                if (popts->burst_length == DDR_BL8)
                        eight_be = 1;
                if (popts->burst_length == DDR_OTF)
@@ -682,8 +765,6 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
 {
        unsigned int frc_sr = 0;        /* Force self refresh */
        unsigned int sr_ie = 0;         /* Self-refresh interrupt enable */
-       unsigned int dll_rst_dis;       /* DLL reset disable */
-       unsigned int dqs_cfg;           /* DQS configuration */
        unsigned int odt_cfg = 0;       /* ODT configuration */
        unsigned int num_pr;            /* Number of posted refreshes */
        unsigned int slow = 0;          /* DDR will be run less than 1250 */
@@ -695,9 +776,12 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
        unsigned int md_en = 0;         /* Mirrored DIMM Enable */
        unsigned int qd_en = 0;         /* quad-rank DIMM Enable */
        int i;
+#ifndef CONFIG_SYS_FSL_DDR4
+       unsigned int dll_rst_dis = 1;   /* DLL reset disable */
+       unsigned int dqs_cfg;           /* DQS configuration */
 
-       dll_rst_dis = 1;        /* Make this configurable */
        dqs_cfg = popts->dqs_config;
+#endif
        for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
                if (popts->cs_local_opts[i].odt_rd_cfg
                        || popts->cs_local_opts[i].odt_wr_cfg) {
@@ -715,7 +799,7 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
         *        * ({EXT_REFREC || REFREC} + 8 + 2)]}
         *      << DDR_SDRAM_INTERVAL[REFINT]
         */
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
        obc_cfg = popts->otf_burst_chop_en;
 #else
        obc_cfg = 0;
@@ -744,15 +828,17 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
        d_init = 0;
 #endif
 
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
        md_en = popts->mirrored_dimm;
 #endif
        qd_en = popts->quad_rank_present ? 1 : 0;
        ddr->ddr_sdram_cfg_2 = (0
                | ((frc_sr & 0x1) << 31)
                | ((sr_ie & 0x1) << 30)
+#ifndef CONFIG_SYS_FSL_DDR4
                | ((dll_rst_dis & 0x1) << 29)
                | ((dqs_cfg & 0x3) << 26)
+#endif
                | ((odt_cfg & 0x3) << 21)
                | ((num_pr & 0xf) << 12)
                | ((slow & 1) << 11)
@@ -768,6 +854,7 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
        debug("FSLDDR: ddr_sdram_cfg_2 = 0x%08x\n", ddr->ddr_sdram_cfg_2);
 }
 
+#ifdef CONFIG_SYS_FSL_DDR4
 /* DDR SDRAM Mode configuration 2 (DDR_SDRAM_MODE_2) */
 static void set_ddr_sdram_mode_2(fsl_ddr_cfg_regs_t *ddr,
                                const memctl_options_t *popts,
@@ -776,8 +863,93 @@ static void set_ddr_sdram_mode_2(fsl_ddr_cfg_regs_t *ddr,
 {
        unsigned short esdmode2 = 0;    /* Extended SDRAM mode 2 */
        unsigned short esdmode3 = 0;    /* Extended SDRAM mode 3 */
+       int i;
+       unsigned int wr_crc = 0;        /* Disable */
+       unsigned int rtt_wr = 0;        /* Rtt_WR - dynamic ODT off */
+       unsigned int srt = 0;   /* self-refresh temerature, normal range */
+       unsigned int cwl = compute_cas_write_latency() - 9;
+       unsigned int mpr = 0;   /* serial */
+       unsigned int wc_lat;
+       const unsigned int mclk_ps = get_memory_clk_period_ps();
 
-#if defined(CONFIG_SYS_FSL_DDR3)
+       if (popts->rtt_override)
+               rtt_wr = popts->rtt_wr_override_value;
+       else
+               rtt_wr = popts->cs_local_opts[0].odt_rtt_wr;
+
+       if (common_dimm->extended_op_srt)
+               srt = common_dimm->extended_op_srt;
+
+       esdmode2 = (0
+               | ((wr_crc & 0x1) << 12)
+               | ((rtt_wr & 0x3) << 9)
+               | ((srt & 0x3) << 6)
+               | ((cwl & 0x7) << 3));
+
+       if (mclk_ps >= 1250)
+               wc_lat = 0;
+       else if (mclk_ps >= 833)
+               wc_lat = 1;
+       else
+               wc_lat = 2;
+
+       esdmode3 = (0
+               | ((mpr & 0x3) << 11)
+               | ((wc_lat & 0x3) << 9));
+
+       ddr->ddr_sdram_mode_2 = (0
+                                | ((esdmode2 & 0xFFFF) << 16)
+                                | ((esdmode3 & 0xFFFF) << 0)
+                                );
+       debug("FSLDDR: ddr_sdram_mode_2 = 0x%08x\n", ddr->ddr_sdram_mode_2);
+
+       if (unq_mrs_en) {       /* unique mode registers are supported */
+               for (i = 1; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+                       if (popts->rtt_override)
+                               rtt_wr = popts->rtt_wr_override_value;
+                       else
+                               rtt_wr = popts->cs_local_opts[i].odt_rtt_wr;
+
+                       esdmode2 &= 0xF9FF;     /* clear bit 10, 9 */
+                       esdmode2 |= (rtt_wr & 0x3) << 9;
+                       switch (i) {
+                       case 1:
+                               ddr->ddr_sdram_mode_4 = (0
+                                       | ((esdmode2 & 0xFFFF) << 16)
+                                       | ((esdmode3 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       case 2:
+                               ddr->ddr_sdram_mode_6 = (0
+                                       | ((esdmode2 & 0xFFFF) << 16)
+                                       | ((esdmode3 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       case 3:
+                               ddr->ddr_sdram_mode_8 = (0
+                                       | ((esdmode2 & 0xFFFF) << 16)
+                                       | ((esdmode3 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       }
+               }
+               debug("FSLDDR: ddr_sdram_mode_4 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_4);
+               debug("FSLDDR: ddr_sdram_mode_6 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_6);
+               debug("FSLDDR: ddr_sdram_mode_8 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_8);
+       }
+}
+#elif defined(CONFIG_SYS_FSL_DDR3)
+/* DDR SDRAM Mode configuration 2 (DDR_SDRAM_MODE_2) */
+static void set_ddr_sdram_mode_2(fsl_ddr_cfg_regs_t *ddr,
+                               const memctl_options_t *popts,
+                               const common_timing_params_t *common_dimm,
+                               const unsigned int unq_mrs_en)
+{
+       unsigned short esdmode2 = 0;    /* Extended SDRAM mode 2 */
+       unsigned short esdmode3 = 0;    /* Extended SDRAM mode 3 */
        int i;
        unsigned int rtt_wr = 0;        /* Rtt_WR - dynamic ODT off */
        unsigned int srt = 0;   /* self-refresh temerature, normal range */
@@ -799,14 +971,12 @@ static void set_ddr_sdram_mode_2(fsl_ddr_cfg_regs_t *ddr,
                | ((asr & 0x1) << 6)
                | ((cwl & 0x7) << 3)
                | ((pasr & 0x7) << 0));
-#endif
        ddr->ddr_sdram_mode_2 = (0
                                 | ((esdmode2 & 0xFFFF) << 16)
                                 | ((esdmode3 & 0xFFFF) << 0)
                                 );
        debug("FSLDDR: ddr_sdram_mode_2 = 0x%08x\n", ddr->ddr_sdram_mode_2);
 
-#ifdef CONFIG_SYS_FSL_DDR3
        if (unq_mrs_en) {       /* unique mode registers are supported */
                for (i = 1; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
                        if (popts->rtt_override)
@@ -844,9 +1014,128 @@ static void set_ddr_sdram_mode_2(fsl_ddr_cfg_regs_t *ddr,
                debug("FSLDDR: ddr_sdram_mode_8 = 0x%08x\n",
                        ddr->ddr_sdram_mode_8);
        }
+}
+
+#else /* for DDR2 and DDR1 */
+/* DDR SDRAM Mode configuration 2 (DDR_SDRAM_MODE_2) */
+static void set_ddr_sdram_mode_2(fsl_ddr_cfg_regs_t *ddr,
+                               const memctl_options_t *popts,
+                               const common_timing_params_t *common_dimm,
+                               const unsigned int unq_mrs_en)
+{
+       unsigned short esdmode2 = 0;    /* Extended SDRAM mode 2 */
+       unsigned short esdmode3 = 0;    /* Extended SDRAM mode 3 */
+
+       ddr->ddr_sdram_mode_2 = (0
+                                | ((esdmode2 & 0xFFFF) << 16)
+                                | ((esdmode3 & 0xFFFF) << 0)
+                                );
+       debug("FSLDDR: ddr_sdram_mode_2 = 0x%08x\n", ddr->ddr_sdram_mode_2);
+}
 #endif
+
+#ifdef CONFIG_SYS_FSL_DDR4
+/* DDR SDRAM Mode configuration 9 (DDR_SDRAM_MODE_9) */
+static void set_ddr_sdram_mode_9(fsl_ddr_cfg_regs_t *ddr,
+                               const memctl_options_t *popts,
+                               const common_timing_params_t *common_dimm,
+                               const unsigned int unq_mrs_en)
+{
+       int i;
+       unsigned short esdmode4 = 0;    /* Extended SDRAM mode 4 */
+       unsigned short esdmode5;        /* Extended SDRAM mode 5 */
+
+       esdmode5 = 0x00000400;          /* Data mask enabled */
+
+       ddr->ddr_sdram_mode_9 = (0
+                                | ((esdmode4 & 0xffff) << 16)
+                                | ((esdmode5 & 0xffff) << 0)
+                               );
+       debug("FSLDDR: ddr_sdram_mode_9) = 0x%08x\n", ddr->ddr_sdram_mode_9);
+       if (unq_mrs_en) {       /* unique mode registers are supported */
+               for (i = 1; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+                       switch (i) {
+                       case 1:
+                               ddr->ddr_sdram_mode_11 = (0
+                                       | ((esdmode4 & 0xFFFF) << 16)
+                                       | ((esdmode5 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       case 2:
+                               ddr->ddr_sdram_mode_13 = (0
+                                       | ((esdmode4 & 0xFFFF) << 16)
+                                       | ((esdmode5 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       case 3:
+                               ddr->ddr_sdram_mode_15 = (0
+                                       | ((esdmode4 & 0xFFFF) << 16)
+                                       | ((esdmode5 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       }
+               }
+               debug("FSLDDR: ddr_sdram_mode_11 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_11);
+               debug("FSLDDR: ddr_sdram_mode_13 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_13);
+               debug("FSLDDR: ddr_sdram_mode_15 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_15);
+       }
+}
+
+/* DDR SDRAM Mode configuration 10 (DDR_SDRAM_MODE_10) */
+static void set_ddr_sdram_mode_10(fsl_ddr_cfg_regs_t *ddr,
+                               const memctl_options_t *popts,
+                               const common_timing_params_t *common_dimm,
+                               const unsigned int unq_mrs_en)
+{
+       int i;
+       unsigned short esdmode6 = 0;    /* Extended SDRAM mode 6 */
+       unsigned short esdmode7 = 0;    /* Extended SDRAM mode 7 */
+       unsigned int tccdl_min = picos_to_mclk(common_dimm->tccdl_ps);
+
+       esdmode6 = ((tccdl_min - 4) & 0x7) << 10;
+
+       ddr->ddr_sdram_mode_10 = (0
+                                | ((esdmode6 & 0xffff) << 16)
+                                | ((esdmode7 & 0xffff) << 0)
+                               );
+       debug("FSLDDR: ddr_sdram_mode_10) = 0x%08x\n", ddr->ddr_sdram_mode_10);
+       if (unq_mrs_en) {       /* unique mode registers are supported */
+               for (i = 1; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+                       switch (i) {
+                       case 1:
+                               ddr->ddr_sdram_mode_12 = (0
+                                       | ((esdmode6 & 0xFFFF) << 16)
+                                       | ((esdmode7 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       case 2:
+                               ddr->ddr_sdram_mode_14 = (0
+                                       | ((esdmode6 & 0xFFFF) << 16)
+                                       | ((esdmode7 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       case 3:
+                               ddr->ddr_sdram_mode_16 = (0
+                                       | ((esdmode6 & 0xFFFF) << 16)
+                                       | ((esdmode7 & 0xFFFF) << 0)
+                                       );
+                               break;
+                       }
+               }
+               debug("FSLDDR: ddr_sdram_mode_12 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_12);
+               debug("FSLDDR: ddr_sdram_mode_14 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_14);
+               debug("FSLDDR: ddr_sdram_mode_16 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_16);
+       }
 }
 
+#endif
+
 /* DDR SDRAM Interval Configuration (DDR_SDRAM_INTERVAL) */
 static void set_ddr_sdram_interval(fsl_ddr_cfg_regs_t *ddr,
                               const memctl_options_t *popts,
@@ -867,7 +1156,7 @@ static void set_ddr_sdram_interval(fsl_ddr_cfg_regs_t *ddr,
        debug("FSLDDR: ddr_sdram_interval = 0x%08x\n", ddr->ddr_sdram_interval);
 }
 
-#if defined(CONFIG_SYS_FSL_DDR3)
+#ifdef CONFIG_SYS_FSL_DDR4
 /* DDR SDRAM Mode configuration set (DDR_SDRAM_MODE) */
 static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
                               const memctl_options_t *popts,
@@ -876,6 +1165,177 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
                               unsigned int additive_latency,
                               const unsigned int unq_mrs_en)
 {
+       int i;
+       unsigned short esdmode;         /* Extended SDRAM mode */
+       unsigned short sdmode;          /* SDRAM mode */
+
+       /* Mode Register - MR1 */
+       unsigned int qoff = 0;          /* Output buffer enable 0=yes, 1=no */
+       unsigned int tdqs_en = 0;       /* TDQS Enable: 0=no, 1=yes */
+       unsigned int rtt;
+       unsigned int wrlvl_en = 0;      /* Write level enable: 0=no, 1=yes */
+       unsigned int al = 0;            /* Posted CAS# additive latency (AL) */
+       unsigned int dic = 0;           /* Output driver impedance, 40ohm */
+       unsigned int dll_en = 1;        /* DLL Enable  1=Enable (Normal),
+                                                      0=Disable (Test/Debug) */
+
+       /* Mode Register - MR0 */
+       unsigned int wr = 0;    /* Write Recovery */
+       unsigned int dll_rst;   /* DLL Reset */
+       unsigned int mode;      /* Normal=0 or Test=1 */
+       unsigned int caslat = 4;/* CAS# latency, default set as 6 cycles */
+       /* BT: Burst Type (0=Nibble Sequential, 1=Interleaved) */
+       unsigned int bt;
+       unsigned int bl;        /* BL: Burst Length */
+
+       unsigned int wr_mclk;
+       /* DDR4 support WR 10, 12, 14, 16, 18, 20, 24 */
+       static const u8 wr_table[] = {
+               0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6};
+       /* DDR4 support CAS 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24 */
+       static const u8 cas_latency_table[] = {
+               0, 1, 2, 3, 4, 5, 6, 7, 8, 8,
+               9, 9, 10, 10, 11, 11};
+
+       if (popts->rtt_override)
+               rtt = popts->rtt_override_value;
+       else
+               rtt = popts->cs_local_opts[0].odt_rtt_norm;
+
+       if (additive_latency == (cas_latency - 1))
+               al = 1;
+       if (additive_latency == (cas_latency - 2))
+               al = 2;
+
+       if (popts->quad_rank_present)
+               dic = 1;        /* output driver impedance 240/7 ohm */
+
+       /*
+        * The esdmode value will also be used for writing
+        * MR1 during write leveling for DDR3, although the
+        * bits specifically related to the write leveling
+        * scheme will be handled automatically by the DDR
+        * controller. so we set the wrlvl_en = 0 here.
+        */
+       esdmode = (0
+               | ((qoff & 0x1) << 12)
+               | ((tdqs_en & 0x1) << 11)
+               | ((rtt & 0x7) << 8)
+               | ((wrlvl_en & 0x1) << 7)
+               | ((al & 0x3) << 3)
+               | ((dic & 0x3) << 1)   /* DIC field is split */
+               | ((dll_en & 0x1) << 0)
+               );
+
+       /*
+        * DLL control for precharge PD
+        * 0=slow exit DLL off (tXPDLL)
+        * 1=fast exit DLL on (tXP)
+        */
+
+       wr_mclk = picos_to_mclk(common_dimm->twr_ps);
+       if (wr_mclk <= 24) {
+               wr = wr_table[wr_mclk - 10];
+       } else {
+               printf("Error: unsupported write recovery for mode register wr_mclk = %d\n",
+                      wr_mclk);
+       }
+
+       dll_rst = 0;    /* dll no reset */
+       mode = 0;       /* normal mode */
+
+       /* look up table to get the cas latency bits */
+       if (cas_latency >= 9 && cas_latency <= 24)
+               caslat = cas_latency_table[cas_latency - 9];
+       else
+               printf("Error: unsupported cas latency for mode register\n");
+
+       bt = 0; /* Nibble sequential */
+
+       switch (popts->burst_length) {
+       case DDR_BL8:
+               bl = 0;
+               break;
+       case DDR_OTF:
+               bl = 1;
+               break;
+       case DDR_BC4:
+               bl = 2;
+               break;
+       default:
+               printf("Error: invalid burst length of %u specified. ",
+                      popts->burst_length);
+               puts("Defaulting to on-the-fly BC4 or BL8 beats.\n");
+               bl = 1;
+               break;
+       }
+
+       sdmode = (0
+                 | ((wr & 0x7) << 9)
+                 | ((dll_rst & 0x1) << 8)
+                 | ((mode & 0x1) << 7)
+                 | (((caslat >> 1) & 0x7) << 4)
+                 | ((bt & 0x1) << 3)
+                 | ((caslat & 1) << 2)
+                 | ((bl & 0x3) << 0)
+                 );
+
+       ddr->ddr_sdram_mode = (0
+                              | ((esdmode & 0xFFFF) << 16)
+                              | ((sdmode & 0xFFFF) << 0)
+                              );
+
+       debug("FSLDDR: ddr_sdram_mode = 0x%08x\n", ddr->ddr_sdram_mode);
+
+       if (unq_mrs_en) {       /* unique mode registers are supported */
+               for (i = 1; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+                       if (popts->rtt_override)
+                               rtt = popts->rtt_override_value;
+                       else
+                               rtt = popts->cs_local_opts[i].odt_rtt_norm;
+
+                       esdmode &= 0xF8FF;      /* clear bit 10,9,8 for rtt */
+                       esdmode |= (rtt & 0x7) << 8;
+                       switch (i) {
+                       case 1:
+                               ddr->ddr_sdram_mode_3 = (0
+                                      | ((esdmode & 0xFFFF) << 16)
+                                      | ((sdmode & 0xFFFF) << 0)
+                                      );
+                               break;
+                       case 2:
+                               ddr->ddr_sdram_mode_5 = (0
+                                      | ((esdmode & 0xFFFF) << 16)
+                                      | ((sdmode & 0xFFFF) << 0)
+                                      );
+                               break;
+                       case 3:
+                               ddr->ddr_sdram_mode_7 = (0
+                                      | ((esdmode & 0xFFFF) << 16)
+                                      | ((sdmode & 0xFFFF) << 0)
+                                      );
+                               break;
+                       }
+               }
+               debug("FSLDDR: ddr_sdram_mode_3 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_3);
+               debug("FSLDDR: ddr_sdram_mode_5 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_5);
+               debug("FSLDDR: ddr_sdram_mode_5 = 0x%08x\n",
+                     ddr->ddr_sdram_mode_5);
+       }
+}
+
+#elif defined(CONFIG_SYS_FSL_DDR3)
+/* DDR SDRAM Mode configuration set (DDR_SDRAM_MODE) */
+static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
+                              const memctl_options_t *popts,
+                              const common_timing_params_t *common_dimm,
+                              unsigned int cas_latency,
+                              unsigned int additive_latency,
+                              const unsigned int unq_mrs_en)
+{
+       int i;
        unsigned short esdmode;         /* Extended SDRAM mode */
        unsigned short sdmode;          /* SDRAM mode */
 
@@ -907,9 +1367,6 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
         */
        static const u8 wr_table[] = {1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 0, 0};
 
-       const unsigned int mclk_ps = get_memory_clk_period_ps();
-       int i;
-
        if (popts->rtt_override)
                rtt = popts->rtt_override_value;
        else
@@ -950,7 +1407,7 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
         */
        dll_on = 1;
 
-       wr_mclk = (common_dimm->twr_ps + mclk_ps - 1) / mclk_ps;
+       wr_mclk = picos_to_mclk(common_dimm->twr_ps);
        if (wr_mclk <= 16) {
                wr = wr_table[wr_mclk - 5];
        } else {
@@ -1109,9 +1566,6 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
        unsigned int bt;
        unsigned int bl;        /* BL: Burst Length */
 
-#if defined(CONFIG_SYS_FSL_DDR2)
-       const unsigned int mclk_ps = get_memory_clk_period_ps();
-#endif
        dqs_en = !popts->dqs_config;
        rtt = fsl_ddr_get_rtt();
 
@@ -1141,7 +1595,7 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
 #if defined(CONFIG_SYS_FSL_DDR1)
        wr = 0;       /* Historical */
 #elif defined(CONFIG_SYS_FSL_DDR2)
-       wr = (common_dimm->twr_ps + mclk_ps - 1) / mclk_ps - 1;
+       wr = picos_to_mclk(common_dimm->twr_ps);
 #endif
        dll_res = 0;
        mode = 0;
@@ -1255,7 +1709,7 @@ static void set_timing_cfg_4(fsl_ddr_cfg_regs_t *ddr,
        unsigned int wwt = 0; /* Write-to-write turnaround for same CS */
        unsigned int dll_lock = 0; /* DDR SDRAM DLL Lock Time */
 
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
        if (popts->burst_length == DDR_BL8) {
                /* We set BL/2 for fixed BL8 */
                rrt = 0;        /* BL/2 clocks */
@@ -1265,6 +1719,11 @@ static void set_timing_cfg_4(fsl_ddr_cfg_regs_t *ddr,
                rrt = 2;        /* BL/2 + 2 clocks */
                wwt = 2;        /* BL/2 + 2 clocks */
        }
+#endif
+
+#ifdef CONFIG_SYS_FSL_DDR4
+       dll_lock = 2;   /* tDLLK = 1024 clocks */
+#elif defined(CONFIG_SYS_FSL_DDR3)
        dll_lock = 1;   /* tDLLK = 512 clocks from spec */
 #endif
        ddr->timing_cfg_4 = (0
@@ -1285,9 +1744,12 @@ static void set_timing_cfg_5(fsl_ddr_cfg_regs_t *ddr, unsigned int cas_latency)
        unsigned int wodt_on = 0;       /* Write to ODT on */
        unsigned int wodt_off = 0;      /* Write to ODT off */
 
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
+       unsigned int wr_lat = ((ddr->timing_cfg_2 & 0x00780000) >> 19) +
+                             ((ddr->timing_cfg_2 & 0x00040000) >> 14);
        /* rodt_on = timing_cfg_1[caslat] - timing_cfg_2[wrlat] + 1 */
-       rodt_on = cas_latency - ((ddr->timing_cfg_2 & 0x00780000) >> 19) + 1;
+       if (cas_latency >= wr_lat)
+               rodt_on = cas_latency - wr_lat + 1;
        rodt_off = 4;   /*  4 clocks */
        wodt_on = 1;    /*  1 clocks */
        wodt_off = 4;   /*  4 clocks */
@@ -1302,6 +1764,164 @@ static void set_timing_cfg_5(fsl_ddr_cfg_regs_t *ddr, unsigned int cas_latency)
        debug("FSLDDR: timing_cfg_5 = 0x%08x\n", ddr->timing_cfg_5);
 }
 
+#ifdef CONFIG_SYS_FSL_DDR4
+static void set_timing_cfg_6(fsl_ddr_cfg_regs_t *ddr)
+{
+       unsigned int hs_caslat = 0;
+       unsigned int hs_wrlat = 0;
+       unsigned int hs_wrrec = 0;
+       unsigned int hs_clkadj = 0;
+       unsigned int hs_wrlvl_start = 0;
+
+       ddr->timing_cfg_6 = (0
+                            | ((hs_caslat & 0x1f) << 24)
+                            | ((hs_wrlat & 0x1f) << 19)
+                            | ((hs_wrrec & 0x1f) << 12)
+                            | ((hs_clkadj & 0x1f) << 6)
+                            | ((hs_wrlvl_start & 0x1f) << 0)
+                           );
+       debug("FSLDDR: timing_cfg_6 = 0x%08x\n", ddr->timing_cfg_6);
+}
+
+static void set_timing_cfg_7(fsl_ddr_cfg_regs_t *ddr,
+                       const common_timing_params_t *common_dimm)
+{
+       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));
+       par_lat = 0;
+       cs_to_cmd = 0;
+
+       if (txpr <= 200)
+               cke_rst = 0;
+       else if (txpr <= 256)
+               cke_rst = 1;
+       else if (txpr <= 512)
+               cke_rst = 2;
+       else
+               cke_rst = 3;
+
+       if (tcksre <= 19)
+               cksre = tcksre - 5;
+       else
+               cksre = 15;
+
+       if (tcksrx <= 19)
+               cksrx = tcksrx - 5;
+       else
+               cksrx = 15;
+
+       ddr->timing_cfg_7 = (0
+                            | ((cke_rst & 0x3) << 28)
+                            | ((cksre & 0xf) << 24)
+                            | ((cksrx & 0xf) << 20)
+                            | ((par_lat & 0xf) << 16)
+                            | ((cs_to_cmd & 0xf) << 4)
+                           );
+       debug("FSLDDR: timing_cfg_7 = 0x%08x\n", ddr->timing_cfg_7);
+}
+
+static void set_timing_cfg_8(fsl_ddr_cfg_regs_t *ddr,
+                            const memctl_options_t *popts,
+                            const common_timing_params_t *common_dimm,
+                            unsigned int cas_latency)
+{
+       unsigned int rwt_bg, wrt_bg, rrt_bg, wwt_bg;
+       unsigned int acttoact_bg, wrtord_bg, pre_all_rec;
+       unsigned int tccdl = picos_to_mclk(common_dimm->tccdl_ps);
+       unsigned int wr_lat = ((ddr->timing_cfg_2 & 0x00780000) >> 19) +
+                             ((ddr->timing_cfg_2 & 0x00040000) >> 14);
+
+       rwt_bg = cas_latency + 2 + 4 - wr_lat;
+       if (rwt_bg < tccdl)
+               rwt_bg = tccdl - rwt_bg;
+       else
+               rwt_bg = 0;
+
+       wrt_bg = wr_lat + 4 + 1 - cas_latency;
+       if (wrt_bg < tccdl)
+               wrt_bg = tccdl - wrt_bg;
+       else
+               wrt_bg = 0;
+
+       if (popts->burst_length == DDR_BL8) {
+               rrt_bg = tccdl - 4;
+               wwt_bg = tccdl - 4;
+       } else {
+               rrt_bg = tccdl - 2;
+               wwt_bg = tccdl - 4;
+       }
+
+       acttoact_bg = picos_to_mclk(common_dimm->trrdl_ps);
+       wrtord_bg = max(4, picos_to_mclk(7500));
+       pre_all_rec = 0;
+
+       ddr->timing_cfg_8 = (0
+                            | ((rwt_bg & 0xf) << 28)
+                            | ((wrt_bg & 0xf) << 24)
+                            | ((rrt_bg & 0xf) << 20)
+                            | ((wwt_bg & 0xf) << 16)
+                            | ((acttoact_bg & 0xf) << 12)
+                            | ((wrtord_bg & 0xf) << 8)
+                            | ((pre_all_rec & 0x1f) << 0)
+                           );
+
+       debug("FSLDDR: timing_cfg_8 = 0x%08x\n", ddr->timing_cfg_8);
+}
+
+static void set_timing_cfg_9(fsl_ddr_cfg_regs_t *ddr)
+{
+       ddr->timing_cfg_9 = 0;
+       debug("FSLDDR: timing_cfg_9 = 0x%08x\n", ddr->timing_cfg_9);
+}
+
+static void set_ddr_dq_mapping(fsl_ddr_cfg_regs_t *ddr,
+                              const dimm_params_t *dimm_params)
+{
+       ddr->dq_map_0 = ((dimm_params->dq_mapping[0] & 0x3F) << 26) |
+                       ((dimm_params->dq_mapping[1] & 0x3F) << 20) |
+                       ((dimm_params->dq_mapping[2] & 0x3F) << 14) |
+                       ((dimm_params->dq_mapping[3] & 0x3F) << 8) |
+                       ((dimm_params->dq_mapping[4] & 0x3F) << 2);
+
+       ddr->dq_map_1 = ((dimm_params->dq_mapping[5] & 0x3F) << 26) |
+                       ((dimm_params->dq_mapping[6] & 0x3F) << 20) |
+                       ((dimm_params->dq_mapping[7] & 0x3F) << 14) |
+                       ((dimm_params->dq_mapping[10] & 0x3F) << 8) |
+                       ((dimm_params->dq_mapping[11] & 0x3F) << 2);
+
+       ddr->dq_map_2 = ((dimm_params->dq_mapping[12] & 0x3F) << 26) |
+                       ((dimm_params->dq_mapping[13] & 0x3F) << 20) |
+                       ((dimm_params->dq_mapping[14] & 0x3F) << 14) |
+                       ((dimm_params->dq_mapping[15] & 0x3F) << 8) |
+                       ((dimm_params->dq_mapping[16] & 0x3F) << 2);
+
+       ddr->dq_map_3 = ((dimm_params->dq_mapping[17] & 0x3F) << 26) |
+                       ((dimm_params->dq_mapping[8] & 0x3F) << 20) |
+                       ((dimm_params->dq_mapping[9] & 0x3F) << 14) |
+                       dimm_params->dq_mapping_ors;
+
+       debug("FSLDDR: dq_map_0 = 0x%08x\n", ddr->dq_map_0);
+       debug("FSLDDR: dq_map_1 = 0x%08x\n", ddr->dq_map_1);
+       debug("FSLDDR: dq_map_2 = 0x%08x\n", ddr->dq_map_2);
+       debug("FSLDDR: dq_map_3 = 0x%08x\n", ddr->dq_map_3);
+}
+static void set_ddr_sdram_cfg_3(fsl_ddr_cfg_regs_t *ddr,
+                              const memctl_options_t *popts)
+{
+       int rd_pre;
+
+       rd_pre = popts->quad_rank_present ? 1 : 0;
+
+       ddr->ddr_sdram_cfg_3 = (rd_pre & 0x1) << 16;
+
+       debug("FSLDDR: ddr_sdram_cfg_3 = 0x%08x\n", ddr->ddr_sdram_cfg_3);
+}
+#endif /* CONFIG_SYS_FSL_DDR4 */
+
 /* DDR ZQ Calibration Control (DDR_ZQ_CNTL) */
 static void set_ddr_zq_cntl(fsl_ddr_cfg_regs_t *ddr, unsigned int zq_en)
 {
@@ -1310,11 +1930,21 @@ static void set_ddr_zq_cntl(fsl_ddr_cfg_regs_t *ddr, unsigned int zq_en)
        unsigned int zqoper = 0;
        /* Normal Operation Short Calibration Time (tZQCS) */
        unsigned int zqcs = 0;
+#ifdef CONFIG_SYS_FSL_DDR4
+       unsigned int zqcs_init;
+#endif
 
        if (zq_en) {
+#ifdef CONFIG_SYS_FSL_DDR4
+               zqinit = 10;    /* 1024 clocks */
+               zqoper = 9;     /* 512 clocks */
+               zqcs = 7;       /* 128 clocks */
+               zqcs_init = 5;  /* 1024 refresh sequences */
+#else
                zqinit = 9;     /* 512 clocks */
                zqoper = 8;     /* 256 clocks */
                zqcs = 6;       /* 64 clocks */
+#endif
        }
 
        ddr->ddr_zq_cntl = (0
@@ -1322,6 +1952,9 @@ static void set_ddr_zq_cntl(fsl_ddr_cfg_regs_t *ddr, unsigned int zq_en)
                            | ((zqinit & 0xF) << 24)
                            | ((zqoper & 0xF) << 16)
                            | ((zqcs & 0xF) << 8)
+#ifdef CONFIG_SYS_FSL_DDR4
+                           | ((zqcs_init & 0xF) << 0)
+#endif
                            );
        debug("FSLDDR: zq_cntl = 0x%08x\n", ddr->ddr_zq_cntl);
 }
@@ -1478,7 +2111,7 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
         */
        cas_latency = (popts->cas_latency_override)
                ? popts->cas_latency_override_value
-               : common_dimm->lowest_common_SPD_caslat;
+               : common_dimm->lowest_common_spd_caslat;
 
        additive_latency = (popts->additive_latency_override)
                ? popts->additive_latency_override_value
@@ -1639,6 +2272,10 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
        set_ddr_sdram_mode(ddr, popts, common_dimm,
                                cas_latency, additive_latency, unq_mrs_en);
        set_ddr_sdram_mode_2(ddr, popts, common_dimm, unq_mrs_en);
+#ifdef CONFIG_SYS_FSL_DDR4
+       set_ddr_sdram_mode_9(ddr, popts, common_dimm, unq_mrs_en);
+       set_ddr_sdram_mode_10(ddr, popts, common_dimm, unq_mrs_en);
+#endif
        set_ddr_sdram_interval(ddr, popts, common_dimm);
        set_ddr_data_init(ddr);
        set_ddr_sdram_clk_cntl(ddr, popts);
@@ -1646,6 +2283,14 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
        set_ddr_init_ext_addr(ddr);
        set_timing_cfg_4(ddr, popts);
        set_timing_cfg_5(ddr, cas_latency);
+#ifdef CONFIG_SYS_FSL_DDR4
+       set_ddr_sdram_cfg_3(ddr, popts);
+       set_timing_cfg_6(ddr);
+       set_timing_cfg_7(ddr, common_dimm);
+       set_timing_cfg_8(ddr, popts, common_dimm, cas_latency);
+       set_timing_cfg_9(ddr);
+       set_ddr_dq_mapping(ddr, dimm_params);
+#endif
 
        set_ddr_zq_cntl(ddr, zq_en);
        set_ddr_wrlvl_cntl(ddr, wrlvl_en, popts);
diff --git a/drivers/ddr/fsl/ddr4_dimm_params.c b/drivers/ddr/fsl/ddr4_dimm_params.c
new file mode 100644 (file)
index 0000000..4745b7f
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * calculate the organization and timing parameter
+ * from ddr3 spd, please refer to the spec
+ * JEDEC standard No.21-C 4_01_02_12R23A.pdf
+ *
+ *
+ */
+
+#include <common.h>
+#include <fsl_ddr_sdram.h>
+
+#include <fsl_ddr.h>
+
+/*
+ * Calculate the Density of each Physical Rank.
+ * Returned size is in bytes.
+ *
+ * Total DIMM size =
+ * sdram capacity(bit) / 8 * primary bus width / sdram width
+ *                     * Logical Ranks per DIMM
+ *
+ * where: sdram capacity  = spd byte4[3:0]
+ *        primary bus width = spd byte13[2:0]
+ *        sdram width = spd byte12[2:0]
+ *        Logical Ranks per DIMM = spd byte12[5:3] for SDP, DDP, QDP
+ *                                 spd byte12{5:3] * spd byte6[6:4] for 3DS
+ *
+ * To simplify each rank size = total DIMM size / Number of Package Ranks
+ * where Number of Package Ranks = spd byte12[5:3]
+ *
+ * SPD byte4 - sdram density and banks
+ *     bit[3:0]        size(bit)       size(byte)
+ *     0000            256Mb           32MB
+ *     0001            512Mb           64MB
+ *     0010            1Gb             128MB
+ *     0011            2Gb             256MB
+ *     0100            4Gb             512MB
+ *     0101            8Gb             1GB
+ *     0110            16Gb            2GB
+ *      0111           32Gb            4GB
+ *
+ * SPD byte13 - module memory bus width
+ *     bit[2:0]        primary bus width
+ *     000             8bits
+ *     001             16bits
+ *     010             32bits
+ *     011             64bits
+ *
+ * SPD byte12 - module organization
+ *     bit[2:0]        sdram device width
+ *     000             4bits
+ *     001             8bits
+ *     010             16bits
+ *     011             32bits
+ *
+ * SPD byte12 - module organization
+ *     bit[5:3]        number of package ranks per DIMM
+ *     000             1
+ *     001             2
+ *     010             3
+ *     011             4
+ *
+ * SPD byte6 - SDRAM package type
+ *     bit[6:4]        Die count
+ *     000             1
+ *     001             2
+ *     010             3
+ *     011             4
+ *     100             5
+ *     101             6
+ *     110             7
+ *     111             8
+ *
+ * SPD byte6 - SRAM package type
+ *     bit[1:0]        Signal loading
+ *     00              Not specified
+ *     01              Multi load stack
+ *     10              Sigle load stack (3DS)
+ *     11              Reserved
+ */
+static unsigned long long
+compute_ranksize(const struct ddr4_spd_eeprom_s *spd)
+{
+       unsigned long long bsize;
+
+       int nbit_sdram_cap_bsize = 0;
+       int nbit_primary_bus_width = 0;
+       int nbit_sdram_width = 0;
+       int die_count = 0;
+       bool package_3ds;
+
+       if ((spd->density_banks & 0xf) <= 7)
+               nbit_sdram_cap_bsize = (spd->density_banks & 0xf) + 28;
+       if ((spd->bus_width & 0x7) < 4)
+               nbit_primary_bus_width = (spd->bus_width & 0x7) + 3;
+       if ((spd->organization & 0x7) < 4)
+               nbit_sdram_width = (spd->organization & 0x7) + 2;
+       package_3ds = (spd->package_type & 0x3) == 0x2;
+       if (package_3ds)
+               die_count = (spd->package_type >> 4) & 0x7;
+
+       bsize = 1ULL << (nbit_sdram_cap_bsize - 3 +
+                        nbit_primary_bus_width - nbit_sdram_width +
+                        die_count);
+
+       debug("DDR: DDR III rank density = 0x%16llx\n", bsize);
+
+       return bsize;
+}
+
+#define spd_to_ps(mtb, ftb)    \
+       (mtb * pdimm->mtb_ps + (ftb * pdimm->ftb_10th_ps) / 10)
+/*
+ * ddr_compute_dimm_parameters for DDR3 SPD
+ *
+ * Compute DIMM parameters based upon the SPD information in spd.
+ * Writes the results to the dimm_params_t structure pointed by pdimm.
+ *
+ */
+unsigned int
+ddr_compute_dimm_parameters(const generic_spd_eeprom_t *spd,
+                           dimm_params_t *pdimm,
+                           unsigned int dimm_number)
+{
+       unsigned int retval;
+       int i;
+
+       if (spd->mem_type) {
+               if (spd->mem_type != SPD_MEMTYPE_DDR4) {
+                       printf("DIMM %u: is not a DDR4 SPD.\n", dimm_number);
+                       return 1;
+               }
+       } else {
+               memset(pdimm, 0, sizeof(dimm_params_t));
+               return 1;
+       }
+
+       retval = ddr4_spd_check(spd);
+       if (retval) {
+               printf("DIMM %u: failed checksum\n", dimm_number);
+               return 2;
+       }
+
+       /*
+        * The part name in ASCII in the SPD EEPROM is not null terminated.
+        * Guarantee null termination here by presetting all bytes to 0
+        * and copying the part name in ASCII from the SPD onto it
+        */
+       memset(pdimm->mpart, 0, sizeof(pdimm->mpart));
+       if ((spd->info_size_crc & 0xF) > 2)
+               memcpy(pdimm->mpart, spd->mpart, sizeof(pdimm->mpart) - 1);
+
+       /* DIMM organization parameters */
+       pdimm->n_ranks = ((spd->organization >> 3) & 0x7) + 1;
+       pdimm->rank_density = compute_ranksize(spd);
+       pdimm->capacity = pdimm->n_ranks * pdimm->rank_density;
+       pdimm->primary_sdram_width = 1 << (3 + (spd->bus_width & 0x7));
+       if ((spd->bus_width >> 3) & 0x3)
+               pdimm->ec_sdram_width = 8;
+       else
+               pdimm->ec_sdram_width = 0;
+       pdimm->data_width = pdimm->primary_sdram_width
+                         + pdimm->ec_sdram_width;
+       pdimm->device_width = 1 << ((spd->organization & 0x7) + 2);
+
+       /* These are the types defined by the JEDEC DDR3 SPD spec */
+       pdimm->mirrored_dimm = 0;
+       pdimm->registered_dimm = 0;
+       switch (spd->module_type & DDR3_SPD_MODULETYPE_MASK) {
+       case DDR3_SPD_MODULETYPE_RDIMM:
+               /* Registered/buffered DIMMs */
+               pdimm->registered_dimm = 1;
+               break;
+
+       case DDR3_SPD_MODULETYPE_UDIMM:
+       case DDR3_SPD_MODULETYPE_SO_DIMM:
+               /* Unbuffered DIMMs */
+               if (spd->mod_section.unbuffered.addr_mapping & 0x1)
+                       pdimm->mirrored_dimm = 1;
+               break;
+
+       default:
+               printf("unknown module_type 0x%02X\n", spd->module_type);
+               return 1;
+       }
+
+       /* SDRAM device parameters */
+       pdimm->n_row_addr = ((spd->addressing >> 3) & 0x7) + 12;
+       pdimm->n_col_addr = (spd->addressing & 0x7) + 9;
+       pdimm->bank_addr_bits = (spd->density_banks >> 4) & 0x3;
+       pdimm->bank_group_bits = (spd->density_banks >> 6) & 0x3;
+
+       /*
+        * The SPD spec has not the ECC bit,
+        * We consider the DIMM as ECC capability
+        * when the extension bus exist
+        */
+       if (pdimm->ec_sdram_width)
+               pdimm->edc_config = 0x02;
+       else
+               pdimm->edc_config = 0x00;
+
+       /*
+        * The SPD spec has not the burst length byte
+        * but DDR4 spec has nature BL8 and BC4,
+        * BL8 -bit3, BC4 -bit2
+        */
+       pdimm->burst_lengths_bitmask = 0x0c;
+       pdimm->row_density = __ilog2(pdimm->rank_density);
+
+       /* MTB - medium timebase
+        * The MTB in the SPD spec is 125ps,
+        *
+        * FTB - fine timebase
+        * use 1/10th of ps as our unit to avoid floating point
+        * eg, 10 for 1ps, 25 for 2.5ps, 50 for 5ps
+        */
+       if ((spd->timebases & 0xf) == 0x0) {
+               pdimm->mtb_ps = 125;
+               pdimm->ftb_10th_ps = 10;
+
+       } else {
+               printf("Unknown Timebases\n");
+       }
+
+       /* sdram minimum cycle time */
+       pdimm->tckmin_x_ps = spd_to_ps(spd->tck_min, spd->fine_tck_min);
+
+       /* sdram max cycle time */
+       pdimm->tckmax_ps = spd_to_ps(spd->tck_max, spd->fine_tck_max);
+
+       /*
+        * CAS latency supported
+        * bit0 - CL7
+        * bit4 - CL11
+        * bit8 - CL15
+        * bit12- CL19
+        * bit16- CL23
+        */
+       pdimm->caslat_x  = (spd->caslat_b1 << 7)        |
+                          (spd->caslat_b2 << 15)       |
+                          (spd->caslat_b3 << 23);
+
+       BUG_ON(spd->caslat_b4 != 0);
+
+       /*
+        * min CAS latency time
+        */
+       pdimm->taa_ps = spd_to_ps(spd->taa_min, spd->fine_taa_min);
+
+       /*
+        * min RAS to CAS delay time
+        */
+       pdimm->trcd_ps = spd_to_ps(spd->trcd_min, spd->fine_trcd_min);
+
+       /*
+        * Min Row Precharge Delay Time
+        */
+       pdimm->trp_ps = spd_to_ps(spd->trp_min, spd->fine_trp_min);
+
+       /* min active to precharge delay time */
+       pdimm->tras_ps = (((spd->tras_trc_ext & 0xf) << 8) +
+                         spd->tras_min_lsb) * pdimm->mtb_ps;
+
+       /* min active to actice/refresh delay time */
+       pdimm->trc_ps = spd_to_ps((((spd->tras_trc_ext & 0xf0) << 4) +
+                                  spd->trc_min_lsb), spd->fine_trc_min);
+       /* Min Refresh Recovery Delay Time */
+       pdimm->trfc1_ps = ((spd->trfc1_min_msb << 8) | (spd->trfc1_min_lsb)) *
+                      pdimm->mtb_ps;
+       pdimm->trfc2_ps = ((spd->trfc2_min_msb << 8) | (spd->trfc2_min_lsb)) *
+                      pdimm->mtb_ps;
+       pdimm->trfc4_ps = ((spd->trfc4_min_msb << 8) | (spd->trfc4_min_lsb)) *
+                       pdimm->mtb_ps;
+       /* min four active window delay time */
+       pdimm->tfaw_ps = (((spd->tfaw_msb & 0xf) << 8) | spd->tfaw_min) *
+                       pdimm->mtb_ps;
+
+       /* min row active to row active delay time, different bank group */
+       pdimm->trrds_ps = spd_to_ps(spd->trrds_min, spd->fine_trrds_min);
+       /* min row active to row active delay time, same bank group */
+       pdimm->trrdl_ps = spd_to_ps(spd->trrdl_min, spd->fine_trrdl_min);
+       /* min CAS to CAS Delay Time (tCCD_Lmin), same bank group */
+       pdimm->tccdl_ps = spd_to_ps(spd->tccdl_min, spd->fine_tccdl_min);
+
+       /*
+        * Average periodic refresh interval
+        * tREFI = 7.8 us at normal temperature range
+        */
+       pdimm->refresh_rate_ps = 7800000;
+
+       for (i = 0; i < 18; i++)
+               pdimm->dq_mapping[i] = spd->mapping[i];
+
+       pdimm->dq_mapping_ors = ((spd->mapping[0] >> 6) & 0x3) == 0 ? 1 : 0;
+
+       return 0;
+}
diff --git a/drivers/ddr/fsl/fsl_ddr_gen4.c b/drivers/ddr/fsl/fsl_ddr_gen4.c
new file mode 100644 (file)
index 0000000..7cd878a
--- /dev/null
@@ -0,0 +1,234 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <fsl_ddr_sdram.h>
+#include <asm/processor.h>
+#include <fsl_ddr.h>
+
+#if (CONFIG_CHIP_SELECTS_PER_CTRL > 4)
+#error Invalid setting for CONFIG_CHIP_SELECTS_PER_CTRL
+#endif
+
+/*
+ * regs has the to-be-set values for DDR controller registers
+ * ctrl_num is the DDR controller number
+ * step: 0 goes through the initialization in one pass
+ *       1 sets registers and returns before enabling controller
+ *       2 resumes from step 1 and continues to initialize
+ * Dividing the initialization to two steps to deassert DDR reset signal
+ * to comply with JEDEC specs for RDIMMs.
+ */
+void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
+                            unsigned int ctrl_num, int step)
+{
+       unsigned int i, bus_width;
+       struct ccsr_ddr __iomem *ddr;
+       u32 temp_sdram_cfg;
+       u32 total_gb_size_per_controller;
+       int timeout;
+
+       switch (ctrl_num) {
+       case 0:
+               ddr = (void *)CONFIG_SYS_FSL_DDR_ADDR;
+               break;
+#if defined(CONFIG_SYS_FSL_DDR2_ADDR) && (CONFIG_NUM_DDR_CONTROLLERS > 1)
+       case 1:
+               ddr = (void *)CONFIG_SYS_FSL_DDR2_ADDR;
+               break;
+#endif
+#if defined(CONFIG_SYS_FSL_DDR3_ADDR) && (CONFIG_NUM_DDR_CONTROLLERS > 2)
+       case 2:
+               ddr = (void *)CONFIG_SYS_FSL_DDR3_ADDR;
+               break;
+#endif
+#if defined(CONFIG_SYS_FSL_DDR4_ADDR) && (CONFIG_NUM_DDR_CONTROLLERS > 3)
+       case 3:
+               ddr = (void *)CONFIG_SYS_FSL_DDR4_ADDR;
+               break;
+#endif
+       default:
+               printf("%s unexpected ctrl_num = %u\n", __func__, ctrl_num);
+               return;
+       }
+
+       if (step == 2)
+               goto step2;
+
+       if (regs->ddr_eor)
+               ddr_out32(&ddr->eor, regs->ddr_eor);
+
+       ddr_out32(&ddr->sdram_clk_cntl, regs->ddr_sdram_clk_cntl);
+
+       for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+               if (i == 0) {
+                       ddr_out32(&ddr->cs0_bnds, regs->cs[i].bnds);
+                       ddr_out32(&ddr->cs0_config, regs->cs[i].config);
+                       ddr_out32(&ddr->cs0_config_2, regs->cs[i].config_2);
+
+               } else if (i == 1) {
+                       ddr_out32(&ddr->cs1_bnds, regs->cs[i].bnds);
+                       ddr_out32(&ddr->cs1_config, regs->cs[i].config);
+                       ddr_out32(&ddr->cs1_config_2, regs->cs[i].config_2);
+
+               } else if (i == 2) {
+                       ddr_out32(&ddr->cs2_bnds, regs->cs[i].bnds);
+                       ddr_out32(&ddr->cs2_config, regs->cs[i].config);
+                       ddr_out32(&ddr->cs2_config_2, regs->cs[i].config_2);
+
+               } else if (i == 3) {
+                       ddr_out32(&ddr->cs3_bnds, regs->cs[i].bnds);
+                       ddr_out32(&ddr->cs3_config, regs->cs[i].config);
+                       ddr_out32(&ddr->cs3_config_2, regs->cs[i].config_2);
+               }
+       }
+
+       ddr_out32(&ddr->timing_cfg_3, regs->timing_cfg_3);
+       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->timing_cfg_4, regs->timing_cfg_4);
+       ddr_out32(&ddr->timing_cfg_5, regs->timing_cfg_5);
+       ddr_out32(&ddr->timing_cfg_6, regs->timing_cfg_6);
+       ddr_out32(&ddr->timing_cfg_7, regs->timing_cfg_7);
+       ddr_out32(&ddr->timing_cfg_8, regs->timing_cfg_8);
+       ddr_out32(&ddr->timing_cfg_9, regs->timing_cfg_9);
+       ddr_out32(&ddr->ddr_zq_cntl, regs->ddr_zq_cntl);
+       ddr_out32(&ddr->dq_map_0, regs->dq_map_0);
+       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);
+       ddr_out32(&ddr->sdram_mode_3, regs->ddr_sdram_mode_3);
+       ddr_out32(&ddr->sdram_mode_4, regs->ddr_sdram_mode_4);
+       ddr_out32(&ddr->sdram_mode_5, regs->ddr_sdram_mode_5);
+       ddr_out32(&ddr->sdram_mode_6, regs->ddr_sdram_mode_6);
+       ddr_out32(&ddr->sdram_mode_7, regs->ddr_sdram_mode_7);
+       ddr_out32(&ddr->sdram_mode_8, regs->ddr_sdram_mode_8);
+       ddr_out32(&ddr->sdram_mode_9, regs->ddr_sdram_mode_9);
+       ddr_out32(&ddr->sdram_mode_10, regs->ddr_sdram_mode_10);
+       ddr_out32(&ddr->sdram_mode_11, regs->ddr_sdram_mode_11);
+       ddr_out32(&ddr->sdram_mode_12, regs->ddr_sdram_mode_12);
+       ddr_out32(&ddr->sdram_mode_13, regs->ddr_sdram_mode_13);
+       ddr_out32(&ddr->sdram_mode_14, regs->ddr_sdram_mode_14);
+       ddr_out32(&ddr->sdram_mode_15, regs->ddr_sdram_mode_15);
+       ddr_out32(&ddr->sdram_mode_16, regs->ddr_sdram_mode_16);
+       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
+       /*
+        * Skip these two registers if running on emulator
+        * because emulator doesn't have skew between bytes.
+        */
+
+       if (regs->ddr_wrlvl_cntl_2)
+               ddr_out32(&ddr->ddr_wrlvl_cntl_2, regs->ddr_wrlvl_cntl_2);
+       if (regs->ddr_wrlvl_cntl_3)
+               ddr_out32(&ddr->ddr_wrlvl_cntl_3, regs->ddr_wrlvl_cntl_3);
+#endif
+
+       ddr_out32(&ddr->ddr_sr_cntr, regs->ddr_sr_cntr);
+       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_sdram_rcw_3, regs->ddr_sdram_rcw_3);
+       ddr_out32(&ddr->ddr_sdram_rcw_4, regs->ddr_sdram_rcw_4);
+       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);
+       ddr_out32(&ddr->err_disable, regs->err_disable);
+       ddr_out32(&ddr->err_int_en, regs->err_int_en);
+       for (i = 0; i < 32; i++) {
+               if (regs->debug[i]) {
+                       debug("Write to debug_%d as %08x\n",
+                             i+1, regs->debug[i]);
+                       ddr_out32(&ddr->debug[i], regs->debug[i]);
+               }
+       }
+
+       /*
+        * For RDIMMs, JEDEC spec requires clocks to be stable before reset is
+        * deasserted. Clocks start when any chip select is enabled and clock
+        * control register is set. Because all DDR components are connected to
+        * one reset signal, this needs to be done in two steps. Step 1 is to
+        * get the clocks started. Step 2 resumes after reset signal is
+        * deasserted.
+        */
+       if (step == 1) {
+               udelay(200);
+               return;
+       }
+
+step2:
+       /* Set, but do not enable the memory */
+       temp_sdram_cfg = regs->ddr_sdram_cfg;
+       temp_sdram_cfg &= ~(SDRAM_CFG_MEM_EN);
+       ddr_out32(&ddr->sdram_cfg, temp_sdram_cfg);
+
+       /*
+        * 500 painful micro-seconds must elapse between
+        * the DDR clock setup and the DDR config enable.
+        * DDR2 need 200 us, and DDR3 need 500 us from spec,
+        * we choose the max, that is 500 us for all of case.
+        */
+       udelay(500);
+       asm volatile("sync;isync");
+
+       /* 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("sync;isync");
+
+       total_gb_size_per_controller = 0;
+       for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+               if (!(regs->cs[i].config & 0x80000000))
+                       continue;
+               total_gb_size_per_controller += 1 << (
+                       ((regs->cs[i].config >> 14) & 0x3) + 2 +
+                       ((regs->cs[i].config >> 8) & 0x7) + 12 +
+                       ((regs->cs[i].config >> 4) & 0x3) + 0 +
+                       ((regs->cs[i].config >> 0) & 0x7) + 8 +
+                       3 - ((regs->ddr_sdram_cfg >> 19) & 0x3) -
+                       26);                    /* minus 26 (count of 64M) */
+       }
+       if (fsl_ddr_get_intl3r() & 0x80000000)  /* 3-way interleaving */
+               total_gb_size_per_controller *= 3;
+       else if (regs->cs[0].config & 0x20000000) /* 2-way interleaving */
+               total_gb_size_per_controller <<= 1;
+       /*
+        * total memory / bus width = transactions needed
+        * transactions needed / data rate = seconds
+        * to add plenty of buffer, double the time
+        * For example, 2GB on 666MT/s 64-bit bus takes about 402ms
+        * Let's wait for 800ms
+        */
+       bus_width = 3 - ((ddr->sdram_cfg & SDRAM_CFG_DBW_MASK)
+                       >> SDRAM_CFG_DBW_SHIFT);
+       timeout = ((total_gb_size_per_controller << (6 - bus_width)) * 100 /
+               (get_ddr_freq(0) >> 20)) << 2;
+       total_gb_size_per_controller >>= 4;     /* shift down to gb size */
+       debug("total %d GB\n", total_gb_size_per_controller);
+       debug("Need to wait up to %d * 10ms\n", timeout);
+
+       /* Poll DDR_SDRAM_CFG_2[D_INIT] bit until auto-data init is done.  */
+       while ((ddr_in32(&ddr->sdram_cfg_2) & SDRAM_CFG2_D_INIT) &&
+               (timeout >= 0)) {
+               udelay(10000);          /* throttle polling rate */
+               timeout--;
+       }
+
+       if (timeout <= 0)
+               printf("Waiting for D_INIT timeout. Memory may not work.\n");
+
+}
index ebf3ed6f388fc38c3a591555fb5bb565a349d847..cfe1e1f55aa613035e30ef7818e0daa68c479583 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2010-2012 Freescale Semiconductor, Inc.
+ * Copyright 2010-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -153,25 +153,38 @@ static void lowest_common_dimm_parameters_edit(fsl_ddr_info_t *pinfo,
        static const struct options_string options[] = {
                COMMON_TIMING(tckmin_x_ps),
                COMMON_TIMING(tckmax_ps),
-               COMMON_TIMING(tckmax_max_ps),
+               COMMON_TIMING(taamin_ps),
                COMMON_TIMING(trcd_ps),
                COMMON_TIMING(trp_ps),
                COMMON_TIMING(tras_ps),
-               COMMON_TIMING(twr_ps),
+
+#ifdef CONFIG_SYS_FSL_DDR4
+               COMMON_TIMING(trfc1_ps),
+               COMMON_TIMING(trfc2_ps),
+               COMMON_TIMING(trfc4_ps),
+               COMMON_TIMING(trrds_ps),
+               COMMON_TIMING(trrdl_ps),
+               COMMON_TIMING(tccdl_ps),
+#else
                COMMON_TIMING(twtr_ps),
                COMMON_TIMING(trfc_ps),
                COMMON_TIMING(trrd_ps),
+               COMMON_TIMING(trtp_ps),
+#endif
+               COMMON_TIMING(twr_ps),
                COMMON_TIMING(trc_ps),
                COMMON_TIMING(refresh_rate_ps),
+               COMMON_TIMING(extended_op_srt),
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
                COMMON_TIMING(tis_ps),
                COMMON_TIMING(tih_ps),
                COMMON_TIMING(tds_ps),
                COMMON_TIMING(tdh_ps),
-               COMMON_TIMING(trtp_ps),
                COMMON_TIMING(tdqsq_max_ps),
                COMMON_TIMING(tqhs_ps),
+#endif
                COMMON_TIMING(ndimms_present),
-               COMMON_TIMING(lowest_common_SPD_caslat),
+               COMMON_TIMING(lowest_common_spd_caslat),
                COMMON_TIMING(highest_common_derated_caslat),
                COMMON_TIMING(additive_latency),
                COMMON_TIMING(all_dimms_burst_lengths_bitmask),
@@ -211,7 +224,12 @@ static void fsl_ddr_dimm_parameters_edit(fsl_ddr_info_t *pinfo,
                DIMM_PARM(n_row_addr),
                DIMM_PARM(n_col_addr),
                DIMM_PARM(edc_config),
+#ifdef CONFIG_SYS_FSL_DDR4
+               DIMM_PARM(bank_addr_bits),
+               DIMM_PARM(bank_group_bits),
+#else
                DIMM_PARM(n_banks_per_sdram_device),
+#endif
                DIMM_PARM(burst_lengths_bitmask),
                DIMM_PARM(row_density),
 
@@ -229,20 +247,32 @@ static void fsl_ddr_dimm_parameters_edit(fsl_ddr_info_t *pinfo,
                DIMM_PARM(trcd_ps),
                DIMM_PARM(trp_ps),
                DIMM_PARM(tras_ps),
+#ifdef CONFIG_SYS_FSL_DDR4
+               DIMM_PARM(trfc1_ps),
+               DIMM_PARM(trfc2_ps),
+               DIMM_PARM(trfc4_ps),
+               DIMM_PARM(trrds_ps),
+               DIMM_PARM(trrdl_ps),
+               DIMM_PARM(tccdl_ps),
+#else
                DIMM_PARM(twr_ps),
                DIMM_PARM(twtr_ps),
                DIMM_PARM(trfc_ps),
                DIMM_PARM(trrd_ps),
+               DIMM_PARM(trtp_ps),
+#endif
                DIMM_PARM(trc_ps),
                DIMM_PARM(refresh_rate_ps),
+               DIMM_PARM(extended_op_srt),
 
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
                DIMM_PARM(tis_ps),
                DIMM_PARM(tih_ps),
                DIMM_PARM(tds_ps),
                DIMM_PARM(tdh_ps),
-               DIMM_PARM(trtp_ps),
                DIMM_PARM(tdqsq_max_ps),
                DIMM_PARM(tqhs_ps),
+#endif
 
                DIMM_PARM(rank_density),
                DIMM_PARM(capacity),
@@ -270,7 +300,12 @@ static void print_dimm_parameters(const dimm_params_t *pdimm)
                DIMM_PARM(n_row_addr),
                DIMM_PARM(n_col_addr),
                DIMM_PARM(edc_config),
+#ifdef CONFIG_SYS_FSL_DDR4
+               DIMM_PARM(bank_addr_bits),
+               DIMM_PARM(bank_group_bits),
+#else
                DIMM_PARM(n_banks_per_sdram_device),
+#endif
 
                DIMM_PARM(tckmin_x_ps),
                DIMM_PARM(tckmin_x_minus_1_ps),
@@ -286,20 +321,31 @@ static void print_dimm_parameters(const dimm_params_t *pdimm)
                DIMM_PARM(trcd_ps),
                DIMM_PARM(trp_ps),
                DIMM_PARM(tras_ps),
+#ifdef CONFIG_SYS_FSL_DDR4
+               DIMM_PARM(trfc1_ps),
+               DIMM_PARM(trfc2_ps),
+               DIMM_PARM(trfc4_ps),
+               DIMM_PARM(trrds_ps),
+               DIMM_PARM(trrdl_ps),
+               DIMM_PARM(tccdl_ps),
+#else
                DIMM_PARM(twr_ps),
                DIMM_PARM(twtr_ps),
                DIMM_PARM(trfc_ps),
                DIMM_PARM(trrd_ps),
+               DIMM_PARM(trtp_ps),
+#endif
                DIMM_PARM(trc_ps),
                DIMM_PARM(refresh_rate_ps),
 
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
                DIMM_PARM(tis_ps),
                DIMM_PARM(tih_ps),
                DIMM_PARM(tds_ps),
                DIMM_PARM(tdh_ps),
-               DIMM_PARM(trtp_ps),
                DIMM_PARM(tdqsq_max_ps),
                DIMM_PARM(tqhs_ps),
+#endif
        };
        static const unsigned int n_opts = ARRAY_SIZE(options);
 
@@ -326,23 +372,36 @@ static void print_lowest_common_dimm_parameters(
                const common_timing_params_t *plcd_dimm_params)
 {
        static const struct options_string options[] = {
-               COMMON_TIMING(tckmax_max_ps),
+               COMMON_TIMING(taamin_ps),
                COMMON_TIMING(trcd_ps),
                COMMON_TIMING(trp_ps),
                COMMON_TIMING(tras_ps),
-               COMMON_TIMING(twr_ps),
+#ifdef CONFIG_SYS_FSL_DDR4
+               COMMON_TIMING(trfc1_ps),
+               COMMON_TIMING(trfc2_ps),
+               COMMON_TIMING(trfc4_ps),
+               COMMON_TIMING(trrds_ps),
+               COMMON_TIMING(trrdl_ps),
+               COMMON_TIMING(tccdl_ps),
+#else
                COMMON_TIMING(twtr_ps),
                COMMON_TIMING(trfc_ps),
                COMMON_TIMING(trrd_ps),
+               COMMON_TIMING(trtp_ps),
+#endif
+               COMMON_TIMING(twr_ps),
                COMMON_TIMING(trc_ps),
                COMMON_TIMING(refresh_rate_ps),
+               COMMON_TIMING(extended_op_srt),
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
                COMMON_TIMING(tis_ps),
+               COMMON_TIMING(tih_ps),
                COMMON_TIMING(tds_ps),
                COMMON_TIMING(tdh_ps),
-               COMMON_TIMING(trtp_ps),
                COMMON_TIMING(tdqsq_max_ps),
                COMMON_TIMING(tqhs_ps),
-               COMMON_TIMING(lowest_common_SPD_caslat),
+#endif
+               COMMON_TIMING(lowest_common_spd_caslat),
                COMMON_TIMING(highest_common_derated_caslat),
                COMMON_TIMING(additive_latency),
                COMMON_TIMING(ndimms_present),
@@ -460,6 +519,9 @@ static void fsl_ddr_options_edit(fsl_ddr_info_t *pinfo,
                CTRL_OPTIONS(tfaw_window_four_activates_ps),
                CTRL_OPTIONS(trwt_override),
                CTRL_OPTIONS(trwt),
+               CTRL_OPTIONS(rtt_override),
+               CTRL_OPTIONS(rtt_override_value),
+               CTRL_OPTIONS(rtt_wr_override_value),
        };
 
        static const unsigned int n_opts = ARRAY_SIZE(options);
@@ -505,6 +567,7 @@ static void print_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr)
                CFG_REGS(timing_cfg_2),
                CFG_REGS(ddr_sdram_cfg),
                CFG_REGS(ddr_sdram_cfg_2),
+               CFG_REGS(ddr_sdram_cfg_3),
                CFG_REGS(ddr_sdram_mode),
                CFG_REGS(ddr_sdram_mode_2),
                CFG_REGS(ddr_sdram_mode_3),
@@ -513,6 +576,16 @@ static void print_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr)
                CFG_REGS(ddr_sdram_mode_6),
                CFG_REGS(ddr_sdram_mode_7),
                CFG_REGS(ddr_sdram_mode_8),
+#ifdef CONFIG_SYS_FSL_DDR4
+               CFG_REGS(ddr_sdram_mode_9),
+               CFG_REGS(ddr_sdram_mode_10),
+               CFG_REGS(ddr_sdram_mode_11),
+               CFG_REGS(ddr_sdram_mode_12),
+               CFG_REGS(ddr_sdram_mode_13),
+               CFG_REGS(ddr_sdram_mode_14),
+               CFG_REGS(ddr_sdram_mode_15),
+               CFG_REGS(ddr_sdram_mode_16),
+#endif
                CFG_REGS(ddr_sdram_interval),
                CFG_REGS(ddr_data_init),
                CFG_REGS(ddr_sdram_clk_cntl),
@@ -520,6 +593,12 @@ static void print_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr)
                CFG_REGS(ddr_init_ext_addr),
                CFG_REGS(timing_cfg_4),
                CFG_REGS(timing_cfg_5),
+#ifdef CONFIG_SYS_FSL_DDR4
+               CFG_REGS(timing_cfg_6),
+               CFG_REGS(timing_cfg_7),
+               CFG_REGS(timing_cfg_8),
+               CFG_REGS(timing_cfg_9),
+#endif
                CFG_REGS(ddr_zq_cntl),
                CFG_REGS(ddr_wrlvl_cntl),
                CFG_REGS(ddr_wrlvl_cntl_2),
@@ -529,6 +608,10 @@ static void print_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr)
                CFG_REGS(ddr_sdram_rcw_2),
                CFG_REGS(ddr_cdr1),
                CFG_REGS(ddr_cdr2),
+               CFG_REGS(dq_map_0),
+               CFG_REGS(dq_map_1),
+               CFG_REGS(dq_map_2),
+               CFG_REGS(dq_map_3),
                CFG_REGS(err_disable),
                CFG_REGS(err_int_en),
                CFG_REGS(ddr_eor),
@@ -574,6 +657,7 @@ static void fsl_ddr_regs_edit(fsl_ddr_info_t *pinfo,
                CFG_REGS(timing_cfg_2),
                CFG_REGS(ddr_sdram_cfg),
                CFG_REGS(ddr_sdram_cfg_2),
+               CFG_REGS(ddr_sdram_cfg_3),
                CFG_REGS(ddr_sdram_mode),
                CFG_REGS(ddr_sdram_mode_2),
                CFG_REGS(ddr_sdram_mode_3),
@@ -582,6 +666,16 @@ static void fsl_ddr_regs_edit(fsl_ddr_info_t *pinfo,
                CFG_REGS(ddr_sdram_mode_6),
                CFG_REGS(ddr_sdram_mode_7),
                CFG_REGS(ddr_sdram_mode_8),
+#ifdef CONFIG_SYS_FSL_DDR4
+               CFG_REGS(ddr_sdram_mode_9),
+               CFG_REGS(ddr_sdram_mode_10),
+               CFG_REGS(ddr_sdram_mode_11),
+               CFG_REGS(ddr_sdram_mode_12),
+               CFG_REGS(ddr_sdram_mode_13),
+               CFG_REGS(ddr_sdram_mode_14),
+               CFG_REGS(ddr_sdram_mode_15),
+               CFG_REGS(ddr_sdram_mode_16),
+#endif
                CFG_REGS(ddr_sdram_interval),
                CFG_REGS(ddr_data_init),
                CFG_REGS(ddr_sdram_clk_cntl),
@@ -589,6 +683,12 @@ static void fsl_ddr_regs_edit(fsl_ddr_info_t *pinfo,
                CFG_REGS(ddr_init_ext_addr),
                CFG_REGS(timing_cfg_4),
                CFG_REGS(timing_cfg_5),
+#ifdef CONFIG_SYS_FSL_DDR4
+               CFG_REGS(timing_cfg_6),
+               CFG_REGS(timing_cfg_7),
+               CFG_REGS(timing_cfg_8),
+               CFG_REGS(timing_cfg_9),
+#endif
                CFG_REGS(ddr_zq_cntl),
                CFG_REGS(ddr_wrlvl_cntl),
                CFG_REGS(ddr_wrlvl_cntl_2),
@@ -598,6 +698,10 @@ static void fsl_ddr_regs_edit(fsl_ddr_info_t *pinfo,
                CFG_REGS(ddr_sdram_rcw_2),
                CFG_REGS(ddr_cdr1),
                CFG_REGS(ddr_cdr2),
+               CFG_REGS(dq_map_0),
+               CFG_REGS(dq_map_1),
+               CFG_REGS(dq_map_2),
+               CFG_REGS(dq_map_3),
                CFG_REGS(err_disable),
                CFG_REGS(err_int_en),
                CFG_REGS(ddr_sdram_rcw_2),
@@ -705,6 +809,9 @@ static void print_memctl_options(const memctl_options_t *popts)
                CTRL_OPTIONS(tfaw_window_four_activates_ps),
                CTRL_OPTIONS(trwt_override),
                CTRL_OPTIONS(trwt),
+               CTRL_OPTIONS(rtt_override),
+               CTRL_OPTIONS(rtt_override_value),
+               CTRL_OPTIONS(rtt_wr_override_value),
        };
        static const unsigned int n_opts = ARRAY_SIZE(options);
 
@@ -1245,6 +1352,266 @@ void ddr3_spd_dump(const ddr3_spd_eeprom_t *spd)
 }
 #endif
 
+#ifdef CONFIG_SYS_FSL_DDR4
+void ddr4_spd_dump(const struct ddr4_spd_eeprom_s *spd)
+{
+       unsigned int i;
+
+       /* General Section: Bytes 0-127 */
+
+#define PRINT_NXS(x, y, z...) printf("%-3d    : %02x " z "\n", x, (u8)y);
+#define PRINT_NNXXS(n0, n1, x0, x1, s) \
+       printf("%-3d-%3d: %02x %02x " s "\n", n0, n1, x0, x1);
+
+       PRINT_NXS(0, spd->info_size_crc,
+                 "info_size_crc  bytes written into serial memory, CRC coverage");
+       PRINT_NXS(1, spd->spd_rev,
+                 "spd_rev        SPD Revision");
+       PRINT_NXS(2, spd->mem_type,
+                 "mem_type       Key Byte / DRAM Device Type");
+       PRINT_NXS(3, spd->module_type,
+                 "module_type    Key Byte / Module Type");
+       PRINT_NXS(4, spd->density_banks,
+                 "density_banks  SDRAM Density and Banks");
+       PRINT_NXS(5, spd->addressing,
+                 "addressing     SDRAM Addressing");
+       PRINT_NXS(6, spd->package_type,
+                 "package_type   Package type");
+       PRINT_NXS(7, spd->opt_feature,
+                 "opt_feature    Optional features");
+       PRINT_NXS(8, spd->thermal_ref,
+                 "thermal_ref    Thermal and Refresh options");
+       PRINT_NXS(9, spd->oth_opt_features,
+                 "oth_opt_features Other SDRAM optional features");
+       PRINT_NXS(10, spd->res_10,
+                 "res_10         Reserved");
+       PRINT_NXS(11, spd->module_vdd,
+                 "module_vdd     Module Nominal Voltage, VDD");
+       PRINT_NXS(12, spd->organization,
+                 "organization Module Organization");
+       PRINT_NXS(13, spd->bus_width,
+                 "bus_width      Module Memory Bus Width");
+       PRINT_NXS(14, spd->therm_sensor,
+                 "therm_sensor   Module Thermal Sensor");
+       PRINT_NXS(15, spd->ext_type,
+                 "ext_type       Extended module type");
+       PRINT_NXS(16, spd->res_16,
+                 "res_16       Reserved");
+       PRINT_NXS(17, spd->timebases,
+                 "timebases    MTb and FTB");
+       PRINT_NXS(18, spd->tck_min,
+                 "tck_min      tCKAVGmin");
+       PRINT_NXS(19, spd->tck_max,
+                 "tck_max      TCKAVGmax");
+       PRINT_NXS(20, spd->caslat_b1,
+                 "caslat_b1    CAS latencies, 1st byte");
+       PRINT_NXS(21, spd->caslat_b2,
+                 "caslat_b2    CAS latencies, 2nd byte");
+       PRINT_NXS(22, spd->caslat_b3,
+                 "caslat_b3    CAS latencies, 3rd byte ");
+       PRINT_NXS(23, spd->caslat_b4,
+                 "caslat_b4    CAS latencies, 4th byte");
+       PRINT_NXS(24, spd->taa_min,
+                 "taa_min      Min CAS Latency Time");
+       PRINT_NXS(25, spd->trcd_min,
+                 "trcd_min     Min RAS# to CAS# Delay Time");
+       PRINT_NXS(26, spd->trp_min,
+                 "trp_min      Min Row Precharge Delay Time");
+       PRINT_NXS(27, spd->tras_trc_ext,
+                 "tras_trc_ext Upper Nibbles for tRAS and tRC");
+       PRINT_NXS(28, spd->tras_min_lsb,
+                 "tras_min_lsb tRASmin, lsb");
+       PRINT_NXS(29, spd->trc_min_lsb,
+                 "trc_min_lsb  tRCmin, lsb");
+       PRINT_NXS(30, spd->trfc1_min_lsb,
+                 "trfc1_min_lsb  Min Refresh Recovery Delay Time, LSB");
+       PRINT_NXS(31, spd->trfc1_min_msb,
+                 "trfc1_min_msb  Min Refresh Recovery Delay Time, MSB ");
+       PRINT_NXS(32, spd->trfc2_min_lsb,
+                 "trfc2_min_lsb  Min Refresh Recovery Delay Time, LSB");
+       PRINT_NXS(33, spd->trfc2_min_msb,
+                 "trfc2_min_msb  Min Refresh Recovery Delay Time, MSB");
+       PRINT_NXS(34, spd->trfc4_min_lsb,
+                 "trfc4_min_lsb Min Refresh Recovery Delay Time, LSB");
+       PRINT_NXS(35, spd->trfc4_min_msb,
+                 "trfc4_min_msb Min Refresh Recovery Delay Time, MSB");
+       PRINT_NXS(36, spd->tfaw_msb,
+                 "tfaw_msb      Upper Nibble for tFAW");
+       PRINT_NXS(37, spd->tfaw_min,
+                 "tfaw_min      tFAW, lsb");
+       PRINT_NXS(38, spd->trrds_min,
+                 "trrds_min     tRRD_Smin, MTB");
+       PRINT_NXS(39, spd->trrdl_min,
+                 "trrdl_min     tRRD_Lmin, MTB");
+       PRINT_NXS(40, spd->tccdl_min,
+                 "tccdl_min     tCCS_Lmin, MTB");
+
+       printf("%-3d-%3d: ", 41, 59);  /* Reserved, General Section */
+       for (i = 41; i <= 59; i++)
+               printf("%02x ", spd->res_41[i - 41]);
+
+       puts("\n");
+       printf("%-3d-%3d: ", 60, 77);
+       for (i = 60; i <= 77; i++)
+               printf("%02x ", spd->mapping[i - 60]);
+       puts("   mapping[] Connector to SDRAM bit map\n");
+
+       PRINT_NXS(117, spd->fine_tccdl_min,
+                 "fine_tccdl_min Fine offset for tCCD_Lmin");
+       PRINT_NXS(118, spd->fine_trrdl_min,
+                 "fine_trrdl_min Fine offset for tRRD_Lmin");
+       PRINT_NXS(119, spd->fine_trrds_min,
+                 "fine_trrds_min Fine offset for tRRD_Smin");
+       PRINT_NXS(120, spd->fine_trc_min,
+                 "fine_trc_min   Fine offset for tRCmin");
+       PRINT_NXS(121, spd->fine_trp_min,
+                 "fine_trp_min   Fine offset for tRPmin");
+       PRINT_NXS(122, spd->fine_trcd_min,
+                 "fine_trcd_min  Fine offset for tRCDmin");
+       PRINT_NXS(123, spd->fine_taa_min,
+                 "fine_taa_min   Fine offset for tAAmin");
+       PRINT_NXS(124, spd->fine_tck_max,
+                 "fine_tck_max   Fine offset for tCKAVGmax");
+       PRINT_NXS(125, spd->fine_tck_min,
+                 "fine_tck_min   Fine offset for tCKAVGmin");
+
+       /* CRC: Bytes 126-127 */
+       PRINT_NNXXS(126, 127, spd->crc[0], spd->crc[1], "  SPD CRC");
+
+       switch (spd->module_type) {
+       case 0x02:  /* UDIMM */
+       case 0x03:  /* SO-DIMM */
+               PRINT_NXS(128, spd->mod_section.unbuffered.mod_height,
+                         "mod_height    (Unbuffered) Module Nominal Height");
+               PRINT_NXS(129, spd->mod_section.unbuffered.mod_thickness,
+                         "mod_thickness (Unbuffered) Module Maximum Thickness");
+               PRINT_NXS(130, spd->mod_section.unbuffered.ref_raw_card,
+                         "ref_raw_card  (Unbuffered) Reference Raw Card Used");
+               PRINT_NXS(131, spd->mod_section.unbuffered.addr_mapping,
+                         "addr_mapping  (Unbuffered) Address mapping from Edge Connector to DRAM");
+               PRINT_NNXXS(254, 255, spd->mod_section.unbuffered.crc[0],
+                           spd->mod_section.unbuffered.crc[1], "  Module CRC");
+               break;
+       case 0x01:  /* RDIMM */
+               PRINT_NXS(128, spd->mod_section.registered.mod_height,
+                         "mod_height    (Registered) Module Nominal Height");
+               PRINT_NXS(129, spd->mod_section.registered.mod_thickness,
+                         "mod_thickness (Registered) Module Maximum Thickness");
+               PRINT_NXS(130, spd->mod_section.registered.ref_raw_card,
+                         "ref_raw_card  (Registered) Reference Raw Card Used");
+               PRINT_NXS(131, spd->mod_section.registered.modu_attr,
+                         "modu_attr     (Registered) DIMM Module Attributes");
+               PRINT_NXS(132, spd->mod_section.registered.thermal,
+                         "thermal       (Registered) Thermal Heat Spreader Solution");
+               PRINT_NXS(133, spd->mod_section.registered.reg_id_lo,
+                         "reg_id_lo     (Registered) Register Manufacturer ID Code, LSB");
+               PRINT_NXS(134, spd->mod_section.registered.reg_id_hi,
+                         "reg_id_hi     (Registered) Register Manufacturer ID Code, MSB");
+               PRINT_NXS(135, spd->mod_section.registered.reg_rev,
+                         "reg_rev       (Registered) Register Revision Number");
+               PRINT_NXS(136, spd->mod_section.registered.reg_map,
+                         "reg_map       (Registered) Address mapping");
+               PRINT_NNXXS(254, 255, spd->mod_section.registered.crc[0],
+                           spd->mod_section.registered.crc[1], "  Module CRC");
+               break;
+       case 0x04:  /* LRDIMM */
+               PRINT_NXS(128, spd->mod_section.loadreduced.mod_height,
+                         "mod_height    (Loadreduced) Module Nominal Height");
+               PRINT_NXS(129, spd->mod_section.loadreduced.mod_thickness,
+                         "mod_thickness (Loadreduced) Module Maximum Thickness");
+               PRINT_NXS(130, spd->mod_section.loadreduced.ref_raw_card,
+                         "ref_raw_card  (Loadreduced) Reference Raw Card Used");
+               PRINT_NXS(131, spd->mod_section.loadreduced.modu_attr,
+                         "modu_attr     (Loadreduced) DIMM Module Attributes");
+               PRINT_NXS(132, spd->mod_section.loadreduced.thermal,
+                         "thermal       (Loadreduced) Thermal Heat Spreader Solution");
+               PRINT_NXS(133, spd->mod_section.loadreduced.reg_id_lo,
+                         "reg_id_lo     (Loadreduced) Register Manufacturer ID Code, LSB");
+               PRINT_NXS(134, spd->mod_section.loadreduced.reg_id_hi,
+                         "reg_id_hi     (Loadreduced) Register Manufacturer ID Code, MSB");
+               PRINT_NXS(135, spd->mod_section.loadreduced.reg_rev,
+                         "reg_rev       (Loadreduced) Register Revision Number");
+               PRINT_NXS(136, spd->mod_section.loadreduced.reg_map,
+                         "reg_map       (Loadreduced) Address mapping");
+               PRINT_NXS(137, spd->mod_section.loadreduced.reg_drv,
+                         "reg_drv       (Loadreduced) Reg output drive strength");
+               PRINT_NXS(138, spd->mod_section.loadreduced.reg_drv_ck,
+                         "reg_drv_ck    (Loadreduced) Reg output drive strength for CK");
+               PRINT_NXS(139, spd->mod_section.loadreduced.data_buf_rev,
+                         "data_buf_rev  (Loadreduced) Data Buffer Revision Numbe");
+               PRINT_NXS(140, spd->mod_section.loadreduced.vrefqe_r0,
+                         "vrefqe_r0     (Loadreduced) DRAM VrefDQ for Package Rank 0");
+               PRINT_NXS(141, spd->mod_section.loadreduced.vrefqe_r1,
+                         "vrefqe_r1     (Loadreduced) DRAM VrefDQ for Package Rank 1");
+               PRINT_NXS(142, spd->mod_section.loadreduced.vrefqe_r2,
+                         "vrefqe_r2     (Loadreduced) DRAM VrefDQ for Package Rank 2");
+               PRINT_NXS(143, spd->mod_section.loadreduced.vrefqe_r3,
+                         "vrefqe_r3     (Loadreduced) DRAM VrefDQ for Package Rank 3");
+               PRINT_NXS(144, spd->mod_section.loadreduced.data_intf,
+                         "data_intf     (Loadreduced) Data Buffer VrefDQ for DRAM Interface");
+               PRINT_NXS(145, spd->mod_section.loadreduced.data_drv_1866,
+                         "data_drv_1866 (Loadreduced) Data Buffer MDQ Drive Strength and RTT");
+               PRINT_NXS(146, spd->mod_section.loadreduced.data_drv_2400,
+                         "data_drv_2400 (Loadreduced) Data Buffer MDQ Drive Strength and RTT");
+               PRINT_NXS(147, spd->mod_section.loadreduced.data_drv_3200,
+                         "data_drv_3200 (Loadreduced) Data Buffer MDQ Drive Strength and RTT");
+               PRINT_NXS(148, spd->mod_section.loadreduced.dram_drv,
+                         "dram_drv      (Loadreduced) DRAM Drive Strength");
+               PRINT_NXS(149, spd->mod_section.loadreduced.dram_odt_1866,
+                         "dram_odt_1866 (Loadreduced) DRAM ODT (RTT_WR, RTT_NOM)");
+               PRINT_NXS(150, spd->mod_section.loadreduced.dram_odt_2400,
+                         "dram_odt_2400 (Loadreduced) DRAM ODT (RTT_WR, RTT_NOM)");
+               PRINT_NXS(151, spd->mod_section.loadreduced.dram_odt_3200,
+                         "dram_odt_3200 (Loadreduced) DRAM ODT (RTT_WR, RTT_NOM)");
+               PRINT_NXS(152, spd->mod_section.loadreduced.dram_odt_park_1866,
+                         "dram_odt_park_1866 (Loadreduced) DRAM ODT (RTT_PARK)");
+               PRINT_NXS(153, spd->mod_section.loadreduced.dram_odt_park_2400,
+                         "dram_odt_park_2400 (Loadreduced) DRAM ODT (RTT_PARK)");
+               PRINT_NXS(154, spd->mod_section.loadreduced.dram_odt_park_3200,
+                         "dram_odt_park_3200 (Loadreduced) DRAM ODT (RTT_PARK)");
+               PRINT_NNXXS(254, 255, spd->mod_section.loadreduced.crc[0],
+                           spd->mod_section.loadreduced.crc[1],
+                           "  Module CRC");
+               break;
+       default:
+               /* Module-specific Section, Unsupported Module Type */
+               printf("%-3d-%3d: ", 128, 255);
+
+               for (i = 128; i <= 255; i++)
+                       printf("%02x", spd->mod_section.uc[i - 60]);
+
+               break;
+       }
+
+       /* Unique Module ID: Bytes 320-383 */
+       PRINT_NXS(320, spd->mmid_lsb, "Module MfgID Code LSB - JEP-106");
+       PRINT_NXS(321, spd->mmid_msb, "Module MfgID Code MSB - JEP-106");
+       PRINT_NXS(322, spd->mloc,     "Mfg Location");
+       PRINT_NNXXS(323, 324, spd->mdate[0], spd->mdate[1], "Mfg Date");
+
+       printf("%-3d-%3d: ", 325, 328);
+
+       for (i = 325; i <= 328; i++)
+               printf("%02x ", spd->sernum[i - 325]);
+       printf("   Module Serial Number\n");
+
+       printf("%-3d-%3d: ", 329, 348);
+       for (i = 329; i <= 348; i++)
+               printf("%02x ", spd->mpart[i - 329]);
+       printf("   Mfg's Module Part Number\n");
+
+       PRINT_NXS(349, spd->mrev, "Module Revision code");
+       PRINT_NXS(350, spd->dmid_lsb, "DRAM MfgID Code LSB - JEP-106");
+       PRINT_NXS(351, spd->dmid_msb, "DRAM MfgID Code MSB - JEP-106");
+       PRINT_NXS(352, spd->stepping, "DRAM stepping");
+
+       printf("%-3d-%3d: ", 353, 381);
+       for (i = 353; i <= 381; i++)
+               printf("%02x ", spd->msd[i - 353]);
+       printf("   Mfg's Specific Data\n");
+}
+#endif
+
 static inline void generic_spd_dump(const generic_spd_eeprom_t *spd)
 {
 #if defined(CONFIG_SYS_FSL_DDR1)
@@ -1253,6 +1620,8 @@ static inline void generic_spd_dump(const generic_spd_eeprom_t *spd)
        ddr2_spd_dump(spd);
 #elif defined(CONFIG_SYS_FSL_DDR3)
        ddr3_spd_dump(spd);
+#elif defined(CONFIG_SYS_FSL_DDR4)
+       ddr4_spd_dump(spd);
 #endif
 }
 
index 610318ad1e7e4cdfb15d37e83e43d9a7a2acc329..05a24dd6efdba2658cfcf68898dd7f7948edb922 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2012 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
 
 #include <fsl_ddr.h>
 
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
 static unsigned int
-compute_cas_latency_ddr3(const dimm_params_t *dimm_params,
-                        common_timing_params_t *outpdimm,
-                        unsigned int number_of_dimms)
+compute_cas_latency(const dimm_params_t *dimm_params,
+                   common_timing_params_t *outpdimm,
+                   unsigned int number_of_dimms)
 {
        unsigned int i;
-       unsigned int taamin_ps = 0;
-       unsigned int tckmin_x_ps = 0;
        unsigned int common_caslat;
        unsigned int caslat_actual;
        unsigned int retry = 16;
        unsigned int tmp;
        const unsigned int mclk_ps = get_memory_clk_period_ps();
+#ifdef CONFIG_SYS_FSL_DDR3
+       const unsigned int taamax = 20000;
+#else
+       const unsigned int taamax = 18000;
+#endif
 
        /* compute the common CAS latency supported between slots */
        tmp = dimm_params[0].caslat_x;
@@ -34,19 +37,20 @@ compute_cas_latency_ddr3(const dimm_params_t *dimm_params,
        }
        common_caslat = tmp;
 
-       /* compute the max tAAmin tCKmin between slots */
-       for (i = 0; i < number_of_dimms; i++) {
-               taamin_ps = max(taamin_ps, dimm_params[i].taa_ps);
-               tckmin_x_ps = max(tckmin_x_ps, dimm_params[i].tckmin_x_ps);
-       }
        /* validate if the memory clk is in the range of dimms */
-       if (mclk_ps < tckmin_x_ps) {
+       if (mclk_ps < outpdimm->tckmin_x_ps) {
                printf("DDR clock (MCLK cycle %u ps) is faster than "
                        "the slowest DIMM(s) (tCKmin %u ps) can support.\n",
-                       mclk_ps, tckmin_x_ps);
+                       mclk_ps, outpdimm->tckmin_x_ps);
+       }
+#ifdef CONFIG_SYS_FSL_DDR4
+       if (mclk_ps > outpdimm->tckmax_ps) {
+               printf("DDR clock (MCLK cycle %u ps) is slower than DIMM(s) (tCKmax %u ps) can support.\n",
+                      mclk_ps, outpdimm->tckmax_ps);
        }
+#endif
        /* determine the acutal cas latency */
-       caslat_actual = (taamin_ps + mclk_ps - 1) / mclk_ps;
+       caslat_actual = (outpdimm->taamin_ps + mclk_ps - 1) / mclk_ps;
        /* check if the dimms support the CAS latency */
        while (!(common_caslat & (1 << caslat_actual)) && retry > 0) {
                caslat_actual++;
@@ -54,13 +58,147 @@ compute_cas_latency_ddr3(const dimm_params_t *dimm_params,
        }
        /* once the caculation of caslat_actual is completed
         * we must verify that this CAS latency value does not
-        * exceed tAAmax, which is 20 ns for all DDR3 speed grades
+        * exceed tAAmax, which is 20 ns for all DDR3 speed grades,
+        * 18ns for all DDR4 speed grades.
         */
-       if (caslat_actual * mclk_ps > 20000) {
+       if (caslat_actual * mclk_ps > taamax) {
                printf("The choosen cas latency %d is too large\n",
                        caslat_actual);
        }
-       outpdimm->lowest_common_SPD_caslat = caslat_actual;
+       outpdimm->lowest_common_spd_caslat = caslat_actual;
+       debug("lowest_common_spd_caslat is 0x%x\n", caslat_actual);
+
+       return 0;
+}
+#else  /* for DDR1 and DDR2 */
+static unsigned int
+compute_cas_latency(const dimm_params_t *dimm_params,
+                   common_timing_params_t *outpdimm,
+                   unsigned int number_of_dimms)
+{
+       int i;
+       const unsigned int mclk_ps = get_memory_clk_period_ps();
+       unsigned int lowest_good_caslat;
+       unsigned int not_ok;
+       unsigned int temp1, temp2;
+
+       debug("using mclk_ps = %u\n", mclk_ps);
+       if (mclk_ps > outpdimm->tckmax_ps) {
+               printf("Warning: DDR clock (%u ps) is slower than DIMM(s) (tCKmax %u ps)\n",
+                      mclk_ps, outpdimm->tckmax_ps);
+       }
+
+       /*
+        * Compute a CAS latency suitable for all DIMMs
+        *
+        * Strategy for SPD-defined latencies: compute only
+        * CAS latency defined by all DIMMs.
+        */
+
+       /*
+        * Step 1: find CAS latency common to all DIMMs using bitwise
+        * operation.
+        */
+       temp1 = 0xFF;
+       for (i = 0; i < number_of_dimms; i++) {
+               if (dimm_params[i].n_ranks) {
+                       temp2 = 0;
+                       temp2 |= 1 << dimm_params[i].caslat_x;
+                       temp2 |= 1 << dimm_params[i].caslat_x_minus_1;
+                       temp2 |= 1 << dimm_params[i].caslat_x_minus_2;
+                       /*
+                        * If there was no entry for X-2 (X-1) in
+                        * the SPD, then caslat_x_minus_2
+                        * (caslat_x_minus_1) contains either 255 or
+                        * 0xFFFFFFFF because that's what the glorious
+                        * __ilog2 function returns for an input of 0.
+                        * On 32-bit PowerPC, left shift counts with bit
+                        * 26 set (that the value of 255 or 0xFFFFFFFF
+                        * will have), cause the destination register to
+                        * be 0.  That is why this works.
+                        */
+                       temp1 &= temp2;
+               }
+       }
+
+       /*
+        * Step 2: check each common CAS latency against tCK of each
+        * DIMM's SPD.
+        */
+       lowest_good_caslat = 0;
+       temp2 = 0;
+       while (temp1) {
+               not_ok = 0;
+               temp2 =  __ilog2(temp1);
+               debug("checking common caslat = %u\n", temp2);
+
+               /* Check if this CAS latency will work on all DIMMs at tCK. */
+               for (i = 0; i < number_of_dimms; i++) {
+                       if (!dimm_params[i].n_ranks)
+                               continue;
+
+                       if (dimm_params[i].caslat_x == temp2) {
+                               if (mclk_ps >= dimm_params[i].tckmin_x_ps) {
+                                       debug("CL = %u ok on DIMM %u at tCK=%u ps with tCKmin_X_ps of %u\n",
+                                             temp2, i, mclk_ps,
+                                             dimm_params[i].tckmin_x_ps);
+                                       continue;
+                               } else {
+                                       not_ok++;
+                               }
+                       }
+
+                       if (dimm_params[i].caslat_x_minus_1 == temp2) {
+                               unsigned int tckmin_x_minus_1_ps
+                                       = dimm_params[i].tckmin_x_minus_1_ps;
+                               if (mclk_ps >= tckmin_x_minus_1_ps) {
+                                       debug("CL = %u ok on DIMM %u at tCK=%u ps with tckmin_x_minus_1_ps of %u\n",
+                                             temp2, i, mclk_ps,
+                                             tckmin_x_minus_1_ps);
+                                       continue;
+                               } else {
+                                       not_ok++;
+                               }
+                       }
+
+                       if (dimm_params[i].caslat_x_minus_2 == temp2) {
+                               unsigned int tckmin_x_minus_2_ps
+                                       = dimm_params[i].tckmin_x_minus_2_ps;
+                               if (mclk_ps >= tckmin_x_minus_2_ps) {
+                                       debug("CL = %u ok on DIMM %u at tCK=%u ps with tckmin_x_minus_2_ps of %u\n",
+                                             temp2, i, mclk_ps,
+                                             tckmin_x_minus_2_ps);
+                                       continue;
+                               } else {
+                                       not_ok++;
+                               }
+                       }
+               }
+
+               if (!not_ok)
+                       lowest_good_caslat = temp2;
+
+               temp1 &= ~(1 << temp2);
+       }
+
+       debug("lowest common SPD-defined CAS latency = %u\n",
+             lowest_good_caslat);
+       outpdimm->lowest_common_spd_caslat = lowest_good_caslat;
+
+
+       /*
+        * Compute a common 'de-rated' CAS latency.
+        *
+        * The strategy here is to find the *highest* dereated cas latency
+        * with the assumption that all of the DIMMs will support a dereated
+        * CAS latency higher than or equal to their lowest dereated value.
+        */
+       temp1 = 0;
+       for (i = 0; i < number_of_dimms; i++)
+               temp1 = max(temp1, dimm_params[i].caslat_lowest_derated);
+
+       outpdimm->highest_common_derated_caslat = temp1;
+       debug("highest common dereated CAS latency = %u\n", temp1);
 
        return 0;
 }
@@ -82,34 +220,40 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
 
        unsigned int tckmin_x_ps = 0;
        unsigned int tckmax_ps = 0xFFFFFFFF;
-       unsigned int tckmax_max_ps = 0;
        unsigned int trcd_ps = 0;
        unsigned int trp_ps = 0;
        unsigned int tras_ps = 0;
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
+       unsigned int taamin_ps = 0;
+#endif
+#ifdef CONFIG_SYS_FSL_DDR4
+       unsigned int twr_ps = 15000;
+       unsigned int trfc1_ps = 0;
+       unsigned int trfc2_ps = 0;
+       unsigned int trfc4_ps = 0;
+       unsigned int trrds_ps = 0;
+       unsigned int trrdl_ps = 0;
+       unsigned int tccdl_ps = 0;
+#else
        unsigned int twr_ps = 0;
        unsigned int twtr_ps = 0;
        unsigned int trfc_ps = 0;
        unsigned int trrd_ps = 0;
+       unsigned int trtp_ps = 0;
+#endif
        unsigned int trc_ps = 0;
        unsigned int refresh_rate_ps = 0;
        unsigned int extended_op_srt = 1;
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
        unsigned int tis_ps = 0;
        unsigned int tih_ps = 0;
        unsigned int tds_ps = 0;
        unsigned int tdh_ps = 0;
-       unsigned int trtp_ps = 0;
        unsigned int tdqsq_max_ps = 0;
        unsigned int tqhs_ps = 0;
-
+#endif
        unsigned int temp1, temp2;
        unsigned int additive_latency = 0;
-#if !defined(CONFIG_SYS_FSL_DDR3)
-       const unsigned int mclk_ps = get_memory_clk_period_ps();
-       unsigned int lowest_good_caslat;
-       unsigned int not_ok;
-
-       debug("using mclk_ps = %u\n", mclk_ps);
-#endif
 
        temp1 = 0;
        for (i = 0; i < number_of_dimms; i++) {
@@ -146,31 +290,34 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
                 * i.e., this is the slowest the whole system can go.
                 */
                tckmax_ps = min(tckmax_ps, dimm_params[i].tckmax_ps);
-
-               /* Either find maximum value to determine slowest
-                * speed, delay, time, period, etc */
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
+               taamin_ps = max(taamin_ps, dimm_params[i].taa_ps);
+#endif
                tckmin_x_ps = max(tckmin_x_ps, dimm_params[i].tckmin_x_ps);
-               tckmax_max_ps = max(tckmax_max_ps, dimm_params[i].tckmax_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);
+#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);
+#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);
+#endif
                trc_ps = max(trc_ps, 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);
-               trtp_ps = max(trtp_ps, dimm_params[i].trtp_ps);
                tqhs_ps = max(tqhs_ps, dimm_params[i].tqhs_ps);
-               refresh_rate_ps = max(refresh_rate_ps,
-                                     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);
-
                /*
                 * Find maximum tdqsq_max_ps to find slowest.
                 *
@@ -178,6 +325,12 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
                 * strategy for this parameter?
                 */
                tdqsq_max_ps = max(tdqsq_max_ps, dimm_params[i].tdqsq_max_ps);
+#endif
+               refresh_rate_ps = max(refresh_rate_ps,
+                                     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);
        }
 
        outpdimm->ndimms_present = number_of_dimms - temp1;
@@ -189,24 +342,37 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
 
        outpdimm->tckmin_x_ps = tckmin_x_ps;
        outpdimm->tckmax_ps = tckmax_ps;
-       outpdimm->tckmax_max_ps = tckmax_max_ps;
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
+       outpdimm->taamin_ps = taamin_ps;
+#endif
        outpdimm->trcd_ps = trcd_ps;
        outpdimm->trp_ps = trp_ps;
        outpdimm->tras_ps = tras_ps;
-       outpdimm->twr_ps = twr_ps;
+#ifdef CONFIG_SYS_FSL_DDR4
+       outpdimm->trfc1_ps = trfc1_ps;
+       outpdimm->trfc2_ps = trfc2_ps;
+       outpdimm->trfc4_ps = trfc4_ps;
+       outpdimm->trrds_ps = trrds_ps;
+       outpdimm->trrdl_ps = trrdl_ps;
+       outpdimm->tccdl_ps = tccdl_ps;
+#else
        outpdimm->twtr_ps = twtr_ps;
        outpdimm->trfc_ps = trfc_ps;
        outpdimm->trrd_ps = trrd_ps;
+       outpdimm->trtp_ps = trtp_ps;
+#endif
+       outpdimm->twr_ps = twr_ps;
        outpdimm->trc_ps = trc_ps;
        outpdimm->refresh_rate_ps = refresh_rate_ps;
        outpdimm->extended_op_srt = extended_op_srt;
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
        outpdimm->tis_ps = tis_ps;
        outpdimm->tih_ps = tih_ps;
        outpdimm->tds_ps = tds_ps;
        outpdimm->tdh_ps = tdh_ps;
-       outpdimm->trtp_ps = trtp_ps;
        outpdimm->tdqsq_max_ps = tdqsq_max_ps;
        outpdimm->tqhs_ps = tqhs_ps;
+#endif
 
        /* Determine common burst length for all DIMMs. */
        temp1 = 0xff;
@@ -265,128 +431,9 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
        if (temp1 != 0)
                printf("ERROR: Mix different RDIMM detected!\n");
 
-#if defined(CONFIG_SYS_FSL_DDR3)
-       if (compute_cas_latency_ddr3(dimm_params, outpdimm, number_of_dimms))
+       /* calculate cas latency for all DDR types */
+       if (compute_cas_latency(dimm_params, outpdimm, number_of_dimms))
                return 1;
-#else
-       /*
-        * Compute a CAS latency suitable for all DIMMs
-        *
-        * Strategy for SPD-defined latencies: compute only
-        * CAS latency defined by all DIMMs.
-        */
-
-       /*
-        * Step 1: find CAS latency common to all DIMMs using bitwise
-        * operation.
-        */
-       temp1 = 0xFF;
-       for (i = 0; i < number_of_dimms; i++) {
-               if (dimm_params[i].n_ranks) {
-                       temp2 = 0;
-                       temp2 |= 1 << dimm_params[i].caslat_x;
-                       temp2 |= 1 << dimm_params[i].caslat_x_minus_1;
-                       temp2 |= 1 << dimm_params[i].caslat_x_minus_2;
-                       /*
-                        * FIXME: If there was no entry for X-2 (X-1) in
-                        * the SPD, then caslat_x_minus_2
-                        * (caslat_x_minus_1) contains either 255 or
-                        * 0xFFFFFFFF because that's what the glorious
-                        * __ilog2 function returns for an input of 0.
-                        * On 32-bit PowerPC, left shift counts with bit
-                        * 26 set (that the value of 255 or 0xFFFFFFFF
-                        * will have), cause the destination register to
-                        * be 0.  That is why this works.
-                        */
-                       temp1 &= temp2;
-               }
-       }
-
-       /*
-        * Step 2: check each common CAS latency against tCK of each
-        * DIMM's SPD.
-        */
-       lowest_good_caslat = 0;
-       temp2 = 0;
-       while (temp1) {
-               not_ok = 0;
-               temp2 =  __ilog2(temp1);
-               debug("checking common caslat = %u\n", temp2);
-
-               /* Check if this CAS latency will work on all DIMMs at tCK. */
-               for (i = 0; i < number_of_dimms; i++) {
-                       if (!dimm_params[i].n_ranks) {
-                               continue;
-                       }
-                       if (dimm_params[i].caslat_x == temp2) {
-                               if (mclk_ps >= dimm_params[i].tckmin_x_ps) {
-                                       debug("CL = %u ok on DIMM %u at tCK=%u"
-                                           " ps with its tCKmin_X_ps of %u\n",
-                                              temp2, i, mclk_ps,
-                                              dimm_params[i].tckmin_x_ps);
-                                       continue;
-                               } else {
-                                       not_ok++;
-                               }
-                       }
-
-                       if (dimm_params[i].caslat_x_minus_1 == temp2) {
-                               unsigned int tckmin_x_minus_1_ps
-                                       = dimm_params[i].tckmin_x_minus_1_ps;
-                               if (mclk_ps >= tckmin_x_minus_1_ps) {
-                                       debug("CL = %u ok on DIMM %u at "
-                                               "tCK=%u ps with its "
-                                               "tckmin_x_minus_1_ps of %u\n",
-                                              temp2, i, mclk_ps,
-                                              tckmin_x_minus_1_ps);
-                                       continue;
-                               } else {
-                                       not_ok++;
-                               }
-                       }
-
-                       if (dimm_params[i].caslat_x_minus_2 == temp2) {
-                               unsigned int tckmin_x_minus_2_ps
-                                       = dimm_params[i].tckmin_x_minus_2_ps;
-                               if (mclk_ps >= tckmin_x_minus_2_ps) {
-                                       debug("CL = %u ok on DIMM %u at "
-                                               "tCK=%u ps with its "
-                                               "tckmin_x_minus_2_ps of %u\n",
-                                              temp2, i, mclk_ps,
-                                              tckmin_x_minus_2_ps);
-                                       continue;
-                               } else {
-                                       not_ok++;
-                               }
-                       }
-               }
-
-               if (!not_ok) {
-                       lowest_good_caslat = temp2;
-               }
-
-               temp1 &= ~(1 << temp2);
-       }
-
-       debug("lowest common SPD-defined CAS latency = %u\n",
-              lowest_good_caslat);
-       outpdimm->lowest_common_SPD_caslat = lowest_good_caslat;
-
-
-       /*
-        * Compute a common 'de-rated' CAS latency.
-        *
-        * The strategy here is to find the *highest* dereated cas latency
-        * with the assumption that all of the DIMMs will support a dereated
-        * CAS latency higher than or equal to their lowest dereated value.
-        */
-       temp1 = 0;
-       for (i = 0; i < number_of_dimms; i++) {
-               temp1 = max(temp1, dimm_params[i].caslat_lowest_derated);
-       }
-       outpdimm->highest_common_derated_caslat = temp1;
-       debug("highest common dereated CAS latency = %u\n", temp1);
-#endif /* #if defined(CONFIG_SYS_FSL_DDR3) */
 
        /* Determine if all DIMMs ECC capable. */
        temp1 = 1;
@@ -404,14 +451,6 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
        }
        outpdimm->all_dimms_ecc_capable = temp1;
 
-#ifndef CONFIG_SYS_FSL_DDR3
-       /* FIXME: move to somewhere else to validate. */
-       if (mclk_ps > tckmax_max_ps) {
-               printf("Warning: some of the installed DIMMs "
-                               "can not operate this slowly.\n");
-               return 1;
-       }
-#endif
        /*
         * Compute additive latency.
         *
@@ -468,27 +507,20 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
        additive_latency = 0;
 
 #if defined(CONFIG_SYS_FSL_DDR2)
-       if (lowest_good_caslat < 4) {
-               additive_latency = (picos_to_mclk(trcd_ps) > lowest_good_caslat)
-                       ? picos_to_mclk(trcd_ps) - lowest_good_caslat : 0;
+       if ((outpdimm->lowest_common_spd_caslat < 4) &&
+           (picos_to_mclk(trcd_ps) > outpdimm->lowest_common_spd_caslat)) {
+               additive_latency = picos_to_mclk(trcd_ps) -
+                                  outpdimm->lowest_common_spd_caslat;
                if (mclk_to_picos(additive_latency) > trcd_ps) {
                        additive_latency = picos_to_mclk(trcd_ps);
                        debug("setting additive_latency to %u because it was "
                                " greater than tRCD_ps\n", additive_latency);
                }
        }
-
-#elif defined(CONFIG_SYS_FSL_DDR3)
-       /*
-        * The system will not use the global auto-precharge mode.
-        * However, it uses the page mode, so we set AL=0
-        */
-       additive_latency = 0;
 #endif
 
        /*
         * Validate additive latency
-        * FIXME: move to somewhere else to validate
         *
         * AL <= tRCD(min)
         */
@@ -516,10 +548,19 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
        debug("trcd_ps   = %u\n", outpdimm->trcd_ps);
        debug("trp_ps    = %u\n", outpdimm->trp_ps);
        debug("tras_ps   = %u\n", outpdimm->tras_ps);
-       debug("twr_ps    = %u\n", outpdimm->twr_ps);
+#ifdef CONFIG_SYS_FSL_DDR4
+       debug("trfc1_ps = %u\n", trfc1_ps);
+       debug("trfc2_ps = %u\n", trfc2_ps);
+       debug("trfc4_ps = %u\n", trfc4_ps);
+       debug("trrds_ps = %u\n", trrds_ps);
+       debug("trrdl_ps = %u\n", trrdl_ps);
+       debug("tccdl_ps = %u\n", tccdl_ps);
+#else
        debug("twtr_ps   = %u\n", outpdimm->twtr_ps);
        debug("trfc_ps   = %u\n", outpdimm->trfc_ps);
        debug("trrd_ps   = %u\n", outpdimm->trrd_ps);
+#endif
+       debug("twr_ps    = %u\n", outpdimm->twr_ps);
        debug("trc_ps    = %u\n", outpdimm->trc_ps);
 
        return 0;
index d62ca63c7707cdae05b6bd38f991724ebd9e9cd9..5e001fcb99474605d0c5fadde287e1ef257184b5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2012 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -81,14 +81,37 @@ u8 spd_i2c_addr[CONFIG_NUM_DDR_CONTROLLERS][CONFIG_DIMM_SLOTS_PER_CTLR] = {
 
 #endif
 
+#define SPD_SPA0_ADDRESS       0x36
+#define SPD_SPA1_ADDRESS       0x37
+
 static void __get_spd(generic_spd_eeprom_t *spd, u8 i2c_address)
 {
        int ret;
+#ifdef CONFIG_SYS_FSL_DDR4
+       uint8_t dummy = 0;
+#endif
 
        i2c_set_bus_num(CONFIG_SYS_SPD_BUS_NUM);
 
+#ifdef CONFIG_SYS_FSL_DDR4
+       /*
+        * DDR4 SPD has 384 to 512 bytes
+        * To access the lower 256 bytes, we need to set EE page address to 0
+        * To access the upper 256 bytes, we need to set EE page address to 1
+        * See Jedec standar No. 21-C for detail
+        */
+       i2c_write(SPD_SPA0_ADDRESS, 0, 1, &dummy, 1);
+       ret = i2c_read(i2c_address, 0, 1, (uchar *)spd, 256);
+       if (!ret) {
+               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));
+       }
+#else
        ret = i2c_read(i2c_address, 0, 1, (uchar *)spd,
                                sizeof(generic_spd_eeprom_t));
+#endif
 
        if (ret) {
                if (i2c_address ==
@@ -197,6 +220,11 @@ const char * step_to_string(unsigned int step) {
        if ((1 << s) != step)
                return step_string_tbl[7];
 
+       if (s >= ARRAY_SIZE(step_string_tbl)) {
+               printf("Error for the step in %s\n", __func__);
+               s = 0;
+       }
+
        return step_string_tbl[s];
 }
 
@@ -497,6 +525,7 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
                /* STEP 5:  Assign addresses to chip selects */
                check_interleaving_options(pinfo);
                total_mem = step_assign_addresses(pinfo, dbw_capacity_adjust);
+               debug("Total mem %llu assigned\n", total_mem);
 
        case STEP_COMPUTE_REGS:
                /* STEP 6:  compute controller register values */
index c8050864163a30a0c6e25380c22fe405dbf3b141..4d5572ef21b65b0d68c3524bc8f48038b0a261cc 100644 (file)
@@ -15,6 +15,7 @@
 #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
@@ -43,6 +44,16 @@ 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;
@@ -119,7 +130,13 @@ 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);
-       out_be32(&ddr->sdram_cfg_2, regs->ddr_sdram_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);
@@ -132,8 +149,16 @@ 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);
-       out_be32(&ddr->init_addr, regs->ddr_init_addr);
-       out_be32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
+#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);
@@ -374,8 +399,22 @@ step2:
        udelay(500);
        asm volatile("sync;isync");
 
+#ifdef CONFIG_DEEP_SLEEP
+       if (sleep_flag) {
+               /* enter self-refresh */
+               setbits_be32(&ddr->sdram_cfg_2, (1 << 31));
+               /* do board specific memory setup */
+               board_mem_sleep_setup();
+       }
+#endif
+
        /* Let the controller go */
-       temp_sdram_cfg = in_be32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI;
+#ifdef CONFIG_DEEP_SLEEP
+       if (sleep_flag)
+               temp_sdram_cfg = (in_be32(&ddr->sdram_cfg) | SDRAM_CFG_BI);
+       else
+#endif
+               temp_sdram_cfg = (in_be32(&ddr->sdram_cfg) & ~SDRAM_CFG_BI);
        out_be32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN);
        asm volatile("sync;isync");
 
@@ -526,4 +565,9 @@ step2:
                clrbits_be32(&ddr->sdram_cfg, 0x2);
        }
 #endif /* CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134 */
+#ifdef CONFIG_DEEP_SLEEP
+       if (sleep_flag)
+               /* exit self-refresh */
+               clrbits_be32(&ddr->sdram_cfg_2, (1 << 31));
+#endif
 }
index b0cf046fdcd9ada957ec66367300b37eae246ca9..5986e1a0b9da3b5099fcdac4b46594c9b1fc3180 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008, 2010-2012 Freescale Semiconductor, Inc.
+ * Copyright 2008, 2010-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -29,7 +29,7 @@ struct dynamic_odt {
        unsigned int odt_rtt_wr;
 };
 
-#ifdef CONFIG_SYS_FSL_DDR3
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
 static const struct dynamic_odt single_Q[4] = {
        {       /* cs0 */
                FSL_DDR_ODT_NEVER,
@@ -259,7 +259,7 @@ static const struct dynamic_odt odt_unknown[4] = {
                DDR3_RTT_OFF
        }
 };
-#else  /* CONFIG_SYS_FSL_DDR3 */
+#else  /* CONFIG_SYS_FSL_DDR3 || CONFIG_SYS_FSL_DDR4 */
 static const struct dynamic_odt single_Q[4] = {
        {0, 0, 0, 0},
        {0, 0, 0, 0},
@@ -507,7 +507,9 @@ unsigned int populate_memctl_options(int all_dimms_registered,
        unsigned int i;
        char buffer[HWCONFIG_BUFFER_SIZE];
        char *buf = NULL;
-#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR2)
+#if defined(CONFIG_SYS_FSL_DDR3) || \
+       defined(CONFIG_SYS_FSL_DDR2) || \
+       defined(CONFIG_SYS_FSL_DDR4)
        const struct dynamic_odt *pdodt = odt_unknown;
 #endif
        ulong ddr_freq;
@@ -519,73 +521,76 @@ unsigned int populate_memctl_options(int all_dimms_registered,
        if (getenv_f("hwconfig", buffer, sizeof(buffer)) > 0)
                buf = buffer;
 
-#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR2)
+#if defined(CONFIG_SYS_FSL_DDR3) || \
+       defined(CONFIG_SYS_FSL_DDR2) || \
+       defined(CONFIG_SYS_FSL_DDR4)
        /* Chip select options. */
-       if (CONFIG_DIMM_SLOTS_PER_CTLR == 1) {
-               switch (pdimm[0].n_ranks) {
-               case 1:
-                       pdodt = single_S;
-                       break;
+#if (CONFIG_DIMM_SLOTS_PER_CTLR == 1)
+       switch (pdimm[0].n_ranks) {
+       case 1:
+               pdodt = single_S;
+               break;
+       case 2:
+               pdodt = single_D;
+               break;
+       case 4:
+               pdodt = single_Q;
+               break;
+       }
+#elif (CONFIG_DIMM_SLOTS_PER_CTLR == 2)
+       switch (pdimm[0].n_ranks) {
+#ifdef CONFIG_FSL_DDR_FIRST_SLOT_QUAD_CAPABLE
+       case 4:
+               pdodt = single_Q;
+               if (pdimm[1].n_ranks)
+                       printf("Error: Quad- and Dual-rank DIMMs cannot be used together\n");
+               break;
+#endif
+       case 2:
+               switch (pdimm[1].n_ranks) {
                case 2:
-                       pdodt = single_D;
+                       pdodt = dual_DD;
                        break;
-               case 4:
-                       pdodt = single_Q;
+               case 1:
+                       pdodt = dual_DS;
                        break;
-               }
-       } else if (CONFIG_DIMM_SLOTS_PER_CTLR == 2) {
-               switch (pdimm[0].n_ranks) {
-#ifdef CONFIG_FSL_DDR_FIRST_SLOT_QUAD_CAPABLE
-               case 4:
-                       pdodt = single_Q;
-                       if (pdimm[1].n_ranks)
-                               printf("Error: Quad- and Dual-rank DIMMs "
-                                       "cannot be used together\n");
+               case 0:
+                       pdodt = dual_D0;
                        break;
-#endif
+               }
+               break;
+       case 1:
+               switch (pdimm[1].n_ranks) {
                case 2:
-                       switch (pdimm[1].n_ranks) {
-                       case 2:
-                               pdodt = dual_DD;
-                               break;
-                       case 1:
-                               pdodt = dual_DS;
-                               break;
-                       case 0:
-                               pdodt = dual_D0;
-                               break;
-                       }
+                       pdodt = dual_SD;
                        break;
                case 1:
-                       switch (pdimm[1].n_ranks) {
-                       case 2:
-                               pdodt = dual_SD;
-                               break;
-                       case 1:
-                               pdodt = dual_SS;
-                               break;
-                       case 0:
-                               pdodt = dual_S0;
-                               break;
-                       }
+                       pdodt = dual_SS;
                        break;
                case 0:
-                       switch (pdimm[1].n_ranks) {
-                       case 2:
-                               pdodt = dual_0D;
-                               break;
-                       case 1:
-                               pdodt = dual_0S;
-                               break;
-                       }
+                       pdodt = dual_S0;
+                       break;
+               }
+               break;
+       case 0:
+               switch (pdimm[1].n_ranks) {
+               case 2:
+                       pdodt = dual_0D;
+                       break;
+               case 1:
+                       pdodt = dual_0S;
                        break;
                }
+               break;
        }
-#endif
+#endif /* CONFIG_DIMM_SLOTS_PER_CTLR */
+#endif /* CONFIG_SYS_FSL_DDR2, 3, 4 */
 
        /* Pick chip-select local options. */
        for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
-#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR2)
+#if defined(CONFIG_SYS_FSL_DDR3) || \
+       defined(CONFIG_SYS_FSL_DDR2) || \
+       defined(CONFIG_SYS_FSL_DDR4)
                popts->cs_local_opts[i].odt_rd_cfg = pdodt[i].odt_rd_cfg;
                popts->cs_local_opts[i].odt_wr_cfg = pdodt[i].odt_wr_cfg;
                popts->cs_local_opts[i].odt_rtt_norm = pdodt[i].odt_rtt_norm;
@@ -703,7 +708,7 @@ unsigned int populate_memctl_options(int all_dimms_registered,
        popts->x4_en = (pdimm[0].device_width == 4) ? 1 : 0;
 
        /* Choose burst length. */
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
 #if defined(CONFIG_E500MC)
        popts->otf_burst_chop_en = 0;   /* on-the-fly burst chop disable */
        popts->burst_length = DDR_BL8;  /* Fixed 8-beat burst len */
@@ -722,7 +727,7 @@ unsigned int populate_memctl_options(int all_dimms_registered,
 #endif
 
        /* Choose ddr controller address mirror mode */
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
        popts->mirrored_dimm = pdimm[0].mirrored_dimm;
 #endif
 
@@ -766,11 +771,9 @@ unsigned int populate_memctl_options(int all_dimms_registered,
         * BSTTOPRE precharge interval
         *
         * Set this to 0 for global auto precharge
-        *
-        * FIXME: Should this be configured in picoseconds?
-        * Why it should be in ps:  better understanding of this
-        * relative to actual DRAM timing parameters such as tRAS.
-        * e.g. tRAS(min) = 40 ns
+        * The value of 0x100 has been used for DDR1, DDR2, DDR3.
+        * It is not wrong. Any value should be OK. The performance depends on
+        * applications. There is no one good value for all.
         */
        popts->bstopre = 0x100;
 
@@ -795,12 +798,12 @@ unsigned int populate_memctl_options(int all_dimms_registered,
         */
        popts->tfaw_window_four_activates_ps = 37500;
 
-#elif defined(CONFIG_SYS_FSL_DDR3)
+#else
        popts->tfaw_window_four_activates_ps = pdimm[0].tfaw_ps;
 #endif
        popts->zq_en = 0;
        popts->wrlvl_en = 0;
-#if defined(CONFIG_SYS_FSL_DDR3)
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
        /*
         * due to ddr3 dimm is fly-by topology
         * we suggest to enable write leveling to
@@ -843,8 +846,7 @@ unsigned int populate_memctl_options(int all_dimms_registered,
        popts->memctl_interleaving_mode = FSL_DDR_256B_INTERLEAVING;
        popts->memctl_interleaving = 1;
        debug("256 Byte interleaving\n");
-       goto done;
-#endif
+#else
        /*
         * test null first. if CONFIG_HWCONFIG is not defined
         * hwconfig_arg_cmp returns non-zero
@@ -926,8 +928,9 @@ unsigned int populate_memctl_options(int all_dimms_registered,
                popts->memctl_interleaving = 0;
                printf("hwconfig has unrecognized parameter for ctlr_intlv.\n");
        }
+#endif /* CONFIG_SYS_FSL_DDR_INTLV_256B */
 done:
-#endif
+#endif /* CONFIG_NUM_DDR_CONTROLLERS > 1 */
        if ((hwconfig_sub_f("fsl_ddr", "bank_intlv", buf)) &&
                (CONFIG_CHIP_SELECTS_PER_CTRL > 1)) {
                /* test null first. if CONFIG_HWCONFIG is not defined,
@@ -1102,10 +1105,11 @@ void check_interleaving_options(fsl_ddr_info_t *pinfo)
                case FSL_DDR_PAGE_INTERLEAVING:
                case FSL_DDR_BANK_INTERLEAVING:
                case FSL_DDR_SUPERBANK_INTERLEAVING:
-                       if (3 == CONFIG_NUM_DDR_CONTROLLERS)
+#if (3 == CONFIG_NUM_DDR_CONTROLLERS)
                                k = 2;
-                       else
+#else
                                k = CONFIG_NUM_DDR_CONTROLLERS;
+#endif
                        break;
                case FSL_DDR_3WAY_1KB_INTERLEAVING:
                case FSL_DDR_3WAY_4KB_INTERLEAVING:
index ad53658fc92927a525bd2c2f27cbc9ed90fdaf5b..7a22aa398865655b0cb8f8ca8069b648bfb1c463 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2012 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
 
 #define ULL_8FS 0xFFFFFFFFULL
 
+u32 fsl_ddr_get_version(void)
+{
+       struct ccsr_ddr __iomem *ddr;
+       u32 ver_major_minor_errata;
+
+       ddr = (void *)_DDR_ADDR;
+       ver_major_minor_errata = (ddr_in32(&ddr->ip_rev1) & 0xFFFF) << 8;
+       ver_major_minor_errata |= (ddr_in32(&ddr->ip_rev2) & 0xFF00) >> 8;
+
+       return ver_major_minor_errata;
+}
+
 /*
  * Round up mclk_ps to nearest 1 ps in memory controller code
  * if the error is 0.5ps or more.
@@ -175,6 +187,9 @@ void board_add_ram_info(int use_default)
        case SDRAM_TYPE_DDR3:
                puts("3");
                break;
+       case SDRAM_TYPE_DDR4:
+               puts("4");
+               break;
        default:
                puts("?");
                break;
@@ -188,9 +203,12 @@ void board_add_ram_info(int use_default)
                puts(", 64-bit");
 
        /* Calculate CAS latency based on timing cfg values */
-       cas_lat = ((ddr_in32(&ddr->timing_cfg_1) >> 16) & 0xf) + 1;
-       if ((ddr_in32(&ddr->timing_cfg_3) >> 12) & 1)
-               cas_lat += (8 << 1);
+       cas_lat = ((ddr_in32(&ddr->timing_cfg_1) >> 16) & 0xf);
+       if (fsl_ddr_get_version() <= 0x40400)
+               cas_lat += 1;
+       else
+               cas_lat += 2;
+       cas_lat += ((ddr_in32(&ddr->timing_cfg_3) >> 12) & 3) << 4;
        printf(", CL=%d", cas_lat >> 1);
        if (cas_lat & 0x1)
                puts(".5");
index 8a09aafbf246b5059b6d6d7ec0d3bcc16448b66d..51b10263b8824e947c4c4cdbbd272fb1eb2fb46b 100644 (file)
@@ -219,7 +219,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                        ret = tret;
        }
 
-       return ret = 0 ? size : ret;
+       return ret;
 }
 
 static int dfu_read_buffer_fill(struct dfu_entity *dfu, void *buf, int size)
index 651cfff5b3be4f742eb18cbeef1c9f3a6eacd1c2..5e10ea7e66478a7308039e066989c6547d19a565 100644 (file)
@@ -184,66 +184,95 @@ int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, void *buf,
        return ret;
 }
 
+/*
+ * @param s Parameter string containing space-separated arguments:
+ *     1st:
+ *             raw     (raw read/write)
+ *             fat     (files)
+ *             ext4    (^)
+ *             part    (partition image)
+ *     2nd and 3rd:
+ *             lba_start and lba_size, for raw write
+ *             mmc_dev and mmc_part, for filesystems and part
+ */
 int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *s)
 {
-       int dev, part;
-       struct mmc *mmc;
-       block_dev_desc_t *blk_dev;
-       disk_partition_t partinfo;
-       char *st;
-
-       dfu->dev_type = DFU_DEV_MMC;
-       st = strsep(&s, " ");
-       if (!strcmp(st, "mmc")) {
-               dfu->layout = DFU_RAW_ADDR;
-               dfu->data.mmc.lba_start = simple_strtoul(s, &s, 16);
-               dfu->data.mmc.lba_size = simple_strtoul(++s, &s, 16);
-               dfu->data.mmc.lba_blk_size = get_mmc_blk_size(dfu->dev_num);
-       } else if (!strcmp(st, "fat")) {
-               dfu->layout = DFU_FS_FAT;
-       } else if (!strcmp(st, "ext4")) {
-               dfu->layout = DFU_FS_EXT4;
-       } else if (!strcmp(st, "part")) {
+       const char *entity_type;
+       size_t second_arg;
+       size_t third_arg;
 
-               dfu->layout = DFU_RAW_ADDR;
+       struct mmc *mmc;
 
-               dev = simple_strtoul(s, &s, 10);
-               s++;
-               part = simple_strtoul(s, &s, 10);
+       const char *argv[3];
+       const char **parg = argv;
 
-               mmc = find_mmc_device(dev);
-               if (mmc == NULL || mmc_init(mmc)) {
-                       printf("%s: could not find mmc device #%d!\n",
-                              __func__, dev);
+       for (; parg < argv + sizeof(argv) / sizeof(*argv); ++parg) {
+               *parg = strsep(&s, " ");
+               if (*parg == NULL) {
+                       error("Invalid number of arguments.\n");
                        return -ENODEV;
                }
+       }
+
+       entity_type = argv[0];
+       /*
+        * Base 0 means we'll accept (prefixed with 0x or 0) base 16, 8,
+        * with default 10.
+        */
+       second_arg = simple_strtoul(argv[1], NULL, 0);
+       third_arg = simple_strtoul(argv[2], NULL, 0);
 
-               blk_dev = &mmc->block_dev;
-               if (get_partition_info(blk_dev, part, &partinfo) != 0) {
-                       printf("%s: could not find partition #%d on mmc device #%d!\n",
-                              __func__, part, dev);
+       mmc = find_mmc_device(dfu->dev_num);
+       if (mmc == NULL) {
+               error("Couldn't find MMC device no. %d.\n", dfu->dev_num);
+               return -ENODEV;
+       }
+
+       if (mmc_init(mmc)) {
+               error("Couldn't init MMC device.\n");
+               return -ENODEV;
+       }
+
+       if (!strcmp(entity_type, "raw")) {
+               dfu->layout                     = DFU_RAW_ADDR;
+               dfu->data.mmc.lba_start         = second_arg;
+               dfu->data.mmc.lba_size          = third_arg;
+               dfu->data.mmc.lba_blk_size      = mmc->read_bl_len;
+       } else if (!strcmp(entity_type, "part")) {
+               disk_partition_t partinfo;
+               block_dev_desc_t *blk_dev = &mmc->block_dev;
+               int mmcdev = second_arg;
+               int mmcpart = third_arg;
+
+               if (get_partition_info(blk_dev, mmcpart, &partinfo) != 0) {
+                       error("Couldn't find part #%d on mmc device #%d\n",
+                             mmcpart, mmcdev);
                        return -ENODEV;
                }
 
-               dfu->data.mmc.lba_start = partinfo.start;
-               dfu->data.mmc.lba_size = partinfo.size;
-               dfu->data.mmc.lba_blk_size = partinfo.blksz;
-
+               dfu->layout                     = DFU_RAW_ADDR;
+               dfu->data.mmc.lba_start         = partinfo.start;
+               dfu->data.mmc.lba_size          = partinfo.size;
+               dfu->data.mmc.lba_blk_size      = partinfo.blksz;
+       } else if (!strcmp(entity_type, "fat")) {
+               dfu->layout = DFU_FS_FAT;
+       } else if (!strcmp(entity_type, "ext4")) {
+               dfu->layout = DFU_FS_EXT4;
        } else {
-               printf("%s: Memory layout (%s) not supported!\n", __func__, st);
+               error("Memory layout (%s) not supported!\n", entity_type);
                return -ENODEV;
        }
 
-       if (dfu->layout == DFU_FS_EXT4 || dfu->layout == DFU_FS_FAT) {
-               dfu->data.mmc.dev = simple_strtoul(s, &s, 10);
-               dfu->data.mmc.part = simple_strtoul(++s, &s, 10);
+       /* if it's NOT a raw write */
+       if (strcmp(entity_type, "raw")) {
+               dfu->data.mmc.dev = second_arg;
+               dfu->data.mmc.part = third_arg;
        }
 
+       dfu->dev_type = DFU_DEV_MMC;
        dfu->read_medium = dfu_read_medium_mmc;
        dfu->write_medium = dfu_write_medium_mmc;
        dfu->flush_medium = dfu_flush_medium_mmc;
-
-       /* initial state */
        dfu->inited = 0;
 
        return 0;
index 291ad946dba19a8b358b4be6fe3c12be018d73a1..aa159f8d41d4f336f4e56df6d1c739bab0fd98c2 100644 (file)
@@ -423,18 +423,45 @@ fsl_i2c_read(struct i2c_adapter *adap, u8 dev, uint addr, int alen, u8 *data,
        struct fsl_i2c *device = (struct fsl_i2c *)i2c_dev[adap->hwadapnr];
        int i = -1; /* signal error */
        u8 *a = (u8*)&addr;
+       int len = alen * -1;
 
        if (i2c_wait4bus(adap) < 0)
                return -1;
 
-       if ((!length || alen > 0)
-           && i2c_write_addr(adap, dev, I2C_WRITE_BIT, 0) != 0
-           && __i2c_write(adap, &a[4 - alen], alen) == alen)
-               i = 0; /* No error so far */
+       /* To handle the need of I2C devices that require to write few bytes
+        * (more than 4 bytes of address as in the case of else part)
+        * of data before reading, Negative equivalent of length(bytes to write)
+        * is passed, but used the +ve part of len for writing data
+        */
+       if (alen < 0) {
+               /* Generate a START and send the Address and
+                * the Tx Bytes to the slave.
+                * "START: Address: Write bytes data[len]"
+                * IF part supports writing any number of bytes in contrast
+                * to the else part, which supports writing address offset
+                * of upto 4 bytes only.
+                * bytes that need to be written are passed in
+                * "data", which will eventually keep the data READ,
+                * after writing the len bytes out of it
+                */
+               if (i2c_write_addr(adap, dev, I2C_WRITE_BIT, 0) != 0)
+                       i = __i2c_write(adap, data, len);
+
+               if (i != len)
+                       return -1;
 
-       if (length &&
-           i2c_write_addr(adap, dev, I2C_READ_BIT, alen ? 1 : 0) != 0)
-               i = __i2c_read(adap, data, length);
+               if (length && i2c_write_addr(adap, dev, I2C_READ_BIT, 1) != 0)
+                       i = __i2c_read(adap, data, length);
+       } else {
+               if ((!length || alen > 0) &&
+                   i2c_write_addr(adap, dev, I2C_WRITE_BIT, 0) != 0  &&
+                   __i2c_write(adap, &a[4 - alen], alen) == alen)
+                       i = 0; /* No error so far */
+
+               if (length &&
+                   i2c_write_addr(adap, dev, I2C_READ_BIT, alen ? 1 : 0) != 0)
+                       i = __i2c_read(adap, data, length);
+       }
 
        writeb(I2C_CR_MEN, &device->cr);
 
index 595019b3b8874601437e5c38d6b9b9793d1d0a92..48468d74bdd838ae414688951011b6e5da8e70d8 100644 (file)
@@ -22,6 +22,8 @@
 #include <i2c.h>
 #include <watchdog.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #ifdef I2C_QUIRK_REG
 struct mxc_i2c_regs {
        uint8_t         iadr;
@@ -411,12 +413,6 @@ struct sram_data {
        struct i2c_parms i2c_data[3];
 };
 
-/*
- * For SPL boot some boards need i2c before SDRAM is initialized so force
- * variables to live in SRAM
- */
-static struct sram_data __attribute__((section(".data"))) srdata;
-
 static void * const i2c_bases[] = {
 #if defined(CONFIG_MX25)
        (void *)IMX_I2C_BASE,
@@ -445,9 +441,10 @@ void *i2c_get_base(struct i2c_adapter *adap)
 
 static struct i2c_parms *i2c_get_parms(void *base)
 {
+       struct sram_data *srdata = (void *)gd->srdata;
        int i = 0;
-       struct i2c_parms *p = srdata.i2c_data;
-       while (i < ARRAY_SIZE(srdata.i2c_data)) {
+       struct i2c_parms *p = srdata->i2c_data;
+       while (i < ARRAY_SIZE(srdata->i2c_data)) {
                if (p->base == base)
                        return p;
                p++;
@@ -490,8 +487,9 @@ static int mxc_i2c_probe(struct i2c_adapter *adap, uint8_t chip)
 void bus_i2c_init(void *base, int speed, int unused,
                int (*idle_bus_fn)(void *p), void *idle_bus_data)
 {
+       struct sram_data *srdata = (void *)gd->srdata;
        int i = 0;
-       struct i2c_parms *p = srdata.i2c_data;
+       struct i2c_parms *p = srdata->i2c_data;
        if (!base)
                return;
        for (;;) {
@@ -505,7 +503,7 @@ void bus_i2c_init(void *base, int speed, int unused,
                }
                p++;
                i++;
-               if (i >= ARRAY_SIZE(srdata.i2c_data))
+               if (i >= ARRAY_SIZE(srdata->i2c_data))
                        return;
        }
        bus_i2c_set_bus_speed(base, speed);
index be619736674dc42bb198b1e61ef7cce8d73c3e8b..3902e9ff53dc86e77b2ec42dcf8fc97af29423e3 100644 (file)
@@ -162,3 +162,10 @@ void init_early_memctl_regs(void)
        set_ifc_csor(IFC_CS7, CONFIG_SYS_CSOR7);
 #endif
 }
+
+void init_final_memctl_regs(void)
+{
+#ifdef CONFIG_SYS_CSPR0_FINAL
+       set_ifc_cspr(IFC_CS0, CONFIG_SYS_CSPR0_FINAL);
+#endif
+}
index 8fc263f4f40b864d8c9c8090c88896a7995a2a87..b1cb4b3534f8e68b2576d30cb5f021fde8a80133 100644 (file)
 #define MBRDBR_BOOT_SIG_AA     0x1ff
 #define CONFIG_CFG_DATA_SECTOR 0
 
+
+void mmc_spl_load_image(uint32_t offs, unsigned int size, void *vdst)
+{
+       uint blk_start, blk_cnt, err;
+
+       struct mmc *mmc = find_mmc_device(0);
+       if (!mmc) {
+               puts("spl: mmc device not found!!\n");
+               hang();
+       }
+
+       if (mmc_init(mmc)) {
+               puts("MMC init failed\n");
+               return;
+       }
+
+       blk_start = ALIGN(offs, mmc->read_bl_len) / mmc->read_bl_len;
+       blk_cnt = ALIGN(size, mmc->read_bl_len) / mmc->read_bl_len;
+
+       err = mmc->block_dev.block_read(0, blk_start, blk_cnt, vdst);
+       if (err != blk_cnt) {
+               puts("spl: mmc read failed!!\n");
+               hang();
+       }
+}
+
 /*
  * The main entry for mmc booting. It's necessary that SDRAM is already
  * configured and available since this code loads the main U-Boot image
@@ -29,10 +55,12 @@ void __noreturn mmc_boot(void)
 {
        __attribute__((noreturn)) void (*uboot)(void);
        uint blk_start, blk_cnt, err;
-       u32 blklen;
+#ifndef CONFIG_FSL_CORENET
        uchar *tmp_buf;
+       u32 blklen;
        uchar val;
        uint i, byte_num;
+#endif
        u32 offset, code_len;
        struct mmc *mmc;
 
@@ -102,7 +130,9 @@ void __noreturn mmc_boot(void)
                                        (uchar *)CONFIG_SYS_MMC_U_BOOT_DST);
        if (err != blk_cnt) {
                puts("spl: mmc read failed!!\n");
+#ifndef CONFIG_FSL_CORENET
                free(tmp_buf);
+#endif
                hang();
        }
 
diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c
deleted file mode 100644 (file)
index 4cd741e..0000000
+++ /dev/null
@@ -1,1780 +0,0 @@
-/*
- * drivers/mtd/nand/diskonchip.c
- *
- * (C) 2003 Red Hat, Inc.
- * (C) 2004 Dan Brown <dan_brown@ieee.org>
- * (C) 2004 Kalev Lember <kalev@smartlink.ee>
- *
- * Author: David Woodhouse <dwmw2@infradead.org>
- * Additional Diskonchip 2000 and Millennium support by Dan Brown <dan_brown@ieee.org>
- * Diskonchip Millennium Plus support by Kalev Lember <kalev@smartlink.ee>
- *
- * Error correction code lifted from the old docecc code
- * Author: Fabrice Bellard (fabrice.bellard@netgem.com)
- * Copyright (C) 2000 Netgem S.A.
- * converted to the generic Reed-Solomon library by Thomas Gleixner <tglx@linutronix.de>
- *
- * Interface to generic NAND code for M-Systems DiskOnChip devices
- */
-
-#include <common.h>
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/sched.h>
-#include <linux/delay.h>
-#include <linux/rslib.h>
-#include <linux/moduleparam.h>
-#include <asm/io.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/nand.h>
-#include <linux/mtd/doc2000.h>
-#include <linux/mtd/compatmac.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/inftl.h>
-
-/* Where to look for the devices? */
-#ifndef CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS
-#define CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS 0
-#endif
-
-static unsigned long __initdata doc_locations[] = {
-#if defined (__alpha__) || defined(__i386__) || defined(__x86_64__)
-#ifdef CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH
-       0xfffc8000, 0xfffca000, 0xfffcc000, 0xfffce000,
-       0xfffd0000, 0xfffd2000, 0xfffd4000, 0xfffd6000,
-       0xfffd8000, 0xfffda000, 0xfffdc000, 0xfffde000,
-       0xfffe0000, 0xfffe2000, 0xfffe4000, 0xfffe6000,
-       0xfffe8000, 0xfffea000, 0xfffec000, 0xfffee000,
-#else /*  CONFIG_MTD_DOCPROBE_HIGH */
-       0xc8000, 0xca000, 0xcc000, 0xce000,
-       0xd0000, 0xd2000, 0xd4000, 0xd6000,
-       0xd8000, 0xda000, 0xdc000, 0xde000,
-       0xe0000, 0xe2000, 0xe4000, 0xe6000,
-       0xe8000, 0xea000, 0xec000, 0xee000,
-#endif /*  CONFIG_MTD_DOCPROBE_HIGH */
-#else
-#warning Unknown architecture for DiskOnChip. No default probe locations defined
-#endif
-       0xffffffff };
-
-static struct mtd_info *doclist = NULL;
-
-struct doc_priv {
-       void __iomem *virtadr;
-       unsigned long physadr;
-       u_char ChipID;
-       u_char CDSNControl;
-       int chips_per_floor;    /* The number of chips detected on each floor */
-       int curfloor;
-       int curchip;
-       int mh0_page;
-       int mh1_page;
-       struct mtd_info *nextdoc;
-};
-
-/* This is the syndrome computed by the HW ecc generator upon reading an empty
-   page, one with all 0xff for data and stored ecc code. */
-static u_char empty_read_syndrome[6] = { 0x26, 0xff, 0x6d, 0x47, 0x73, 0x7a };
-
-/* This is the ecc value computed by the HW ecc generator upon writing an empty
-   page, one with all 0xff for data. */
-static u_char empty_write_ecc[6] = { 0x4b, 0x00, 0xe2, 0x0e, 0x93, 0xf7 };
-
-#define INFTL_BBT_RESERVED_BLOCKS 4
-
-#define DoC_is_MillenniumPlus(doc) ((doc)->ChipID == DOC_ChipID_DocMilPlus16 || (doc)->ChipID == DOC_ChipID_DocMilPlus32)
-#define DoC_is_Millennium(doc) ((doc)->ChipID == DOC_ChipID_DocMil)
-#define DoC_is_2000(doc) ((doc)->ChipID == DOC_ChipID_Doc2k)
-
-static void doc200x_hwcontrol(struct mtd_info *mtd, int cmd,
-                             unsigned int bitmask);
-static void doc200x_select_chip(struct mtd_info *mtd, int chip);
-
-static int debug = 0;
-module_param(debug, int, 0);
-
-static int try_dword = 1;
-module_param(try_dword, int, 0);
-
-static int no_ecc_failures = 0;
-module_param(no_ecc_failures, int, 0);
-
-static int no_autopart = 0;
-module_param(no_autopart, int, 0);
-
-static int show_firmware_partition = 0;
-module_param(show_firmware_partition, int, 0);
-
-#ifdef CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE
-static int inftl_bbt_write = 1;
-#else
-static int inftl_bbt_write = 0;
-#endif
-module_param(inftl_bbt_write, int, 0);
-
-static unsigned long doc_config_location = CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS;
-module_param(doc_config_location, ulong, 0);
-MODULE_PARM_DESC(doc_config_location, "Physical memory address at which to probe for DiskOnChip");
-
-/* Sector size for HW ECC */
-#define SECTOR_SIZE 512
-/* The sector bytes are packed into NB_DATA 10 bit words */
-#define NB_DATA (((SECTOR_SIZE + 1) * 8 + 6) / 10)
-/* Number of roots */
-#define NROOTS 4
-/* First consective root */
-#define FCR 510
-/* Number of symbols */
-#define NN 1023
-
-/* the Reed Solomon control structure */
-static struct rs_control *rs_decoder;
-
-/*
- * The HW decoder in the DoC ASIC's provides us a error syndrome,
- * which we must convert to a standard syndrome usable by the generic
- * Reed-Solomon library code.
- *
- * Fabrice Bellard figured this out in the old docecc code. I added
- * some comments, improved a minor bit and converted it to make use
- * of the generic Reed-Solomon libary. tglx
- */
-static int doc_ecc_decode(struct rs_control *rs, uint8_t *data, uint8_t *ecc)
-{
-       int i, j, nerr, errpos[8];
-       uint8_t parity;
-       uint16_t ds[4], s[5], tmp, errval[8], syn[4];
-
-       /* Convert the ecc bytes into words */
-       ds[0] = ((ecc[4] & 0xff) >> 0) | ((ecc[5] & 0x03) << 8);
-       ds[1] = ((ecc[5] & 0xfc) >> 2) | ((ecc[2] & 0x0f) << 6);
-       ds[2] = ((ecc[2] & 0xf0) >> 4) | ((ecc[3] & 0x3f) << 4);
-       ds[3] = ((ecc[3] & 0xc0) >> 6) | ((ecc[0] & 0xff) << 2);
-       parity = ecc[1];
-
-       /* Initialize the syndrome buffer */
-       for (i = 0; i < NROOTS; i++)
-               s[i] = ds[0];
-       /*
-        *  Evaluate
-        *  s[i] = ds[3]x^3 + ds[2]x^2 + ds[1]x^1 + ds[0]
-        *  where x = alpha^(FCR + i)
-        */
-       for (j = 1; j < NROOTS; j++) {
-               if (ds[j] == 0)
-                       continue;
-               tmp = rs->index_of[ds[j]];
-               for (i = 0; i < NROOTS; i++)
-                       s[i] ^= rs->alpha_to[rs_modnn(rs, tmp + (FCR + i) * j)];
-       }
-
-       /* Calc s[i] = s[i] / alpha^(v + i) */
-       for (i = 0; i < NROOTS; i++) {
-               if (syn[i])
-                       syn[i] = rs_modnn(rs, rs->index_of[s[i]] + (NN - FCR - i));
-       }
-       /* Call the decoder library */
-       nerr = decode_rs16(rs, NULL, NULL, 1019, syn, 0, errpos, 0, errval);
-
-       /* Incorrectable errors ? */
-       if (nerr < 0)
-               return nerr;
-
-       /*
-        * Correct the errors. The bitpositions are a bit of magic,
-        * but they are given by the design of the de/encoder circuit
-        * in the DoC ASIC's.
-        */
-       for (i = 0; i < nerr; i++) {
-               int index, bitpos, pos = 1015 - errpos[i];
-               uint8_t val;
-               if (pos >= NB_DATA && pos < 1019)
-                       continue;
-               if (pos < NB_DATA) {
-                       /* extract bit position (MSB first) */
-                       pos = 10 * (NB_DATA - 1 - pos) - 6;
-                       /* now correct the following 10 bits. At most two bytes
-                          can be modified since pos is even */
-                       index = (pos >> 3) ^ 1;
-                       bitpos = pos & 7;
-                       if ((index >= 0 && index < SECTOR_SIZE) || index == (SECTOR_SIZE + 1)) {
-                               val = (uint8_t) (errval[i] >> (2 + bitpos));
-                               parity ^= val;
-                               if (index < SECTOR_SIZE)
-                                       data[index] ^= val;
-                       }
-                       index = ((pos >> 3) + 1) ^ 1;
-                       bitpos = (bitpos + 10) & 7;
-                       if (bitpos == 0)
-                               bitpos = 8;
-                       if ((index >= 0 && index < SECTOR_SIZE) || index == (SECTOR_SIZE + 1)) {
-                               val = (uint8_t) (errval[i] << (8 - bitpos));
-                               parity ^= val;
-                               if (index < SECTOR_SIZE)
-                                       data[index] ^= val;
-                       }
-               }
-       }
-       /* If the parity is wrong, no rescue possible */
-       return parity ? -EBADMSG : nerr;
-}
-
-static void DoC_Delay(struct doc_priv *doc, unsigned short cycles)
-{
-       volatile char dummy;
-       int i;
-
-       for (i = 0; i < cycles; i++) {
-               if (DoC_is_Millennium(doc))
-                       dummy = ReadDOC(doc->virtadr, NOP);
-               else if (DoC_is_MillenniumPlus(doc))
-                       dummy = ReadDOC(doc->virtadr, Mplus_NOP);
-               else
-                       dummy = ReadDOC(doc->virtadr, DOCStatus);
-       }
-
-}
-
-#define CDSN_CTRL_FR_B_MASK    (CDSN_CTRL_FR_B0 | CDSN_CTRL_FR_B1)
-
-/* DOC_WaitReady: Wait for RDY line to be asserted by the flash chip */
-static int _DoC_WaitReady(struct doc_priv *doc)
-{
-       void __iomem *docptr = doc->virtadr;
-       unsigned long timeo = jiffies + (HZ * 10);
-
-       if (debug)
-               printk("_DoC_WaitReady...\n");
-       /* Out-of-line routine to wait for chip response */
-       if (DoC_is_MillenniumPlus(doc)) {
-               while ((ReadDOC(docptr, Mplus_FlashControl) & CDSN_CTRL_FR_B_MASK) != CDSN_CTRL_FR_B_MASK) {
-                       if (time_after(jiffies, timeo)) {
-                               printk("_DoC_WaitReady timed out.\n");
-                               return -EIO;
-                       }
-                       udelay(1);
-                       cond_resched();
-               }
-       } else {
-               while (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B)) {
-                       if (time_after(jiffies, timeo)) {
-                               printk("_DoC_WaitReady timed out.\n");
-                               return -EIO;
-                       }
-                       udelay(1);
-                       cond_resched();
-               }
-       }
-
-       return 0;
-}
-
-static inline int DoC_WaitReady(struct doc_priv *doc)
-{
-       void __iomem *docptr = doc->virtadr;
-       int ret = 0;
-
-       if (DoC_is_MillenniumPlus(doc)) {
-               DoC_Delay(doc, 4);
-
-               if ((ReadDOC(docptr, Mplus_FlashControl) & CDSN_CTRL_FR_B_MASK) != CDSN_CTRL_FR_B_MASK)
-                       /* Call the out-of-line routine to wait */
-                       ret = _DoC_WaitReady(doc);
-       } else {
-               DoC_Delay(doc, 4);
-
-               if (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B))
-                       /* Call the out-of-line routine to wait */
-                       ret = _DoC_WaitReady(doc);
-               DoC_Delay(doc, 2);
-       }
-
-       if (debug)
-               printk("DoC_WaitReady OK\n");
-       return ret;
-}
-
-static void doc2000_write_byte(struct mtd_info *mtd, u_char datum)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       if (debug)
-               printk("write_byte %02x\n", datum);
-       WriteDOC(datum, docptr, CDSNSlowIO);
-       WriteDOC(datum, docptr, 2k_CDSN_IO);
-}
-
-static u_char doc2000_read_byte(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       u_char ret;
-
-       ReadDOC(docptr, CDSNSlowIO);
-       DoC_Delay(doc, 2);
-       ret = ReadDOC(docptr, 2k_CDSN_IO);
-       if (debug)
-               printk("read_byte returns %02x\n", ret);
-       return ret;
-}
-
-static void doc2000_writebuf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-       if (debug)
-               printk("writebuf of %d bytes: ", len);
-       for (i = 0; i < len; i++) {
-               WriteDOC_(buf[i], docptr, DoC_2k_CDSN_IO + i);
-               if (debug && i < 16)
-                       printk("%02x ", buf[i]);
-       }
-       if (debug)
-               printk("\n");
-}
-
-static void doc2000_readbuf(struct mtd_info *mtd, u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       if (debug)
-               printk("readbuf of %d bytes: ", len);
-
-       for (i = 0; i < len; i++) {
-               buf[i] = ReadDOC(docptr, 2k_CDSN_IO + i);
-       }
-}
-
-static void doc2000_readbuf_dword(struct mtd_info *mtd,
-                           u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       if (debug)
-               printk("readbuf_dword of %d bytes: ", len);
-
-       if (unlikely((((unsigned long)buf) | len) & 3)) {
-               for (i = 0; i < len; i++) {
-                       *(uint8_t *) (&buf[i]) = ReadDOC(docptr, 2k_CDSN_IO + i);
-               }
-       } else {
-               for (i = 0; i < len; i += 4) {
-                       *(uint32_t*) (&buf[i]) = readl(docptr + DoC_2k_CDSN_IO + i);
-               }
-       }
-}
-
-static int doc2000_verifybuf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       for (i = 0; i < len; i++)
-               if (buf[i] != ReadDOC(docptr, 2k_CDSN_IO))
-                       return -EFAULT;
-       return 0;
-}
-
-static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       uint16_t ret;
-
-       doc200x_select_chip(mtd, nr);
-       doc200x_hwcontrol(mtd, NAND_CMD_READID,
-                         NAND_CTRL_CLE | NAND_CTRL_CHANGE);
-       doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE);
-       doc200x_hwcontrol(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
-
-       /* We cant' use dev_ready here, but at least we wait for the
-        * command to complete
-        */
-       udelay(50);
-
-       ret = this->read_byte(mtd) << 8;
-       ret |= this->read_byte(mtd);
-
-       if (doc->ChipID == DOC_ChipID_Doc2k && try_dword && !nr) {
-               /* First chip probe. See if we get same results by 32-bit access */
-               union {
-                       uint32_t dword;
-                       uint8_t byte[4];
-               } ident;
-               void __iomem *docptr = doc->virtadr;
-
-               doc200x_hwcontrol(mtd, NAND_CMD_READID,
-                                 NAND_CTRL_CLE | NAND_CTRL_CHANGE);
-               doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE);
-               doc200x_hwcontrol(mtd, NAND_CMD_NONE,
-                                 NAND_NCE | NAND_CTRL_CHANGE);
-
-               udelay(50);
-
-               ident.dword = readl(docptr + DoC_2k_CDSN_IO);
-               if (((ident.byte[0] << 8) | ident.byte[1]) == ret) {
-                       printk(KERN_INFO "DiskOnChip 2000 responds to DWORD access\n");
-                       this->read_buf = &doc2000_readbuf_dword;
-               }
-       }
-
-       return ret;
-}
-
-static void __init doc2000_count_chips(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       uint16_t mfrid;
-       int i;
-
-       /* Max 4 chips per floor on DiskOnChip 2000 */
-       doc->chips_per_floor = 4;
-
-       /* Find out what the first chip is */
-       mfrid = doc200x_ident_chip(mtd, 0);
-
-       /* Find how many chips in each floor. */
-       for (i = 1; i < 4; i++) {
-               if (doc200x_ident_chip(mtd, i) != mfrid)
-                       break;
-       }
-       doc->chips_per_floor = i;
-       printk(KERN_DEBUG "Detected %d chips per floor.\n", i);
-}
-
-static int doc200x_wait(struct mtd_info *mtd, struct nand_chip *this)
-{
-       struct doc_priv *doc = this->priv;
-
-       int status;
-
-       DoC_WaitReady(doc);
-       this->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1);
-       DoC_WaitReady(doc);
-       status = (int)this->read_byte(mtd);
-
-       return status;
-}
-
-static void doc2001_write_byte(struct mtd_info *mtd, u_char datum)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       WriteDOC(datum, docptr, CDSNSlowIO);
-       WriteDOC(datum, docptr, Mil_CDSN_IO);
-       WriteDOC(datum, docptr, WritePipeTerm);
-}
-
-static u_char doc2001_read_byte(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       /*ReadDOC(docptr, CDSNSlowIO); */
-       /* 11.4.5 -- delay twice to allow extended length cycle */
-       DoC_Delay(doc, 2);
-       ReadDOC(docptr, ReadPipeInit);
-       /*return ReadDOC(docptr, Mil_CDSN_IO); */
-       return ReadDOC(docptr, LastDataRead);
-}
-
-static void doc2001_writebuf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       for (i = 0; i < len; i++)
-               WriteDOC_(buf[i], docptr, DoC_Mil_CDSN_IO + i);
-       /* Terminate write pipeline */
-       WriteDOC(0x00, docptr, WritePipeTerm);
-}
-
-static void doc2001_readbuf(struct mtd_info *mtd, u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       /* Start read pipeline */
-       ReadDOC(docptr, ReadPipeInit);
-
-       for (i = 0; i < len - 1; i++)
-               buf[i] = ReadDOC(docptr, Mil_CDSN_IO + (i & 0xff));
-
-       /* Terminate read pipeline */
-       buf[i] = ReadDOC(docptr, LastDataRead);
-}
-
-static int doc2001_verifybuf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       /* Start read pipeline */
-       ReadDOC(docptr, ReadPipeInit);
-
-       for (i = 0; i < len - 1; i++)
-               if (buf[i] != ReadDOC(docptr, Mil_CDSN_IO)) {
-                       ReadDOC(docptr, LastDataRead);
-                       return i;
-               }
-       if (buf[i] != ReadDOC(docptr, LastDataRead))
-               return i;
-       return 0;
-}
-
-static u_char doc2001plus_read_byte(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       u_char ret;
-
-       ReadDOC(docptr, Mplus_ReadPipeInit);
-       ReadDOC(docptr, Mplus_ReadPipeInit);
-       ret = ReadDOC(docptr, Mplus_LastDataRead);
-       if (debug)
-               printk("read_byte returns %02x\n", ret);
-       return ret;
-}
-
-static void doc2001plus_writebuf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       if (debug)
-               printk("writebuf of %d bytes: ", len);
-       for (i = 0; i < len; i++) {
-               WriteDOC_(buf[i], docptr, DoC_Mil_CDSN_IO + i);
-               if (debug && i < 16)
-                       printk("%02x ", buf[i]);
-       }
-       if (debug)
-               printk("\n");
-}
-
-static void doc2001plus_readbuf(struct mtd_info *mtd, u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       if (debug)
-               printk("readbuf of %d bytes: ", len);
-
-       /* Start read pipeline */
-       ReadDOC(docptr, Mplus_ReadPipeInit);
-       ReadDOC(docptr, Mplus_ReadPipeInit);
-
-       for (i = 0; i < len - 2; i++) {
-               buf[i] = ReadDOC(docptr, Mil_CDSN_IO);
-               if (debug && i < 16)
-                       printk("%02x ", buf[i]);
-       }
-
-       /* Terminate read pipeline */
-       buf[len - 2] = ReadDOC(docptr, Mplus_LastDataRead);
-       if (debug && i < 16)
-               printk("%02x ", buf[len - 2]);
-       buf[len - 1] = ReadDOC(docptr, Mplus_LastDataRead);
-       if (debug && i < 16)
-               printk("%02x ", buf[len - 1]);
-       if (debug)
-               printk("\n");
-}
-
-static int doc2001plus_verifybuf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-
-       if (debug)
-               printk("verifybuf of %d bytes: ", len);
-
-       /* Start read pipeline */
-       ReadDOC(docptr, Mplus_ReadPipeInit);
-       ReadDOC(docptr, Mplus_ReadPipeInit);
-
-       for (i = 0; i < len - 2; i++)
-               if (buf[i] != ReadDOC(docptr, Mil_CDSN_IO)) {
-                       ReadDOC(docptr, Mplus_LastDataRead);
-                       ReadDOC(docptr, Mplus_LastDataRead);
-                       return i;
-               }
-       if (buf[len - 2] != ReadDOC(docptr, Mplus_LastDataRead))
-               return len - 2;
-       if (buf[len - 1] != ReadDOC(docptr, Mplus_LastDataRead))
-               return len - 1;
-       return 0;
-}
-
-static void doc2001plus_select_chip(struct mtd_info *mtd, int chip)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int floor = 0;
-
-       if (debug)
-               printk("select chip (%d)\n", chip);
-
-       if (chip == -1) {
-               /* Disable flash internally */
-               WriteDOC(0, docptr, Mplus_FlashSelect);
-               return;
-       }
-
-       floor = chip / doc->chips_per_floor;
-       chip -= (floor * doc->chips_per_floor);
-
-       /* Assert ChipEnable and deassert WriteProtect */
-       WriteDOC((DOC_FLASH_CE), docptr, Mplus_FlashSelect);
-       this->cmdfunc(mtd, NAND_CMD_RESET, -1, -1);
-
-       doc->curchip = chip;
-       doc->curfloor = floor;
-}
-
-static void doc200x_select_chip(struct mtd_info *mtd, int chip)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int floor = 0;
-
-       if (debug)
-               printk("select chip (%d)\n", chip);
-
-       if (chip == -1)
-               return;
-
-       floor = chip / doc->chips_per_floor;
-       chip -= (floor * doc->chips_per_floor);
-
-       /* 11.4.4 -- deassert CE before changing chip */
-       doc200x_hwcontrol(mtd, NAND_CMD_NONE, 0 | NAND_CTRL_CHANGE);
-
-       WriteDOC(floor, docptr, FloorSelect);
-       WriteDOC(chip, docptr, CDSNDeviceSelect);
-
-       doc200x_hwcontrol(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE);
-
-       doc->curchip = chip;
-       doc->curfloor = floor;
-}
-
-#define CDSN_CTRL_MSK (CDSN_CTRL_CE | CDSN_CTRL_CLE | CDSN_CTRL_ALE)
-
-static void doc200x_hwcontrol(struct mtd_info *mtd, int cmd,
-                             unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       if (ctrl & NAND_CTRL_CHANGE) {
-               doc->CDSNControl &= ~CDSN_CTRL_MSK;
-               doc->CDSNControl |= ctrl & CDSN_CTRL_MSK;
-               if (debug)
-                       printk("hwcontrol(%d): %02x\n", cmd, doc->CDSNControl);
-               WriteDOC(doc->CDSNControl, docptr, CDSNControl);
-               /* 11.4.3 -- 4 NOPs after CSDNControl write */
-               DoC_Delay(doc, 4);
-       }
-       if (cmd != NAND_CMD_NONE) {
-               if (DoC_is_2000(doc))
-                       doc2000_write_byte(mtd, cmd);
-               else
-                       doc2001_write_byte(mtd, cmd);
-       }
-}
-
-static void doc2001plus_command(struct mtd_info *mtd, unsigned command, int column, int page_addr)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       /*
-        * Must terminate write pipeline before sending any commands
-        * to the device.
-        */
-       if (command == NAND_CMD_PAGEPROG) {
-               WriteDOC(0x00, docptr, Mplus_WritePipeTerm);
-               WriteDOC(0x00, docptr, Mplus_WritePipeTerm);
-       }
-
-       /*
-        * Write out the command to the device.
-        */
-       if (command == NAND_CMD_SEQIN) {
-               int readcmd;
-
-               if (column >= mtd->writesize) {
-                       /* OOB area */
-                       column -= mtd->writesize;
-                       readcmd = NAND_CMD_READOOB;
-               } else if (column < 256) {
-                       /* First 256 bytes --> READ0 */
-                       readcmd = NAND_CMD_READ0;
-               } else {
-                       column -= 256;
-                       readcmd = NAND_CMD_READ1;
-               }
-               WriteDOC(readcmd, docptr, Mplus_FlashCmd);
-       }
-       WriteDOC(command, docptr, Mplus_FlashCmd);
-       WriteDOC(0, docptr, Mplus_WritePipeTerm);
-       WriteDOC(0, docptr, Mplus_WritePipeTerm);
-
-       if (column != -1 || page_addr != -1) {
-               /* Serially input address */
-               if (column != -1) {
-                       /* Adjust columns for 16 bit buswidth */
-                       if (this->options & NAND_BUSWIDTH_16)
-                               column >>= 1;
-                       WriteDOC(column, docptr, Mplus_FlashAddress);
-               }
-               if (page_addr != -1) {
-                       WriteDOC((unsigned char)(page_addr & 0xff), docptr, Mplus_FlashAddress);
-                       WriteDOC((unsigned char)((page_addr >> 8) & 0xff), docptr, Mplus_FlashAddress);
-                       /* One more address cycle for higher density devices */
-                       if (this->chipsize & 0x0c000000) {
-                               WriteDOC((unsigned char)((page_addr >> 16) & 0x0f), docptr, Mplus_FlashAddress);
-                               printk("high density\n");
-                       }
-               }
-               WriteDOC(0, docptr, Mplus_WritePipeTerm);
-               WriteDOC(0, docptr, Mplus_WritePipeTerm);
-               /* deassert ALE */
-               if (command == NAND_CMD_READ0 || command == NAND_CMD_READ1 ||
-                   command == NAND_CMD_READOOB || command == NAND_CMD_READID)
-                       WriteDOC(0, docptr, Mplus_FlashControl);
-       }
-
-       /*
-        * program and erase have their own busy handlers
-        * status and sequential in needs no delay
-        */
-       switch (command) {
-
-       case NAND_CMD_PAGEPROG:
-       case NAND_CMD_ERASE1:
-       case NAND_CMD_ERASE2:
-       case NAND_CMD_SEQIN:
-       case NAND_CMD_STATUS:
-               return;
-
-       case NAND_CMD_RESET:
-               if (this->dev_ready)
-                       break;
-               udelay(this->chip_delay);
-               WriteDOC(NAND_CMD_STATUS, docptr, Mplus_FlashCmd);
-               WriteDOC(0, docptr, Mplus_WritePipeTerm);
-               WriteDOC(0, docptr, Mplus_WritePipeTerm);
-               while (!(this->read_byte(mtd) & 0x40)) ;
-               return;
-
-               /* This applies to read commands */
-       default:
-               /*
-                * If we don't have access to the busy pin, we apply the given
-                * command delay
-                */
-               if (!this->dev_ready) {
-                       udelay(this->chip_delay);
-                       return;
-               }
-       }
-
-       /* Apply this short delay always to ensure that we do wait tWB in
-        * any case on any machine. */
-       ndelay(100);
-       /* wait until command is processed */
-       while (!this->dev_ready(mtd)) ;
-}
-
-static int doc200x_dev_ready(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       if (DoC_is_MillenniumPlus(doc)) {
-               /* 11.4.2 -- must NOP four times before checking FR/B# */
-               DoC_Delay(doc, 4);
-               if ((ReadDOC(docptr, Mplus_FlashControl) & CDSN_CTRL_FR_B_MASK) != CDSN_CTRL_FR_B_MASK) {
-                       if (debug)
-                               printk("not ready\n");
-                       return 0;
-               }
-               if (debug)
-                       printk("was ready\n");
-               return 1;
-       } else {
-               /* 11.4.2 -- must NOP four times before checking FR/B# */
-               DoC_Delay(doc, 4);
-               if (!(ReadDOC(docptr, CDSNControl) & CDSN_CTRL_FR_B)) {
-                       if (debug)
-                               printk("not ready\n");
-                       return 0;
-               }
-               /* 11.4.2 -- Must NOP twice if it's ready */
-               DoC_Delay(doc, 2);
-               if (debug)
-                       printk("was ready\n");
-               return 1;
-       }
-}
-
-static int doc200x_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
-{
-       /* This is our last resort if we couldn't find or create a BBT.  Just
-          pretend all blocks are good. */
-       return 0;
-}
-
-static void doc200x_enable_hwecc(struct mtd_info *mtd, int mode)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       /* Prime the ECC engine */
-       switch (mode) {
-       case NAND_ECC_READ:
-               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
-               WriteDOC(DOC_ECC_EN, docptr, ECCConf);
-               break;
-       case NAND_ECC_WRITE:
-               WriteDOC(DOC_ECC_RESET, docptr, ECCConf);
-               WriteDOC(DOC_ECC_EN | DOC_ECC_RW, docptr, ECCConf);
-               break;
-       }
-}
-
-static void doc2001plus_enable_hwecc(struct mtd_info *mtd, int mode)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-
-       /* Prime the ECC engine */
-       switch (mode) {
-       case NAND_ECC_READ:
-               WriteDOC(DOC_ECC_RESET, docptr, Mplus_ECCConf);
-               WriteDOC(DOC_ECC_EN, docptr, Mplus_ECCConf);
-               break;
-       case NAND_ECC_WRITE:
-               WriteDOC(DOC_ECC_RESET, docptr, Mplus_ECCConf);
-               WriteDOC(DOC_ECC_EN | DOC_ECC_RW, docptr, Mplus_ECCConf);
-               break;
-       }
-}
-
-/* This code is only called on write */
-static int doc200x_calculate_ecc(struct mtd_info *mtd, const u_char *dat, unsigned char *ecc_code)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       int i;
-       int emptymatch = 1;
-
-       /* flush the pipeline */
-       if (DoC_is_2000(doc)) {
-               WriteDOC(doc->CDSNControl & ~CDSN_CTRL_FLASH_IO, docptr, CDSNControl);
-               WriteDOC(0, docptr, 2k_CDSN_IO);
-               WriteDOC(0, docptr, 2k_CDSN_IO);
-               WriteDOC(0, docptr, 2k_CDSN_IO);
-               WriteDOC(doc->CDSNControl, docptr, CDSNControl);
-       } else if (DoC_is_MillenniumPlus(doc)) {
-               WriteDOC(0, docptr, Mplus_NOP);
-               WriteDOC(0, docptr, Mplus_NOP);
-               WriteDOC(0, docptr, Mplus_NOP);
-       } else {
-               WriteDOC(0, docptr, NOP);
-               WriteDOC(0, docptr, NOP);
-               WriteDOC(0, docptr, NOP);
-       }
-
-       for (i = 0; i < 6; i++) {
-               if (DoC_is_MillenniumPlus(doc))
-                       ecc_code[i] = ReadDOC_(docptr, DoC_Mplus_ECCSyndrome0 + i);
-               else
-                       ecc_code[i] = ReadDOC_(docptr, DoC_ECCSyndrome0 + i);
-               if (ecc_code[i] != empty_write_ecc[i])
-                       emptymatch = 0;
-       }
-       if (DoC_is_MillenniumPlus(doc))
-               WriteDOC(DOC_ECC_DIS, docptr, Mplus_ECCConf);
-       else
-               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
-#if 0
-       /* If emptymatch=1, we might have an all-0xff data buffer.  Check. */
-       if (emptymatch) {
-               /* Note: this somewhat expensive test should not be triggered
-                  often.  It could be optimized away by examining the data in
-                  the writebuf routine, and remembering the result. */
-               for (i = 0; i < 512; i++) {
-                       if (dat[i] == 0xff)
-                               continue;
-                       emptymatch = 0;
-                       break;
-               }
-       }
-       /* If emptymatch still =1, we do have an all-0xff data buffer.
-          Return all-0xff ecc value instead of the computed one, so
-          it'll look just like a freshly-erased page. */
-       if (emptymatch)
-               memset(ecc_code, 0xff, 6);
-#endif
-       return 0;
-}
-
-static int doc200x_correct_data(struct mtd_info *mtd, u_char *dat,
-                               u_char *read_ecc, u_char *isnull)
-{
-       int i, ret = 0;
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       void __iomem *docptr = doc->virtadr;
-       uint8_t calc_ecc[6];
-       volatile u_char dummy;
-       int emptymatch = 1;
-
-       /* flush the pipeline */
-       if (DoC_is_2000(doc)) {
-               dummy = ReadDOC(docptr, 2k_ECCStatus);
-               dummy = ReadDOC(docptr, 2k_ECCStatus);
-               dummy = ReadDOC(docptr, 2k_ECCStatus);
-       } else if (DoC_is_MillenniumPlus(doc)) {
-               dummy = ReadDOC(docptr, Mplus_ECCConf);
-               dummy = ReadDOC(docptr, Mplus_ECCConf);
-               dummy = ReadDOC(docptr, Mplus_ECCConf);
-       } else {
-               dummy = ReadDOC(docptr, ECCConf);
-               dummy = ReadDOC(docptr, ECCConf);
-               dummy = ReadDOC(docptr, ECCConf);
-       }
-
-       /* Error occured ? */
-       if (dummy & 0x80) {
-               for (i = 0; i < 6; i++) {
-                       if (DoC_is_MillenniumPlus(doc))
-                               calc_ecc[i] = ReadDOC_(docptr, DoC_Mplus_ECCSyndrome0 + i);
-                       else
-                               calc_ecc[i] = ReadDOC_(docptr, DoC_ECCSyndrome0 + i);
-                       if (calc_ecc[i] != empty_read_syndrome[i])
-                               emptymatch = 0;
-               }
-               /* If emptymatch=1, the read syndrome is consistent with an
-                  all-0xff data and stored ecc block.  Check the stored ecc. */
-               if (emptymatch) {
-                       for (i = 0; i < 6; i++) {
-                               if (read_ecc[i] == 0xff)
-                                       continue;
-                               emptymatch = 0;
-                               break;
-                       }
-               }
-               /* If emptymatch still =1, check the data block. */
-               if (emptymatch) {
-                       /* Note: this somewhat expensive test should not be triggered
-                          often.  It could be optimized away by examining the data in
-                          the readbuf routine, and remembering the result. */
-                       for (i = 0; i < 512; i++) {
-                               if (dat[i] == 0xff)
-                                       continue;
-                               emptymatch = 0;
-                               break;
-                       }
-               }
-               /* If emptymatch still =1, this is almost certainly a freshly-
-                  erased block, in which case the ECC will not come out right.
-                  We'll suppress the error and tell the caller everything's
-                  OK.  Because it is. */
-               if (!emptymatch)
-                       ret = doc_ecc_decode(rs_decoder, dat, calc_ecc);
-               if (ret > 0)
-                       printk(KERN_ERR "doc200x_correct_data corrected %d errors\n", ret);
-       }
-       if (DoC_is_MillenniumPlus(doc))
-               WriteDOC(DOC_ECC_DIS, docptr, Mplus_ECCConf);
-       else
-               WriteDOC(DOC_ECC_DIS, docptr, ECCConf);
-       if (no_ecc_failures && mtd_is_eccerr(ret)) {
-               printk(KERN_ERR "suppressing ECC failure\n");
-               ret = 0;
-       }
-       return ret;
-}
-
-/*u_char mydatabuf[528]; */
-
-/* The strange out-of-order .oobfree list below is a (possibly unneeded)
- * attempt to retain compatibility.  It used to read:
- *     .oobfree = { {8, 8} }
- * Since that leaves two bytes unusable, it was changed.  But the following
- * scheme might affect existing jffs2 installs by moving the cleanmarker:
- *     .oobfree = { {6, 10} }
- * jffs2 seems to handle the above gracefully, but the current scheme seems
- * safer.  The only problem with it is that any code that parses oobfree must
- * be able to handle out-of-order segments.
- */
-static struct nand_ecclayout doc200x_oobinfo = {
-       .eccbytes = 6,
-       .eccpos = {0, 1, 2, 3, 4, 5},
-       .oobfree = {{8, 8}, {6, 2}}
-};
-
-/* Find the (I)NFTL Media Header, and optionally also the mirror media header.
-   On sucessful return, buf will contain a copy of the media header for
-   further processing.  id is the string to scan for, and will presumably be
-   either "ANAND" or "BNAND".  If findmirror=1, also look for the mirror media
-   header.  The page #s of the found media headers are placed in mh0_page and
-   mh1_page in the DOC private structure. */
-static int __init find_media_headers(struct mtd_info *mtd, u_char *buf, const char *id, int findmirror)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       unsigned offs;
-       int ret;
-       size_t retlen;
-
-       for (offs = 0; offs < mtd->size; offs += mtd->erasesize) {
-               ret = mtd_read(mtd, offs, mtd->writesize, &retlen, buf);
-               if (retlen != mtd->writesize)
-                       continue;
-               if (ret) {
-                       printk(KERN_WARNING "ECC error scanning DOC at 0x%x\n", offs);
-               }
-               if (memcmp(buf, id, 6))
-                       continue;
-               printk(KERN_INFO "Found DiskOnChip %s Media Header at 0x%x\n", id, offs);
-               if (doc->mh0_page == -1) {
-                       doc->mh0_page = offs >> this->page_shift;
-                       if (!findmirror)
-                               return 1;
-                       continue;
-               }
-               doc->mh1_page = offs >> this->page_shift;
-               return 2;
-       }
-       if (doc->mh0_page == -1) {
-               printk(KERN_WARNING "DiskOnChip %s Media Header not found.\n", id);
-               return 0;
-       }
-       /* Only one mediaheader was found.  We want buf to contain a
-          mediaheader on return, so we'll have to re-read the one we found. */
-       offs = doc->mh0_page << this->page_shift;
-       ret = mtd_read(mtd, offs, mtd->writesize, &retlen, buf);
-       if (retlen != mtd->writesize) {
-               /* Insanity.  Give up. */
-               printk(KERN_ERR "Read DiskOnChip Media Header once, but can't reread it???\n");
-               return 0;
-       }
-       return 1;
-}
-
-static inline int __init nftl_partscan(struct mtd_info *mtd, struct mtd_partition *parts)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       int ret = 0;
-       u_char *buf;
-       struct NFTLMediaHeader *mh;
-       const unsigned psize = 1 << this->page_shift;
-       int numparts = 0;
-       unsigned blocks, maxblocks;
-       int offs, numheaders;
-
-       buf = kmalloc(mtd->writesize, GFP_KERNEL);
-       if (!buf) {
-               printk(KERN_ERR "DiskOnChip mediaheader kmalloc failed!\n");
-               return 0;
-       }
-       if (!(numheaders = find_media_headers(mtd, buf, "ANAND", 1)))
-               goto out;
-       mh = (struct NFTLMediaHeader *)buf;
-
-       le16_to_cpus(&mh->NumEraseUnits);
-       le16_to_cpus(&mh->FirstPhysicalEUN);
-       le32_to_cpus(&mh->FormattedSize);
-
-       printk(KERN_INFO "    DataOrgID        = %s\n"
-                        "    NumEraseUnits    = %d\n"
-                        "    FirstPhysicalEUN = %d\n"
-                        "    FormattedSize    = %d\n"
-                        "    UnitSizeFactor   = %d\n",
-               mh->DataOrgID, mh->NumEraseUnits,
-               mh->FirstPhysicalEUN, mh->FormattedSize,
-               mh->UnitSizeFactor);
-
-       blocks = mtd->size >> this->phys_erase_shift;
-       maxblocks = min(32768U, mtd->erasesize - psize);
-
-       if (mh->UnitSizeFactor == 0x00) {
-               /* Auto-determine UnitSizeFactor.  The constraints are:
-                  - There can be at most 32768 virtual blocks.
-                  - There can be at most (virtual block size - page size)
-                  virtual blocks (because MediaHeader+BBT must fit in 1).
-                */
-               mh->UnitSizeFactor = 0xff;
-               while (blocks > maxblocks) {
-                       blocks >>= 1;
-                       maxblocks = min(32768U, (maxblocks << 1) + psize);
-                       mh->UnitSizeFactor--;
-               }
-               printk(KERN_WARNING "UnitSizeFactor=0x00 detected.  Correct value is assumed to be 0x%02x.\n", mh->UnitSizeFactor);
-       }
-
-       /* NOTE: The lines below modify internal variables of the NAND and MTD
-          layers; variables with have already been configured by nand_scan.
-          Unfortunately, we didn't know before this point what these values
-          should be.  Thus, this code is somewhat dependant on the exact
-          implementation of the NAND layer.  */
-       if (mh->UnitSizeFactor != 0xff) {
-               this->bbt_erase_shift += (0xff - mh->UnitSizeFactor);
-               mtd->erasesize <<= (0xff - mh->UnitSizeFactor);
-               printk(KERN_INFO "Setting virtual erase size to %d\n", mtd->erasesize);
-               blocks = mtd->size >> this->bbt_erase_shift;
-               maxblocks = min(32768U, mtd->erasesize - psize);
-       }
-
-       if (blocks > maxblocks) {
-               printk(KERN_ERR "UnitSizeFactor of 0x%02x is inconsistent with device size.  Aborting.\n", mh->UnitSizeFactor);
-               goto out;
-       }
-
-       /* Skip past the media headers. */
-       offs = max(doc->mh0_page, doc->mh1_page);
-       offs <<= this->page_shift;
-       offs += mtd->erasesize;
-
-       if (show_firmware_partition == 1) {
-               parts[0].name = " DiskOnChip Firmware / Media Header partition";
-               parts[0].offset = 0;
-               parts[0].size = offs;
-               numparts = 1;
-       }
-
-       parts[numparts].name = " DiskOnChip BDTL partition";
-       parts[numparts].offset = offs;
-       parts[numparts].size = (mh->NumEraseUnits - numheaders) << this->bbt_erase_shift;
-
-       offs += parts[numparts].size;
-       numparts++;
-
-       if (offs < mtd->size) {
-               parts[numparts].name = " DiskOnChip Remainder partition";
-               parts[numparts].offset = offs;
-               parts[numparts].size = mtd->size - offs;
-               numparts++;
-       }
-
-       ret = numparts;
- out:
-       kfree(buf);
-       return ret;
-}
-
-/* This is a stripped-down copy of the code in inftlmount.c */
-static inline int __init inftl_partscan(struct mtd_info *mtd, struct mtd_partition *parts)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       int ret = 0;
-       u_char *buf;
-       struct INFTLMediaHeader *mh;
-       struct INFTLPartition *ip;
-       int numparts = 0;
-       int blocks;
-       int vshift, lastvunit = 0;
-       int i;
-       int end = mtd->size;
-
-       if (inftl_bbt_write)
-               end -= (INFTL_BBT_RESERVED_BLOCKS << this->phys_erase_shift);
-
-       buf = kmalloc(mtd->writesize, GFP_KERNEL);
-       if (!buf) {
-               printk(KERN_ERR "DiskOnChip mediaheader kmalloc failed!\n");
-               return 0;
-       }
-
-       if (!find_media_headers(mtd, buf, "BNAND", 0))
-               goto out;
-       doc->mh1_page = doc->mh0_page + (4096 >> this->page_shift);
-       mh = (struct INFTLMediaHeader *)buf;
-
-       le32_to_cpus(&mh->NoOfBootImageBlocks);
-       le32_to_cpus(&mh->NoOfBinaryPartitions);
-       le32_to_cpus(&mh->NoOfBDTLPartitions);
-       le32_to_cpus(&mh->BlockMultiplierBits);
-       le32_to_cpus(&mh->FormatFlags);
-       le32_to_cpus(&mh->PercentUsed);
-
-       printk(KERN_INFO "    bootRecordID          = %s\n"
-                        "    NoOfBootImageBlocks   = %d\n"
-                        "    NoOfBinaryPartitions  = %d\n"
-                        "    NoOfBDTLPartitions    = %d\n"
-                        "    BlockMultiplerBits    = %d\n"
-                        "    FormatFlgs            = %d\n"
-                        "    OsakVersion           = %d.%d.%d.%d\n"
-                        "    PercentUsed           = %d\n",
-               mh->bootRecordID, mh->NoOfBootImageBlocks,
-               mh->NoOfBinaryPartitions,
-               mh->NoOfBDTLPartitions,
-               mh->BlockMultiplierBits, mh->FormatFlags,
-               ((unsigned char *) &mh->OsakVersion)[0] & 0xf,
-               ((unsigned char *) &mh->OsakVersion)[1] & 0xf,
-               ((unsigned char *) &mh->OsakVersion)[2] & 0xf,
-               ((unsigned char *) &mh->OsakVersion)[3] & 0xf,
-               mh->PercentUsed);
-
-       vshift = this->phys_erase_shift + mh->BlockMultiplierBits;
-
-       blocks = mtd->size >> vshift;
-       if (blocks > 32768) {
-               printk(KERN_ERR "BlockMultiplierBits=%d is inconsistent with device size.  Aborting.\n", mh->BlockMultiplierBits);
-               goto out;
-       }
-
-       blocks = doc->chips_per_floor << (this->chip_shift - this->phys_erase_shift);
-       if (inftl_bbt_write && (blocks > mtd->erasesize)) {
-               printk(KERN_ERR "Writeable BBTs spanning more than one erase block are not yet supported.  FIX ME!\n");
-               goto out;
-       }
-
-       /* Scan the partitions */
-       for (i = 0; (i < 4); i++) {
-               ip = &(mh->Partitions[i]);
-               le32_to_cpus(&ip->virtualUnits);
-               le32_to_cpus(&ip->firstUnit);
-               le32_to_cpus(&ip->lastUnit);
-               le32_to_cpus(&ip->flags);
-               le32_to_cpus(&ip->spareUnits);
-               le32_to_cpus(&ip->Reserved0);
-
-               printk(KERN_INFO        "    PARTITION[%d] ->\n"
-                       "        virtualUnits    = %d\n"
-                       "        firstUnit       = %d\n"
-                       "        lastUnit        = %d\n"
-                       "        flags           = 0x%x\n"
-                       "        spareUnits      = %d\n",
-                       i, ip->virtualUnits, ip->firstUnit,
-                       ip->lastUnit, ip->flags,
-                       ip->spareUnits);
-
-               if ((show_firmware_partition == 1) &&
-                   (i == 0) && (ip->firstUnit > 0)) {
-                       parts[0].name = " DiskOnChip IPL / Media Header partition";
-                       parts[0].offset = 0;
-                       parts[0].size = mtd->erasesize * ip->firstUnit;
-                       numparts = 1;
-               }
-
-               if (ip->flags & INFTL_BINARY)
-                       parts[numparts].name = " DiskOnChip BDK partition";
-               else
-                       parts[numparts].name = " DiskOnChip BDTL partition";
-               parts[numparts].offset = ip->firstUnit << vshift;
-               parts[numparts].size = (1 + ip->lastUnit - ip->firstUnit) << vshift;
-               numparts++;
-               if (ip->lastUnit > lastvunit)
-                       lastvunit = ip->lastUnit;
-               if (ip->flags & INFTL_LAST)
-                       break;
-       }
-       lastvunit++;
-       if ((lastvunit << vshift) < end) {
-               parts[numparts].name = " DiskOnChip Remainder partition";
-               parts[numparts].offset = lastvunit << vshift;
-               parts[numparts].size = end - parts[numparts].offset;
-               numparts++;
-       }
-       ret = numparts;
- out:
-       kfree(buf);
-       return ret;
-}
-
-static int __init nftl_scan_bbt(struct mtd_info *mtd)
-{
-       int ret, numparts;
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       struct mtd_partition parts[2];
-
-       memset((char *)parts, 0, sizeof(parts));
-       /* On NFTL, we have to find the media headers before we can read the
-          BBTs, since they're stored in the media header eraseblocks. */
-       numparts = nftl_partscan(mtd, parts);
-       if (!numparts)
-               return -EIO;
-       this->bbt_td->options = NAND_BBT_ABSPAGE | NAND_BBT_8BIT |
-                               NAND_BBT_SAVECONTENT | NAND_BBT_WRITE |
-                               NAND_BBT_VERSION;
-       this->bbt_td->veroffs = 7;
-       this->bbt_td->pages[0] = doc->mh0_page + 1;
-       if (doc->mh1_page != -1) {
-               this->bbt_md->options = NAND_BBT_ABSPAGE | NAND_BBT_8BIT |
-                                       NAND_BBT_SAVECONTENT | NAND_BBT_WRITE |
-                                       NAND_BBT_VERSION;
-               this->bbt_md->veroffs = 7;
-               this->bbt_md->pages[0] = doc->mh1_page + 1;
-       } else {
-               this->bbt_md = NULL;
-       }
-
-       /* It's safe to set bd=NULL below because NAND_BBT_CREATE is not set.
-          At least as nand_bbt.c is currently written. */
-       if ((ret = nand_scan_bbt(mtd, NULL)))
-               return ret;
-       add_mtd_device(mtd);
-#ifdef CONFIG_MTD_PARTITIONS
-       if (!no_autopart)
-               add_mtd_partitions(mtd, parts, numparts);
-#endif
-       return 0;
-}
-
-static int __init inftl_scan_bbt(struct mtd_info *mtd)
-{
-       int ret, numparts;
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-       struct mtd_partition parts[5];
-
-       if (this->numchips > doc->chips_per_floor) {
-               printk(KERN_ERR "Multi-floor INFTL devices not yet supported.\n");
-               return -EIO;
-       }
-
-       if (DoC_is_MillenniumPlus(doc)) {
-               this->bbt_td->options = NAND_BBT_2BIT | NAND_BBT_ABSPAGE;
-               if (inftl_bbt_write)
-                       this->bbt_td->options |= NAND_BBT_WRITE;
-               this->bbt_td->pages[0] = 2;
-               this->bbt_md = NULL;
-       } else {
-               this->bbt_td->options = NAND_BBT_LASTBLOCK | NAND_BBT_8BIT | NAND_BBT_VERSION;
-               if (inftl_bbt_write)
-                       this->bbt_td->options |= NAND_BBT_WRITE;
-               this->bbt_td->offs = 8;
-               this->bbt_td->len = 8;
-               this->bbt_td->veroffs = 7;
-               this->bbt_td->maxblocks = INFTL_BBT_RESERVED_BLOCKS;
-               this->bbt_td->reserved_block_code = 0x01;
-               this->bbt_td->pattern = "MSYS_BBT";
-
-               this->bbt_md->options = NAND_BBT_LASTBLOCK | NAND_BBT_8BIT | NAND_BBT_VERSION;
-               if (inftl_bbt_write)
-                       this->bbt_md->options |= NAND_BBT_WRITE;
-               this->bbt_md->offs = 8;
-               this->bbt_md->len = 8;
-               this->bbt_md->veroffs = 7;
-               this->bbt_md->maxblocks = INFTL_BBT_RESERVED_BLOCKS;
-               this->bbt_md->reserved_block_code = 0x01;
-               this->bbt_md->pattern = "TBB_SYSM";
-       }
-
-       /* It's safe to set bd=NULL below because NAND_BBT_CREATE is not set.
-          At least as nand_bbt.c is currently written. */
-       if ((ret = nand_scan_bbt(mtd, NULL)))
-               return ret;
-       memset((char *)parts, 0, sizeof(parts));
-       numparts = inftl_partscan(mtd, parts);
-       /* At least for now, require the INFTL Media Header.  We could probably
-          do without it for non-INFTL use, since all it gives us is
-          autopartitioning, but I want to give it more thought. */
-       if (!numparts)
-               return -EIO;
-       add_mtd_device(mtd);
-#ifdef CONFIG_MTD_PARTITIONS
-       if (!no_autopart)
-               add_mtd_partitions(mtd, parts, numparts);
-#endif
-       return 0;
-}
-
-static inline int __init doc2000_init(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-
-       this->read_byte = doc2000_read_byte;
-       this->write_buf = doc2000_writebuf;
-       this->read_buf = doc2000_readbuf;
-       this->verify_buf = doc2000_verifybuf;
-       this->scan_bbt = nftl_scan_bbt;
-
-       doc->CDSNControl = CDSN_CTRL_FLASH_IO | CDSN_CTRL_ECC_IO;
-       doc2000_count_chips(mtd);
-       mtd->name = "DiskOnChip 2000 (NFTL Model)";
-       return (4 * doc->chips_per_floor);
-}
-
-static inline int __init doc2001_init(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-
-       this->read_byte = doc2001_read_byte;
-       this->write_buf = doc2001_writebuf;
-       this->read_buf = doc2001_readbuf;
-       this->verify_buf = doc2001_verifybuf;
-
-       ReadDOC(doc->virtadr, ChipID);
-       ReadDOC(doc->virtadr, ChipID);
-       ReadDOC(doc->virtadr, ChipID);
-       if (ReadDOC(doc->virtadr, ChipID) != DOC_ChipID_DocMil) {
-               /* It's not a Millennium; it's one of the newer
-                  DiskOnChip 2000 units with a similar ASIC.
-                  Treat it like a Millennium, except that it
-                  can have multiple chips. */
-               doc2000_count_chips(mtd);
-               mtd->name = "DiskOnChip 2000 (INFTL Model)";
-               this->scan_bbt = inftl_scan_bbt;
-               return (4 * doc->chips_per_floor);
-       } else {
-               /* Bog-standard Millennium */
-               doc->chips_per_floor = 1;
-               mtd->name = "DiskOnChip Millennium";
-               this->scan_bbt = nftl_scan_bbt;
-               return 1;
-       }
-}
-
-static inline int __init doc2001plus_init(struct mtd_info *mtd)
-{
-       struct nand_chip *this = mtd->priv;
-       struct doc_priv *doc = this->priv;
-
-       this->read_byte = doc2001plus_read_byte;
-       this->write_buf = doc2001plus_writebuf;
-       this->read_buf = doc2001plus_readbuf;
-       this->verify_buf = doc2001plus_verifybuf;
-       this->scan_bbt = inftl_scan_bbt;
-       this->cmd_ctrl = NULL;
-       this->select_chip = doc2001plus_select_chip;
-       this->cmdfunc = doc2001plus_command;
-       this->ecc.hwctl = doc2001plus_enable_hwecc;
-
-       doc->chips_per_floor = 1;
-       mtd->name = "DiskOnChip Millennium Plus";
-
-       return 1;
-}
-
-static int __init doc_probe(unsigned long physadr)
-{
-       unsigned char ChipID;
-       struct mtd_info *mtd;
-       struct nand_chip *nand;
-       struct doc_priv *doc;
-       void __iomem *virtadr;
-       unsigned char save_control;
-       unsigned char tmp, tmpb, tmpc;
-       int reg, len, numchips;
-       int ret = 0;
-
-       virtadr = ioremap(physadr, DOC_IOREMAP_LEN);
-       if (!virtadr) {
-               printk(KERN_ERR "Diskonchip ioremap failed: 0x%x bytes at 0x%lx\n", DOC_IOREMAP_LEN, physadr);
-               return -EIO;
-       }
-
-       /* It's not possible to cleanly detect the DiskOnChip - the
-        * bootup procedure will put the device into reset mode, and
-        * it's not possible to talk to it without actually writing
-        * to the DOCControl register. So we store the current contents
-        * of the DOCControl register's location, in case we later decide
-        * that it's not a DiskOnChip, and want to put it back how we
-        * found it.
-        */
-       save_control = ReadDOC(virtadr, DOCControl);
-
-       /* Reset the DiskOnChip ASIC */
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_RESET, virtadr, DOCControl);
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_RESET, virtadr, DOCControl);
-
-       /* Enable the DiskOnChip ASIC */
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_NORMAL, virtadr, DOCControl);
-       WriteDOC(DOC_MODE_CLR_ERR | DOC_MODE_MDWREN | DOC_MODE_NORMAL, virtadr, DOCControl);
-
-       ChipID = ReadDOC(virtadr, ChipID);
-
-       switch (ChipID) {
-       case DOC_ChipID_Doc2k:
-               reg = DoC_2k_ECCStatus;
-               break;
-       case DOC_ChipID_DocMil:
-               reg = DoC_ECCConf;
-               break;
-       case DOC_ChipID_DocMilPlus16:
-       case DOC_ChipID_DocMilPlus32:
-       case 0:
-               /* Possible Millennium Plus, need to do more checks */
-               /* Possibly release from power down mode */
-               for (tmp = 0; (tmp < 4); tmp++)
-                       ReadDOC(virtadr, Mplus_Power);
-
-               /* Reset the Millennium Plus ASIC */
-               tmp = DOC_MODE_RESET | DOC_MODE_MDWREN | DOC_MODE_RST_LAT | DOC_MODE_BDECT;
-               WriteDOC(tmp, virtadr, Mplus_DOCControl);
-               WriteDOC(~tmp, virtadr, Mplus_CtrlConfirm);
-
-               mdelay(1);
-               /* Enable the Millennium Plus ASIC */
-               tmp = DOC_MODE_NORMAL | DOC_MODE_MDWREN | DOC_MODE_RST_LAT | DOC_MODE_BDECT;
-               WriteDOC(tmp, virtadr, Mplus_DOCControl);
-               WriteDOC(~tmp, virtadr, Mplus_CtrlConfirm);
-               mdelay(1);
-
-               ChipID = ReadDOC(virtadr, ChipID);
-
-               switch (ChipID) {
-               case DOC_ChipID_DocMilPlus16:
-                       reg = DoC_Mplus_Toggle;
-                       break;
-               case DOC_ChipID_DocMilPlus32:
-                       printk(KERN_ERR "DiskOnChip Millennium Plus 32MB is not supported, ignoring.\n");
-               default:
-                       ret = -ENODEV;
-                       goto notfound;
-               }
-               break;
-
-       default:
-               ret = -ENODEV;
-               goto notfound;
-       }
-       /* Check the TOGGLE bit in the ECC register */
-       tmp = ReadDOC_(virtadr, reg) & DOC_TOGGLE_BIT;
-       tmpb = ReadDOC_(virtadr, reg) & DOC_TOGGLE_BIT;
-       tmpc = ReadDOC_(virtadr, reg) & DOC_TOGGLE_BIT;
-       if ((tmp == tmpb) || (tmp != tmpc)) {
-               printk(KERN_WARNING "Possible DiskOnChip at 0x%lx failed TOGGLE test, dropping.\n", physadr);
-               ret = -ENODEV;
-               goto notfound;
-       }
-
-       for (mtd = doclist; mtd; mtd = doc->nextdoc) {
-               unsigned char oldval;
-               unsigned char newval;
-               nand = mtd->priv;
-               doc = nand->priv;
-               /* Use the alias resolution register to determine if this is
-                  in fact the same DOC aliased to a new address.  If writes
-                  to one chip's alias resolution register change the value on
-                  the other chip, they're the same chip. */
-               if (ChipID == DOC_ChipID_DocMilPlus16) {
-                       oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution);
-                       newval = ReadDOC(virtadr, Mplus_AliasResolution);
-               } else {
-                       oldval = ReadDOC(doc->virtadr, AliasResolution);
-                       newval = ReadDOC(virtadr, AliasResolution);
-               }
-               if (oldval != newval)
-                       continue;
-               if (ChipID == DOC_ChipID_DocMilPlus16) {
-                       WriteDOC(~newval, virtadr, Mplus_AliasResolution);
-                       oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution);
-                       WriteDOC(newval, virtadr, Mplus_AliasResolution);       /* restore it */
-               } else {
-                       WriteDOC(~newval, virtadr, AliasResolution);
-                       oldval = ReadDOC(doc->virtadr, AliasResolution);
-                       WriteDOC(newval, virtadr, AliasResolution);     /* restore it */
-               }
-               newval = ~newval;
-               if (oldval == newval) {
-                       printk(KERN_DEBUG "Found alias of DOC at 0x%lx to 0x%lx\n", doc->physadr, physadr);
-                       goto notfound;
-               }
-       }
-
-       printk(KERN_NOTICE "DiskOnChip found at 0x%lx\n", physadr);
-
-       len = sizeof(struct mtd_info) +
-           sizeof(struct nand_chip) + sizeof(struct doc_priv) + (2 * sizeof(struct nand_bbt_descr));
-       mtd = kzalloc(len, GFP_KERNEL);
-       if (!mtd) {
-               printk(KERN_ERR "DiskOnChip kmalloc (%d bytes) failed!\n", len);
-               ret = -ENOMEM;
-               goto fail;
-       }
-
-       nand                    = (struct nand_chip *) (mtd + 1);
-       doc                     = (struct doc_priv *) (nand + 1);
-       nand->bbt_td            = (struct nand_bbt_descr *) (doc + 1);
-       nand->bbt_md            = nand->bbt_td + 1;
-
-       mtd->priv               = nand;
-       mtd->owner              = THIS_MODULE;
-
-       nand->priv              = doc;
-       nand->select_chip       = doc200x_select_chip;
-       nand->cmd_ctrl          = doc200x_hwcontrol;
-       nand->dev_ready         = doc200x_dev_ready;
-       nand->waitfunc          = doc200x_wait;
-       nand->block_bad         = doc200x_block_bad;
-       nand->ecc.hwctl         = doc200x_enable_hwecc;
-       nand->ecc.calculate     = doc200x_calculate_ecc;
-       nand->ecc.correct       = doc200x_correct_data;
-
-       nand->ecc.layout        = &doc200x_oobinfo;
-       nand->ecc.mode          = NAND_ECC_HW_SYNDROME;
-       nand->ecc.size          = 512;
-       nand->ecc.bytes         = 6;
-       nand->ecc.strength      = 2;
-       nand->bbt_options       = NAND_BBT_USE_FLASH;
-
-       doc->physadr            = physadr;
-       doc->virtadr            = virtadr;
-       doc->ChipID             = ChipID;
-       doc->curfloor           = -1;
-       doc->curchip            = -1;
-       doc->mh0_page           = -1;
-       doc->mh1_page           = -1;
-       doc->nextdoc            = doclist;
-
-       if (ChipID == DOC_ChipID_Doc2k)
-               numchips = doc2000_init(mtd);
-       else if (ChipID == DOC_ChipID_DocMilPlus16)
-               numchips = doc2001plus_init(mtd);
-       else
-               numchips = doc2001_init(mtd);
-
-       if ((ret = nand_scan(mtd, numchips))) {
-               /* DBB note: i believe nand_release is necessary here, as
-                  buffers may have been allocated in nand_base.  Check with
-                  Thomas. FIX ME! */
-               /* nand_release will call del_mtd_device, but we haven't yet
-                  added it.  This is handled without incident by
-                  del_mtd_device, as far as I can tell. */
-               nand_release(mtd);
-               kfree(mtd);
-               goto fail;
-       }
-
-       /* Success! */
-       doclist = mtd;
-       return 0;
-
- notfound:
-       /* Put back the contents of the DOCControl register, in case it's not
-          actually a DiskOnChip.  */
-       WriteDOC(save_control, virtadr, DOCControl);
- fail:
-       iounmap(virtadr);
-       return ret;
-}
-
-static void release_nanddoc(void)
-{
-       struct mtd_info *mtd, *nextmtd;
-       struct nand_chip *nand;
-       struct doc_priv *doc;
-
-       for (mtd = doclist; mtd; mtd = nextmtd) {
-               nand = mtd->priv;
-               doc = nand->priv;
-
-               nextmtd = doc->nextdoc;
-               nand_release(mtd);
-               iounmap(doc->virtadr);
-               kfree(mtd);
-       }
-}
-
-static int __init init_nanddoc(void)
-{
-       int i, ret = 0;
-
-       /* We could create the decoder on demand, if memory is a concern.
-        * This way we have it handy, if an error happens
-        *
-        * Symbolsize is 10 (bits)
-        * Primitve polynomial is x^10+x^3+1
-        * first consecutive root is 510
-        * primitve element to generate roots = 1
-        * generator polinomial degree = 4
-        */
-       rs_decoder = init_rs(10, 0x409, FCR, 1, NROOTS);
-       if (!rs_decoder) {
-               printk(KERN_ERR "DiskOnChip: Could not create a RS decoder\n");
-               return -ENOMEM;
-       }
-
-       if (doc_config_location) {
-               printk(KERN_INFO "Using configured DiskOnChip probe address 0x%lx\n", doc_config_location);
-               ret = doc_probe(doc_config_location);
-               if (ret < 0)
-                       goto outerr;
-       } else {
-               for (i = 0; (doc_locations[i] != 0xffffffff); i++) {
-                       doc_probe(doc_locations[i]);
-               }
-       }
-       /* No banner message any more. Print a message if no DiskOnChip
-          found, so the user knows we at least tried. */
-       if (!doclist) {
-               printk(KERN_INFO "No valid DiskOnChip devices found\n");
-               ret = -ENODEV;
-               goto outerr;
-       }
-       return 0;
- outerr:
-       free_rs(rs_decoder);
-       return ret;
-}
-
-static void __exit cleanup_nanddoc(void)
-{
-       /* Cleanup the nand/DoC resources */
-       release_nanddoc();
-
-       /* Free the reed solomon resources */
-       if (rs_decoder) {
-               free_rs(rs_decoder);
-       }
-}
-
-module_init(init_nanddoc);
-module_exit(cleanup_nanddoc);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
-MODULE_DESCRIPTION("M-Systems DiskOnChip 2000, Millennium and Millennium Plus device driver\n");
index 2f82f7c5c61cc0fef72969408c79e4eec8a863a7..510077282cd15996f099aa47d627c63eb0a1d6ad 100644 (file)
@@ -88,11 +88,7 @@ static inline int bad_block(uchar *marker, int port_size)
                return __raw_readw((u16 *)marker) != 0xffff;
 }
 
-#ifdef CONFIG_TPL_BUILD
 int nand_spl_load_image(uint32_t offs, unsigned int uboot_size, void *vdst)
-#else
-static int nand_load(uint32_t offs, unsigned int uboot_size, void *vdst)
-#endif
 {
        struct fsl_ifc *ifc = IFC_BASE_ADDR;
        uchar *buf = (uchar *)CONFIG_SYS_NAND_BASE;
@@ -217,15 +213,6 @@ static int nand_load(uint32_t offs, unsigned int uboot_size, void *vdst)
        return 0;
 }
 
-/*
- * Defines a static function nand_load_image() here, because non-static makes
- * the code too large for certain SPLs(minimal SPL, maximum size <= 4Kbytes)
- */
-#ifndef CONFIG_TPL_BUILD
-#define nand_spl_load_image(offs, uboot_size, vdst) \
-       nand_load(offs, uboot_size, vdst)
-#endif
-
 /*
  * Main entrypoint for NAND Boot. It's necessary that SDRAM is already
  * configured and available since this code loads the main U-boot image
index e5ac79b9520db5e975575229e74266015f099997..b915469b404adb44adecabaa5ae21b6effb8d238 100644 (file)
 #define ESPI_BOOT_IMAGE_ADDR   0x50
 #define CONFIG_CFG_DATA_SECTOR 0
 
+void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst)
+{
+       struct spi_flash *flash;
+
+       flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+                       CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
+       if (flash == NULL) {
+               puts("\nspi_flash_probe failed");
+               hang();
+       }
+
+       spi_flash_read(flash, offs, size, vdst);
+}
+
 /*
  * The main entry for SPI booting. It's necessary that SDRAM is already
  * configured and available since this code loads the main U-Boot image
 void spi_boot(void)
 {
        void (*uboot)(void) __noreturn;
-       u32 offset, code_len;
+       u32 offset, code_len, copy_len = 0;
+#ifndef CONFIG_FSL_CORENET
        unsigned char *buf = NULL;
+#endif
        struct spi_flash *flash;
 
        flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
@@ -56,8 +72,15 @@ void spi_boot(void)
        code_len = code_len - CONFIG_SPL_MAX_SIZE;
 #endif
        /* copy code to DDR */
-       spi_flash_read(flash, offset, code_len,
-                      (void *)CONFIG_SYS_SPI_FLASH_U_BOOT_DST);
+       printf("Loading second stage boot loader ");
+       while (copy_len <= code_len) {
+               spi_flash_read(flash, offset + copy_len, 0x2000,
+                              (void *)(CONFIG_SYS_SPI_FLASH_U_BOOT_DST
+                              + copy_len));
+               copy_len = copy_len + 0x2000;
+               putc('.');
+       }
+
        /*
        * Jump to U-Boot image
        */
index 9a66e68ae0debb57373d611d8314646123a11e99..9d9b259d644af00b61bb838a31d6ea91c4a25f0e 100644 (file)
@@ -4532,7 +4532,6 @@ static int e1000_set_phy_type (struct e1000_hw *hw)
                        hw->mac_type == e1000_82547 ||
                        hw->mac_type == e1000_82547_rev_2) {
                        hw->phy_type = e1000_phy_igp;
-                       hw->phy_type = e1000_phy_igp;
                        break;
                }
        case IGP03E1000_E_PHY_ID:
index bca20b3330361690e1aed72d7386b5a6ae3b24a5..400e9dd5e24902bc8ce8bdf2cdecbd9fc8dcc855 100644 (file)
@@ -350,16 +350,16 @@ int fm_init_common(int index, struct ccsr_fman *reg)
 {
        int rc;
 #if defined(CONFIG_SYS_QE_FMAN_FW_IN_NOR)
-       void *addr = (void *)CONFIG_SYS_QE_FMAN_FW_ADDR;
+       void *addr = (void *)CONFIG_SYS_FMAN_FW_ADDR;
 #elif defined(CONFIG_SYS_QE_FMAN_FW_IN_NAND)
        size_t fw_length = CONFIG_SYS_QE_FMAN_FW_LENGTH;
        void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
 
-       rc = nand_read(&nand_info[0], (loff_t)CONFIG_SYS_QE_FMAN_FW_ADDR,
+       rc = nand_read(&nand_info[0], (loff_t)CONFIG_SYS_FMAN_FW_ADDR,
                       &fw_length, (u_char *)addr);
        if (rc == -EUCLEAN) {
                printf("NAND read of FMAN firmware at offset 0x%x failed %d\n",
-                       CONFIG_SYS_QE_FMAN_FW_ADDR, rc);
+                       CONFIG_SYS_FMAN_FW_ADDR, rc);
        }
 #elif defined(CONFIG_SYS_QE_FW_IN_SPIFLASH)
        struct spi_flash *ucode_flash;
@@ -371,7 +371,7 @@ int fm_init_common(int index, struct ccsr_fman *reg)
        if (!ucode_flash)
                printf("SF: probe for ucode failed\n");
        else {
-               ret = spi_flash_read(ucode_flash, CONFIG_SYS_QE_FMAN_FW_ADDR,
+               ret = spi_flash_read(ucode_flash, CONFIG_SYS_FMAN_FW_ADDR,
                                CONFIG_SYS_QE_FMAN_FW_LENGTH, addr);
                if (ret)
                        printf("SF: read for ucode failed\n");
@@ -381,7 +381,7 @@ int fm_init_common(int index, struct ccsr_fman *reg)
        int dev = CONFIG_SYS_MMC_ENV_DEV;
        void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
        u32 cnt = CONFIG_SYS_QE_FMAN_FW_LENGTH / 512;
-       u32 blk = CONFIG_SYS_QE_FMAN_FW_ADDR / 512;
+       u32 blk = CONFIG_SYS_FMAN_FW_ADDR / 512;
        struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
 
        if (!mmc)
@@ -395,7 +395,7 @@ int fm_init_common(int index, struct ccsr_fman *reg)
                flush_cache((ulong)addr, cnt * 512);
        }
 #elif defined(CONFIG_SYS_QE_FMAN_FW_IN_REMOTE)
-       void *addr = (void *)CONFIG_SYS_QE_FMAN_FW_ADDR;
+       void *addr = (void *)CONFIG_SYS_FMAN_FW_ADDR;
 #else
        void *addr = NULL;
 #endif
index 140e59b75c45696b56c14d16b603afbc98178539..2f4bc11a6c294e6b1912e5ef12970f26d00cdb06 100644 (file)
@@ -133,5 +133,17 @@ int fm_memac_mdio_init(bd_t *bis, struct memac_mdio_info *info)
 
        bus->priv = info->regs;
 
+       /*
+        * On some platforms like B4860, default value of MDIO_CLK_DIV bits
+        * in mdio_stat(mdio_cfg) register generates MDIO clock too high
+        * (much higher than 2.5MHz), violating the IEEE specs.
+        * On other platforms like T1040, default value of MDIO_CLK_DIV bits
+        * is zero, so MDIO clock is disabled.
+        * So, for proper functioning of MDIO, MDIO_CLK_DIV bits needs to
+        * be properly initialized.
+        */
+       setbits_be32(&((struct memac_mdio_controller *)info->regs)->mdio_stat,
+                    MDIO_STAT_CLKDIV(258));
+
        return mdio_register(bus);
 }
diff --git a/drivers/net/inca-ip_sw.c b/drivers/net/inca-ip_sw.c
deleted file mode 100644 (file)
index cdfbfa6..0000000
+++ /dev/null
@@ -1,793 +0,0 @@
-/*
- * INCA-IP internal switch ethernet driver.
- *
- * (C) Copyright 2003-2004
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-
-#include <malloc.h>
-#include <net.h>
-#include <netdev.h>
-#include <asm/inca-ip.h>
-#include <asm/addrspace.h>
-
-
-#define NUM_RX_DESC    PKTBUFSRX
-#define NUM_TX_DESC    3
-#define TOUT_LOOP      1000000
-
-
-#define DELAY  udelay(10000)
-  /* Sometimes the store word instruction hangs while writing to one
-   * of the Switch registers. Moving the instruction into a separate
-   * function somehow makes the problem go away.
-   */
-static void SWORD(volatile u32 * reg, u32 value)
-{
-       *reg = value;
-}
-
-#define DMA_WRITE_REG(reg, value) *((volatile u32 *)reg) = (u32)value;
-#define DMA_READ_REG(reg, value)    value = (u32)*((volatile u32*)reg)
-#define SW_WRITE_REG(reg, value)   \
-       SWORD(reg, value);\
-       DELAY;\
-       SWORD(reg, value);
-
-#define SW_READ_REG(reg, value)           \
-       value = (u32)*((volatile u32*)reg);\
-       DELAY;\
-       value = (u32)*((volatile u32*)reg);
-
-#define INCA_DMA_TX_POLLING_TIME       0x07
-#define INCA_DMA_RX_POLLING_TIME       0x07
-
-#define INCA_DMA_TX_HOLD               0x80000000
-#define INCA_DMA_TX_EOP                        0x40000000
-#define INCA_DMA_TX_SOP                        0x20000000
-#define INCA_DMA_TX_ICPT               0x10000000
-#define INCA_DMA_TX_IEOP               0x08000000
-
-#define INCA_DMA_RX_C                  0x80000000
-#define INCA_DMA_RX_SOP                        0x40000000
-#define INCA_DMA_RX_EOP                        0x20000000
-
-#define INCA_SWITCH_PHY_SPEED_10H      0x1
-#define INCA_SWITCH_PHY_SPEED_10F      0x5
-#define INCA_SWITCH_PHY_SPEED_100H     0x2
-#define INCA_SWITCH_PHY_SPEED_100F     0x6
-
-/************************ Auto MDIX settings ************************/
-#define INCA_IP_AUTO_MDIX_LAN_PORTS_DIR                INCA_IP_Ports_P1_DIR
-#define INCA_IP_AUTO_MDIX_LAN_PORTS_ALTSEL     INCA_IP_Ports_P1_ALTSEL
-#define INCA_IP_AUTO_MDIX_LAN_PORTS_OUT                INCA_IP_Ports_P1_OUT
-#define INCA_IP_AUTO_MDIX_LAN_GPIO_PIN_RXTX    16
-
-#define WAIT_SIGNAL_RETRIES                    100
-#define WAIT_LINK_RETRIES                      100
-#define LINK_RETRY_DELAY                       2000  /* ms */
-/********************************************************************/
-
-typedef struct
-{
-       union {
-               struct {
-                       volatile u32 HOLD               :1;
-                       volatile u32 ICpt               :1;
-                       volatile u32 IEop               :1;
-                       volatile u32 offset             :3;
-                       volatile u32 reserved0          :4;
-                       volatile u32 NFB                :22;
-               }field;
-
-               volatile u32 word;
-       }params;
-
-       volatile u32 nextRxDescPtr;
-
-       volatile u32 RxDataPtr;
-
-       union {
-               struct {
-                       volatile u32 C                  :1;
-                       volatile u32 Sop                :1;
-                       volatile u32 Eop                :1;
-                       volatile u32 reserved3          :12;
-                       volatile u32 NBT                :17;
-               }field;
-
-               volatile u32 word;
-       }status;
-
-} inca_rx_descriptor_t;
-
-
-typedef struct
-{
-       union {
-               struct {
-                       volatile u32 HOLD               :1;
-                       volatile u32 Eop                :1;
-                       volatile u32 Sop                :1;
-                       volatile u32 ICpt               :1;
-                       volatile u32 IEop               :1;
-                       volatile u32 reserved0          :5;
-                       volatile u32 NBA                :22;
-               }field;
-
-               volatile u32 word;
-       }params;
-
-       volatile u32 nextTxDescPtr;
-
-       volatile u32 TxDataPtr;
-
-       volatile u32 C                  :1;
-       volatile u32 reserved3          :31;
-
-} inca_tx_descriptor_t;
-
-
-static inca_rx_descriptor_t rx_ring[NUM_RX_DESC] __attribute__ ((aligned(16)));
-static inca_tx_descriptor_t tx_ring[NUM_TX_DESC] __attribute__ ((aligned(16)));
-
-static int tx_new, rx_new, tx_hold, rx_hold;
-static int tx_old_hold = -1;
-static int initialized = 0;
-
-
-static int inca_switch_init(struct eth_device *dev, bd_t * bis);
-static int inca_switch_send(struct eth_device *dev, void *packet, int length);
-static int inca_switch_recv(struct eth_device *dev);
-static void inca_switch_halt(struct eth_device *dev);
-static void inca_init_switch_chip(void);
-static void inca_dma_init(void);
-static int inca_amdix(void);
-
-
-int inca_switch_initialize(bd_t * bis)
-{
-       struct eth_device *dev;
-
-#if 0
-       printf("Entered inca_switch_initialize()\n");
-#endif
-
-       if (!(dev = (struct eth_device *) malloc (sizeof *dev))) {
-               printf("Failed to allocate memory\n");
-               return 0;
-       }
-       memset(dev, 0, sizeof(*dev));
-
-       inca_dma_init();
-
-       inca_init_switch_chip();
-
-#if defined(CONFIG_INCA_IP_SWITCH_AMDIX)
-       inca_amdix();
-#endif
-
-       sprintf(dev->name, "INCA-IP Switch");
-       dev->init = inca_switch_init;
-       dev->halt = inca_switch_halt;
-       dev->send = inca_switch_send;
-       dev->recv = inca_switch_recv;
-
-       eth_register(dev);
-
-#if 0
-       printf("Leaving inca_switch_initialize()\n");
-#endif
-
-       return 0;
-}
-
-
-static int inca_switch_init(struct eth_device *dev, bd_t * bis)
-{
-       int i;
-       u32 v, regValue;
-       u16 wTmp;
-
-#if 0
-       printf("Entering inca_switch_init()\n");
-#endif
-
-       /* Set MAC address.
-        */
-       wTmp = (u16)dev->enetaddr[0];
-       regValue = (wTmp << 8) | dev->enetaddr[1];
-
-       SW_WRITE_REG(INCA_IP_Switch_PMAC_SA1, regValue);
-
-       wTmp = (u16)dev->enetaddr[2];
-       regValue = (wTmp << 8) | dev->enetaddr[3];
-       regValue = regValue << 16;
-       wTmp = (u16)dev->enetaddr[4];
-       regValue |= (wTmp<<8) | dev->enetaddr[5];
-
-       SW_WRITE_REG(INCA_IP_Switch_PMAC_SA2, regValue);
-
-       /* Initialize the descriptor rings.
-        */
-       for (i = 0; i < NUM_RX_DESC; i++) {
-               inca_rx_descriptor_t * rx_desc = (inca_rx_descriptor_t *)CKSEG1ADDR(&rx_ring[i]);
-               memset(rx_desc, 0, sizeof(rx_ring[i]));
-
-               /* Set maximum size of receive buffer.
-                */
-               rx_desc->params.field.NFB = PKTSIZE_ALIGN;
-
-               /* Set the offset of the receive buffer. Zero means
-                * that the offset mechanism is not used.
-                */
-               rx_desc->params.field.offset = 0;
-
-               /* Check if it is the last descriptor.
-                */
-               if (i == (NUM_RX_DESC - 1)) {
-                       /* Let the last descriptor point to the first
-                        * one.
-                        */
-                       rx_desc->nextRxDescPtr = (u32)CKSEG1ADDR(rx_ring);
-               } else {
-                       /* Set the address of the next descriptor.
-                        */
-                       rx_desc->nextRxDescPtr = (u32)CKSEG1ADDR(&rx_ring[i+1]);
-               }
-
-               rx_desc->RxDataPtr = (u32)CKSEG1ADDR(NetRxPackets[i]);
-       }
-
-#if 0
-       printf("rx_ring = 0x%08X 0x%08X\n", (u32)rx_ring, (u32)&rx_ring[0]);
-       printf("tx_ring = 0x%08X 0x%08X\n", (u32)tx_ring, (u32)&tx_ring[0]);
-#endif
-
-       for (i = 0; i < NUM_TX_DESC; i++) {
-               inca_tx_descriptor_t * tx_desc = (inca_tx_descriptor_t *)CKSEG1ADDR(&tx_ring[i]);
-
-               memset(tx_desc, 0, sizeof(tx_ring[i]));
-
-               tx_desc->params.word       = 0;
-               tx_desc->params.field.HOLD = 1;
-               tx_desc->C                 = 1;
-
-                       /* Check if it is the last descriptor.
-                        */
-               if (i == (NUM_TX_DESC - 1)) {
-                               /* Let the last descriptor point to the
-                                * first one.
-                                */
-                       tx_desc->nextTxDescPtr = (u32)CKSEG1ADDR(tx_ring);
-               } else {
-                               /* Set the address of the next descriptor.
-                                */
-                       tx_desc->nextTxDescPtr = (u32)CKSEG1ADDR(&tx_ring[i+1]);
-               }
-       }
-
-       /* Initialize RxDMA.
-        */
-       DMA_READ_REG(INCA_IP_DMA_DMA_RXISR, v);
-       debug("RX status = 0x%08X\n", v);
-
-       /* Writing to the FRDA of CHANNEL.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXFRDA0, (u32)rx_ring);
-
-       /* Writing to the COMMAND REG.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXCCR0, INCA_IP_DMA_DMA_RXCCR0_INIT);
-
-       /* Initialize TxDMA.
-        */
-       DMA_READ_REG(INCA_IP_DMA_DMA_TXISR, v);
-       debug("TX status = 0x%08X\n", v);
-
-       /* Writing to the FRDA of CHANNEL.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXFRDA0, (u32)tx_ring);
-
-       tx_new = rx_new = 0;
-
-       tx_hold = NUM_TX_DESC - 1;
-       rx_hold = NUM_RX_DESC - 1;
-
-#if 0
-       rx_ring[rx_hold].params.field.HOLD = 1;
-#endif
-       /* enable spanning tree forwarding, enable the CPU port */
-       /* ST_PT:
-        *      CPS (CPU port status)   0x3 (forwarding)
-        *      LPS (LAN port status)   0x3 (forwarding)
-        *      PPS (PC port status)    0x3 (forwarding)
-        */
-       SW_WRITE_REG(INCA_IP_Switch_ST_PT,0x3f);
-
-#if 0
-       printf("Leaving inca_switch_init()\n");
-#endif
-
-       return 0;
-}
-
-
-static int inca_switch_send(struct eth_device *dev, void *packet, int length)
-{
-       int                    i;
-       int                    res      = -1;
-       u32                    command;
-       u32                    regValue;
-       inca_tx_descriptor_t * tx_desc  = (inca_tx_descriptor_t *)CKSEG1ADDR(&tx_ring[tx_new]);
-
-#if 0
-       printf("Entered inca_switch_send()\n");
-#endif
-
-       if (length <= 0) {
-               printf ("%s: bad packet size: %d\n", dev->name, length);
-               goto Done;
-       }
-
-       for(i = 0; tx_desc->C == 0; i++) {
-               if (i >= TOUT_LOOP) {
-                       printf("%s: tx error buffer not ready\n", dev->name);
-                       goto Done;
-               }
-       }
-
-       if (tx_old_hold >= 0) {
-               ((inca_tx_descriptor_t *)CKSEG1ADDR(&tx_ring[tx_old_hold]))->params.field.HOLD = 1;
-       }
-       tx_old_hold = tx_hold;
-
-       tx_desc->params.word =
-                       (INCA_DMA_TX_SOP | INCA_DMA_TX_EOP | INCA_DMA_TX_HOLD);
-
-       tx_desc->C = 0;
-       tx_desc->TxDataPtr = (u32)packet;
-       tx_desc->params.field.NBA = length;
-
-       ((inca_tx_descriptor_t *)CKSEG1ADDR(&tx_ring[tx_hold]))->params.field.HOLD = 0;
-
-       tx_hold = tx_new;
-       tx_new  = (tx_new + 1) % NUM_TX_DESC;
-
-
-       if (! initialized) {
-               command = INCA_IP_DMA_DMA_TXCCR0_INIT;
-               initialized = 1;
-       } else {
-               command = INCA_IP_DMA_DMA_TXCCR0_HR;
-       }
-
-       DMA_READ_REG(INCA_IP_DMA_DMA_TXCCR0, regValue);
-       regValue |= command;
-#if 0
-       printf("regValue = 0x%x\n", regValue);
-#endif
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXCCR0, regValue);
-
-#if 1
-       for(i = 0; ((inca_tx_descriptor_t *)CKSEG1ADDR(&tx_ring[tx_hold]))->C == 0; i++) {
-               if (i >= TOUT_LOOP) {
-                       printf("%s: tx buffer not ready\n", dev->name);
-                       goto Done;
-               }
-       }
-#endif
-       res = length;
-Done:
-#if 0
-       printf("Leaving inca_switch_send()\n");
-#endif
-       return res;
-}
-
-
-static int inca_switch_recv(struct eth_device *dev)
-{
-       int                    length  = 0;
-       inca_rx_descriptor_t * rx_desc;
-
-#if 0
-       printf("Entered inca_switch_recv()\n");
-#endif
-
-       for (;;) {
-               rx_desc = (inca_rx_descriptor_t *)CKSEG1ADDR(&rx_ring[rx_new]);
-
-               if (rx_desc->status.field.C == 0) {
-                       break;
-               }
-
-#if 0
-               rx_ring[rx_new].params.field.HOLD = 1;
-#endif
-
-               if (! rx_desc->status.field.Eop) {
-                       printf("Partly received packet!!!\n");
-                       break;
-               }
-
-               length = rx_desc->status.field.NBT;
-               rx_desc->status.word &=
-                        ~(INCA_DMA_RX_EOP | INCA_DMA_RX_SOP | INCA_DMA_RX_C);
-#if 0
-{
-  int i;
-  for (i=0;i<length - 4;i++) {
-    if (i % 16 == 0) printf("\n%04x: ", i);
-    printf("%02X ", NetRxPackets[rx_new][i]);
-  }
-  printf("\n");
-}
-#endif
-
-               if (length) {
-#if 0
-                       printf("Received %d bytes\n", length);
-#endif
-                       NetReceive((void*)CKSEG1ADDR(NetRxPackets[rx_new]), length - 4);
-               } else {
-#if 1
-                       printf("Zero length!!!\n");
-#endif
-               }
-
-
-               ((inca_rx_descriptor_t *)CKSEG1ADDR(&rx_ring[rx_hold]))->params.field.HOLD = 0;
-
-               rx_hold = rx_new;
-
-               rx_new = (rx_new + 1) % NUM_RX_DESC;
-       }
-
-#if 0
-       printf("Leaving inca_switch_recv()\n");
-#endif
-
-       return length;
-}
-
-
-static void inca_switch_halt(struct eth_device *dev)
-{
-#if 0
-       printf("Entered inca_switch_halt()\n");
-#endif
-
-#if 1
-       initialized = 0;
-#endif
-#if 1
-       /* Disable forwarding to the CPU port.
-        */
-       SW_WRITE_REG(INCA_IP_Switch_ST_PT,0xf);
-
-       /* Close RxDMA channel.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXCCR0, INCA_IP_DMA_DMA_RXCCR0_OFF);
-
-       /* Close TxDMA channel.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXCCR0, INCA_IP_DMA_DMA_TXCCR0_OFF);
-
-
-#endif
-#if 0
-       printf("Leaving inca_switch_halt()\n");
-#endif
-}
-
-
-static void inca_init_switch_chip(void)
-{
-       u32 regValue;
-
-       /* To workaround a problem with collision counter
-        * (see Errata sheet).
-        */
-       SW_WRITE_REG(INCA_IP_Switch_PC_TX_CTL, 0x00000001);
-       SW_WRITE_REG(INCA_IP_Switch_LAN_TX_CTL, 0x00000001);
-
-#if 1
-       /* init MDIO configuration:
-        *      MDS (Poll speed):       0x01 (4ms)
-        *      PHY_LAN_ADDR:           0x06
-        *      PHY_PC_ADDR:            0x05
-        *      UEP (Use External PHY): 0x00 (Internal PHY is used)
-        *      PS (Port Select):       0x00 (PT/UMM for LAN)
-        *      PT (PHY Test):          0x00 (no test mode)
-        *      UMM (Use MDIO Mode):    0x00 (state machine is disabled)
-        */
-       SW_WRITE_REG(INCA_IP_Switch_MDIO_CFG, 0x4c50);
-
-       /* init PHY:
-        *      SL (Auto Neg. Speed for LAN)
-        *      SP (Auto Neg. Speed for PC)
-        *      LL (Link Status for LAN)
-        *      LP (Link Status for PC)
-        *      DL (Duplex Status for LAN)
-        *      DP (Duplex Status for PC)
-        *      PL (Auto Neg. Pause Status for LAN)
-        *      PP (Auto Neg. Pause Status for PC)
-        */
-       SW_WRITE_REG (INCA_IP_Switch_EPHY, 0xff);
-
-       /* MDIO_ACC:
-        *      RA (Request/Ack)  0x01 (Request)
-        *      RW (Read/Write)   0x01 (Write)
-        *      PHY_ADDR          0x05 (PC)
-        *      REG_ADDR          0x00 (PHY_BCR: basic control register)
-        *      PHY_DATA          0x8000
-        *                    Reset                   - software reset
-        *                    LB (loop back)          - normal
-        *                    SS (speed select)       - 10 Mbit/s
-        *                    ANE (auto neg. enable)  - enable
-        *                    PD (power down)         - normal
-        *                    ISO (isolate)           - normal
-        *                    RAN (restart auto neg.) - normal
-        *                    DM (duplex mode)        - half duplex
-        *                    CT (collision test)     - enable
-        */
-       SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC, 0xc0a09000);
-
-       /* MDIO_ACC:
-        *      RA (Request/Ack)  0x01 (Request)
-        *      RW (Read/Write)   0x01 (Write)
-        *      PHY_ADDR          0x06 (LAN)
-        *      REG_ADDR          0x00 (PHY_BCR: basic control register)
-        *      PHY_DATA          0x8000
-        *                    Reset                   - software reset
-        *                    LB (loop back)          - normal
-        *                    SS (speed select)       - 10 Mbit/s
-        *                    ANE (auto neg. enable)  - enable
-        *                    PD (power down)         - normal
-        *                    ISO (isolate)           - normal
-        *                    RAN (restart auto neg.) - normal
-        *                    DM (duplex mode)        - half duplex
-        *                    CT (collision test)     - enable
-        */
-       SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC, 0xc0c09000);
-
-#endif
-
-       /* Make sure the CPU port is disabled for now. We
-        * don't want packets to get stacked for us until
-        * we enable DMA and are prepared to receive them.
-        */
-       SW_WRITE_REG(INCA_IP_Switch_ST_PT,0xf);
-
-       SW_READ_REG(INCA_IP_Switch_ARL_CTL, regValue);
-
-       /* CRC GEN is enabled.
-        */
-       regValue |= 0x00000200;
-       SW_WRITE_REG(INCA_IP_Switch_ARL_CTL, regValue);
-
-       /* ADD TAG is disabled.
-        */
-       SW_READ_REG(INCA_IP_Switch_PMAC_HD_CTL, regValue);
-       regValue &= ~0x00000002;
-       SW_WRITE_REG(INCA_IP_Switch_PMAC_HD_CTL, regValue);
-}
-
-
-static void inca_dma_init(void)
-{
-       /* Switch off all DMA channels.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXCCR0, INCA_IP_DMA_DMA_RXCCR0_OFF);
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXCCR1, INCA_IP_DMA_DMA_RXCCR1_OFF);
-
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXCCR0, INCA_IP_DMA_DMA_RXCCR0_OFF);
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXCCR1, INCA_IP_DMA_DMA_TXCCR1_OFF);
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXCCR2, INCA_IP_DMA_DMA_TXCCR2_OFF);
-
-       /* Setup TX channel polling time.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXPOLL, INCA_DMA_TX_POLLING_TIME);
-
-       /* Setup RX channel polling time.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXPOLL, INCA_DMA_RX_POLLING_TIME);
-
-       /* ERRATA: write reset value into the DMA RX IMR register.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXIMR, 0xFFFFFFFF);
-
-       /* Just in case: disable all transmit interrupts also.
-        */
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXIMR, 0xFFFFFFFF);
-
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_TXISR, 0xFFFFFFFF);
-       DMA_WRITE_REG(INCA_IP_DMA_DMA_RXISR, 0xFFFFFFFF);
-}
-
-#if defined(CONFIG_INCA_IP_SWITCH_AMDIX)
-static int inca_amdix(void)
-{
-       u32 phyReg1 = 0;
-       u32 phyReg4 = 0;
-       u32 phyReg5 = 0;
-       u32 phyReg6 = 0;
-       u32 phyReg31 = 0;
-       u32 regEphy = 0;
-       int mdi_flag;
-       int retries;
-
-       /* Setup GPIO pins.
-        */
-       *INCA_IP_AUTO_MDIX_LAN_PORTS_DIR    |= (1 << INCA_IP_AUTO_MDIX_LAN_GPIO_PIN_RXTX);
-       *INCA_IP_AUTO_MDIX_LAN_PORTS_ALTSEL |= (1 << INCA_IP_AUTO_MDIX_LAN_GPIO_PIN_RXTX);
-
-#if 0
-       /* Wait for signal.
-        */
-       retries = WAIT_SIGNAL_RETRIES;
-       while (--retries) {
-               SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                               (0x1 << 31) |   /* RA           */
-                               (0x0 << 30) |   /* Read         */
-                               (0x6 << 21) |   /* LAN          */
-                               (17  << 16));   /* PHY_MCSR     */
-               do {
-                       SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg1);
-               } while (phyReg1 & (1 << 31));
-
-               if (phyReg1 & (1 << 1)) {
-                       /* Signal detected */
-                       break;
-               }
-       }
-
-       if (!retries)
-               goto Fail;
-#endif
-
-       /* Set MDI mode.
-        */
-       *INCA_IP_AUTO_MDIX_LAN_PORTS_OUT &= ~(1 << INCA_IP_AUTO_MDIX_LAN_GPIO_PIN_RXTX);
-       mdi_flag = 1;
-
-       /* Wait for link.
-        */
-       retries = WAIT_LINK_RETRIES;
-       while (--retries) {
-               udelay(LINK_RETRY_DELAY * 1000);
-               SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                               (0x1 << 31) |   /* RA           */
-                               (0x0 << 30) |   /* Read         */
-                               (0x6 << 21) |   /* LAN          */
-                               (1   << 16));   /* PHY_BSR      */
-               do {
-                       SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg1);
-               } while (phyReg1 & (1 << 31));
-
-               if (phyReg1 & (1 << 2)) {
-                       /* Link is up */
-                       break;
-               } else if (mdi_flag) {
-                       /* Set MDIX mode */
-                       *INCA_IP_AUTO_MDIX_LAN_PORTS_OUT |= (1 << INCA_IP_AUTO_MDIX_LAN_GPIO_PIN_RXTX);
-                       mdi_flag = 0;
-               } else {
-                       /* Set MDI mode */
-                       *INCA_IP_AUTO_MDIX_LAN_PORTS_OUT &= ~(1 << INCA_IP_AUTO_MDIX_LAN_GPIO_PIN_RXTX);
-                       mdi_flag = 1;
-               }
-       }
-
-       if (!retries) {
-               goto Fail;
-       } else {
-               SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                               (0x1 << 31) |   /* RA           */
-                               (0x0 << 30) |   /* Read         */
-                               (0x6 << 21) |   /* LAN          */
-                               (1   << 16));   /* PHY_BSR      */
-               do {
-                       SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg1);
-               } while (phyReg1 & (1 << 31));
-
-               /* Auto-negotiation / Parallel detection complete
-                */
-               if (phyReg1 & (1 << 5)) {
-                       SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                               (0x1 << 31) |   /* RA           */
-                               (0x0 << 30) |   /* Read         */
-                               (0x6 << 21) |   /* LAN          */
-                               (31  << 16));   /* PHY_SCSR     */
-                       do {
-                               SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg31);
-                       } while (phyReg31 & (1 << 31));
-
-                       switch ((phyReg31 >> 2) & 0x7) {
-                       case INCA_SWITCH_PHY_SPEED_10H:
-                               /* 10Base-T Half-duplex */
-                               regEphy = 0;
-                               break;
-                       case INCA_SWITCH_PHY_SPEED_10F:
-                               /* 10Base-T Full-duplex */
-                               regEphy = INCA_IP_Switch_EPHY_DL;
-                               break;
-                       case INCA_SWITCH_PHY_SPEED_100H:
-                               /* 100Base-TX Half-duplex */
-                               regEphy = INCA_IP_Switch_EPHY_SL;
-                               break;
-                       case INCA_SWITCH_PHY_SPEED_100F:
-                               /* 100Base-TX Full-duplex */
-                               regEphy = INCA_IP_Switch_EPHY_SL | INCA_IP_Switch_EPHY_DL;
-                               break;
-                       }
-
-                       /* In case of Auto-negotiation,
-                        * update the negotiated PAUSE support status
-                        */
-                       if (phyReg1 & (1 << 3)) {
-                               SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                                       (0x1 << 31) |   /* RA           */
-                                       (0x0 << 30) |   /* Read         */
-                                       (0x6 << 21) |   /* LAN          */
-                                       (6   << 16));   /* MII_EXPANSION        */
-                               do {
-                                       SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg6);
-                               } while (phyReg6 & (1 << 31));
-
-                               /* We are Autoneg-able.
-                                * Is Link partner also able to autoneg?
-                                */
-                               if (phyReg6 & (1 << 0)) {
-                                       SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                                               (0x1 << 31) |   /* RA           */
-                                               (0x0 << 30) |   /* Read         */
-                                               (0x6 << 21) |   /* LAN          */
-                                               (4   << 16));   /* MII_ADVERTISE        */
-                                       do {
-                                               SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg4);
-                                       } while (phyReg4 & (1 << 31));
-
-                                       /* We advertise PAUSE capab.
-                                        * Does link partner also advertise it?
-                                        */
-                                       if (phyReg4 & (1 << 10)) {
-                                               SW_WRITE_REG(INCA_IP_Switch_MDIO_ACC,
-                                                       (0x1 << 31) |   /* RA           */
-                                                       (0x0 << 30) |   /* Read         */
-                                                       (0x6 << 21) |   /* LAN          */
-                                                       (5   << 16));   /* MII_LPA      */
-                                               do {
-                                                       SW_READ_REG(INCA_IP_Switch_MDIO_ACC, phyReg5);
-                                               } while (phyReg5 & (1 << 31));
-
-                                               /* Link partner is PAUSE capab.
-                                                */
-                                               if (phyReg5 & (1 << 10)) {
-                                                       regEphy |= INCA_IP_Switch_EPHY_PL;
-                                               }
-                                       }
-                               }
-
-                       }
-
-                       /* Link is up */
-                       regEphy |= INCA_IP_Switch_EPHY_LL;
-
-                       SW_WRITE_REG(INCA_IP_Switch_EPHY, regEphy);
-               }
-       }
-
-       return 0;
-
-Fail:
-       printf("No Link on LAN port\n");
-       return -1;
-}
-#endif /* CONFIG_INCA_IP_SWITCH_AMDIX */
index 2f0d640adec80a6754c7948accab8bfd1b25315b..3e914ce5ad5d56f9d47cbd609da820e4db03b29a 100644 (file)
@@ -58,13 +58,7 @@ typedef unsigned long int            dword;
 
 #ifdef CONFIG_CPU_PXA25X
 
-#ifdef CONFIG_LUBBOCK
-#define        SMC_IO_SHIFT    2
-#undef USE_32_BIT
-
-#else
 #define        SMC_IO_SHIFT    0
-#endif
 
 #define        SMCREG(edev, r) ((edev)->iobase+((r)<<SMC_IO_SHIFT))
 
index 71a3110712defe0f97ea63e4aeac7fedca1a716d..237fbba51379a20197f317197b2c35b241ba7612 100644 (file)
@@ -71,12 +71,16 @@ struct pcnet_init_block {
        u32 reserved2;
 };
 
-typedef struct pcnet_priv {
+struct pcnet_uncached_priv {
        struct pcnet_rx_head rx_ring[RX_RING_SIZE];
        struct pcnet_tx_head tx_ring[TX_RING_SIZE];
        struct pcnet_init_block init_block;
+};
+
+typedef struct pcnet_priv {
+       struct pcnet_uncached_priv *uc;
        /* Receive Buffer space */
-       unsigned char rx_buf[RX_RING_SIZE][PKT_BUF_SZ + 4];
+       unsigned char (*rx_buf)[RX_RING_SIZE][PKT_BUF_SZ + 4];
        int cur_rx;
        int cur_tx;
 } pcnet_priv_t;
@@ -283,6 +287,7 @@ static int pcnet_probe(struct eth_device *dev, bd_t *bis, int dev_nr)
 
 static int pcnet_init(struct eth_device *dev, bd_t *bis)
 {
+       struct pcnet_uncached_priv *uc;
        int i, val;
        u32 addr;
 
@@ -325,24 +330,35 @@ static int pcnet_init(struct eth_device *dev, bd_t *bis)
                addr = (u32)malloc(sizeof(pcnet_priv_t) + 0x10);
                addr = (addr + 0xf) & ~0xf;
                lp = (pcnet_priv_t *)addr;
+
+               addr = (u32)memalign(ARCH_DMA_MINALIGN, sizeof(*lp->uc));
+               flush_dcache_range(addr, addr + sizeof(*lp->uc));
+               addr = UNCACHED_SDRAM(addr);
+               lp->uc = (struct pcnet_uncached_priv *)addr;
+
+               addr = (u32)memalign(ARCH_DMA_MINALIGN, sizeof(*lp->rx_buf));
+               flush_dcache_range(addr, addr + sizeof(*lp->rx_buf));
+               lp->rx_buf = (void *)addr;
        }
 
-       lp->init_block.mode = cpu_to_le16(0x0000);
-       lp->init_block.filter[0] = 0x00000000;
-       lp->init_block.filter[1] = 0x00000000;
+       uc = lp->uc;
+
+       uc->init_block.mode = cpu_to_le16(0x0000);
+       uc->init_block.filter[0] = 0x00000000;
+       uc->init_block.filter[1] = 0x00000000;
 
        /*
         * Initialize the Rx ring.
         */
        lp->cur_rx = 0;
        for (i = 0; i < RX_RING_SIZE; i++) {
-               lp->rx_ring[i].base = PCI_TO_MEM_LE(dev, lp->rx_buf[i]);
-               lp->rx_ring[i].buf_length = cpu_to_le16(-PKT_BUF_SZ);
-               lp->rx_ring[i].status = cpu_to_le16(0x8000);
+               uc->rx_ring[i].base = PCI_TO_MEM_LE(dev, (*lp->rx_buf)[i]);
+               uc->rx_ring[i].buf_length = cpu_to_le16(-PKT_BUF_SZ);
+               uc->rx_ring[i].status = cpu_to_le16(0x8000);
                PCNET_DEBUG1
                        ("Rx%d: base=0x%x buf_length=0x%hx status=0x%hx\n", i,
-                        lp->rx_ring[i].base, lp->rx_ring[i].buf_length,
-                        lp->rx_ring[i].status);
+                        uc->rx_ring[i].base, uc->rx_ring[i].buf_length,
+                        uc->rx_ring[i].status);
        }
 
        /*
@@ -351,34 +367,34 @@ static int pcnet_init(struct eth_device *dev, bd_t *bis)
         */
        lp->cur_tx = 0;
        for (i = 0; i < TX_RING_SIZE; i++) {
-               lp->tx_ring[i].base = 0;
-               lp->tx_ring[i].status = 0;
+               uc->tx_ring[i].base = 0;
+               uc->tx_ring[i].status = 0;
        }
 
        /*
         * Setup Init Block.
         */
-       PCNET_DEBUG1("Init block at 0x%p: MAC", &lp->init_block);
+       PCNET_DEBUG1("Init block at 0x%p: MAC", &lp->uc->init_block);
 
        for (i = 0; i < 6; i++) {
-               lp->init_block.phys_addr[i] = dev->enetaddr[i];
-               PCNET_DEBUG1(" %02x", lp->init_block.phys_addr[i]);
+               lp->uc->init_block.phys_addr[i] = dev->enetaddr[i];
+               PCNET_DEBUG1(" %02x", lp->uc->init_block.phys_addr[i]);
        }
 
-       lp->init_block.tlen_rlen = cpu_to_le16(TX_RING_LEN_BITS |
+       uc->init_block.tlen_rlen = cpu_to_le16(TX_RING_LEN_BITS |
                                               RX_RING_LEN_BITS);
-       lp->init_block.rx_ring = PCI_TO_MEM_LE(dev, lp->rx_ring);
-       lp->init_block.tx_ring = PCI_TO_MEM_LE(dev, lp->tx_ring);
-       flush_dcache_range((unsigned long)lp, (unsigned long)&lp->rx_buf);
+       uc->init_block.rx_ring = PCI_TO_MEM_LE(dev, uc->rx_ring);
+       uc->init_block.tx_ring = PCI_TO_MEM_LE(dev, uc->tx_ring);
 
        PCNET_DEBUG1("\ntlen_rlen=0x%x rx_ring=0x%x tx_ring=0x%x\n",
-                    lp->init_block.tlen_rlen,
-                    lp->init_block.rx_ring, lp->init_block.tx_ring);
+                    uc->init_block.tlen_rlen,
+                    uc->init_block.rx_ring, uc->init_block.tx_ring);
 
        /*
         * Tell the controller where the Init Block is located.
         */
-       addr = PCI_TO_MEM(dev, &lp->init_block);
+       barrier();
+       addr = PCI_TO_MEM(dev, &lp->uc->init_block);
        pcnet_write_csr(dev, 1, addr & 0xffff);
        pcnet_write_csr(dev, 2, (addr >> 16) & 0xffff);
 
@@ -408,7 +424,7 @@ static int pcnet_init(struct eth_device *dev, bd_t *bis)
 static int pcnet_send(struct eth_device *dev, void *packet, int pkt_len)
 {
        int i, status;
-       struct pcnet_tx_head *entry = &lp->tx_ring[lp->cur_tx];
+       struct pcnet_tx_head *entry = &lp->uc->tx_ring[lp->cur_tx];
 
        PCNET_DEBUG2("Tx%d: %d bytes from 0x%p ", lp->cur_tx, pkt_len,
                     packet);
@@ -418,9 +434,7 @@ static int pcnet_send(struct eth_device *dev, void *packet, int pkt_len)
 
        /* Wait for completion by testing the OWN bit */
        for (i = 1000; i > 0; i--) {
-               invalidate_dcache_range((unsigned long)entry,
-                                       (unsigned long)entry + sizeof(*entry));
-               status = le16_to_cpu(entry->status);
+               status = readw(&entry->status);
                if ((status & 0x8000) == 0)
                        break;
                udelay(100);
@@ -437,13 +451,10 @@ static int pcnet_send(struct eth_device *dev, void *packet, int pkt_len)
         * Setup Tx ring. Caution: the write order is important here,
         * set the status with the "ownership" bits last.
         */
-       status = 0x8300;
-       entry->length = cpu_to_le16(-pkt_len);
-       entry->misc = 0x00000000;
-       entry->base = PCI_TO_MEM_LE(dev, packet);
-       entry->status = cpu_to_le16(status);
-       flush_dcache_range((unsigned long)entry,
-                          (unsigned long)entry + sizeof(*entry));
+       writew(-pkt_len, &entry->length);
+       writel(0, &entry->misc);
+       writel(PCI_TO_MEM(dev, packet), &entry->base);
+       writew(0x8300, &entry->status);
 
        /* Trigger an immediate send poll. */
        pcnet_write_csr(dev, 0, 0x0008);
@@ -459,54 +470,51 @@ static int pcnet_send(struct eth_device *dev, void *packet, int pkt_len)
 static int pcnet_recv (struct eth_device *dev)
 {
        struct pcnet_rx_head *entry;
+       unsigned char *buf;
        int pkt_len = 0;
-       u16 status;
+       u16 status, err_status;
 
        while (1) {
-               entry = &lp->rx_ring[lp->cur_rx];
-               invalidate_dcache_range((unsigned long)entry,
-                                       (unsigned long)entry + sizeof(*entry));
+               entry = &lp->uc->rx_ring[lp->cur_rx];
                /*
                 * If we own the next entry, it's a new packet. Send it up.
                 */
-               status = le16_to_cpu(entry->status);
+               status = readw(&entry->status);
                if ((status & 0x8000) != 0)
                        break;
-               status >>= 8;
+               err_status = status >> 8;
 
-               if (status != 0x03) {   /* There was an error. */
+               if (err_status != 0x03) {       /* There was an error. */
                        printf("%s: Rx%d", dev->name, lp->cur_rx);
-                       PCNET_DEBUG1(" (status=0x%x)", status);
-                       if (status & 0x20)
+                       PCNET_DEBUG1(" (status=0x%x)", err_status);
+                       if (err_status & 0x20)
                                printf(" Frame");
-                       if (status & 0x10)
+                       if (err_status & 0x10)
                                printf(" Overflow");
-                       if (status & 0x08)
+                       if (err_status & 0x08)
                                printf(" CRC");
-                       if (status & 0x04)
+                       if (err_status & 0x04)
                                printf(" Fifo");
                        printf(" Error\n");
-                       entry->status &= le16_to_cpu(0x03ff);
+                       status &= 0x03ff;
 
                } else {
-                       pkt_len = (le32_to_cpu(entry->msg_length) & 0xfff) - 4;
+                       pkt_len = (readl(&entry->msg_length) & 0xfff) - 4;
                        if (pkt_len < 60) {
                                printf("%s: Rx%d: invalid packet length %d\n",
                                       dev->name, lp->cur_rx, pkt_len);
                        } else {
-                               invalidate_dcache_range(
-                                       (unsigned long)lp->rx_buf[lp->cur_rx],
-                                       (unsigned long)lp->rx_buf[lp->cur_rx] +
-                                       pkt_len);
-                               NetReceive(lp->rx_buf[lp->cur_rx], pkt_len);
+                               buf = (*lp->rx_buf)[lp->cur_rx];
+                               invalidate_dcache_range((unsigned long)buf,
+                                       (unsigned long)buf + pkt_len);
+                               NetReceive(buf, pkt_len);
                                PCNET_DEBUG2("Rx%d: %d bytes from 0x%p\n",
-                                            lp->cur_rx, pkt_len,
-                                            lp->rx_buf[lp->cur_rx]);
+                                            lp->cur_rx, pkt_len, buf);
                        }
                }
-               entry->status |= cpu_to_le16(0x8000);
-               flush_dcache_range((unsigned long)entry,
-                                  (unsigned long)entry + sizeof(*entry));
+
+               status |= 0x8000;
+               writew(status, &entry->status);
 
                if (++lp->cur_rx >= RX_RING_SIZE)
                        lp->cur_rx = 0;
index b80980d5524e811d310fffa99cf226465f3d787d..abd4e5b463eef305438b1f54bcaf729519ff5f58 100644 (file)
@@ -53,7 +53,7 @@ static struct phy_driver AR8031_driver =  {
        .uid = 0x4dd074,
        .mask = 0xffffffef,
        .features = PHY_GBIT_FEATURES,
-       .config = genphy_config,
+       .config = ar8021_config,
        .startup = genphy_startup,
        .shutdown = genphy_shutdown,
 };
index c555979661189e1e9cb41cad038e263dea13391c..3a55d271a532f9c95756c377b5d8f252264dd0fe 100644 (file)
@@ -296,7 +296,7 @@ static struct phy_driver VSC8574_driver = {
 
 static struct phy_driver VSC8514_driver = {
        .name = "Vitesse VSC8514",
-       .uid = 0x70570,
+       .uid = 0x70670,
        .mask = 0xffff0,
        .features = PHY_GBIT_FEATURES,
        .config = &vsc8514_config,
index 101489c994760bf8bdaba0f7546fd941ca846a94..3cadd23bb46aa77529b9a15909f20409588eb4e9 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <common.h>
 #include <net.h>
+#include <netdev.h>
 #include <config.h>
 #include <fdtdec.h>
 #include <libfdt.h>
@@ -338,7 +339,8 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
        phy_detection(dev);
 
        /* interface - look at tsec */
-       phydev = phy_connect(priv->bus, priv->phyaddr, dev, 0);
+       phydev = phy_connect(priv->bus, priv->phyaddr, dev,
+                            PHY_INTERFACE_MODE_MII);
 
        phydev->supported = supported | ADVERTISED_Pause |
                            ADVERTISED_Asym_Pause;
index 373258383810b9d886c25adf3a8b67ec39d22b2e..663827780e9a27d887dd4b9cd5cf568ad03cd214 100644 (file)
@@ -211,7 +211,7 @@ static u_int m8xx_get_graycode(u_int size)
 
 #if    0
 
-#if    defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE)
+#if defined(CONFIG_RPXLITE)
 
 /* The RPX boards seems to have it's bus monitor timeout set to 6*8 clocks.
  * SYPCR is write once only, therefore must the slowest memory be faster
index c7c425b93cf8c67145c2d5f8c1f08459c262cd0c..5b24f0bfbe48c65bf6283c436fbcb4710122e4f2 100644 (file)
@@ -18,7 +18,7 @@
 #endif
 
 #if    defined(CONFIG_PCMCIA)  \
-       && (defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE))
+       && defined(CONFIG_RPXLITE)
 
 #define        PCMCIA_BOARD_MSG        "RPX CLASSIC or RPX LITE"
 
@@ -70,4 +70,4 @@ static int pcmcia_hardware_disable(int slot)
 #endif
 
 
-#endif /* CONFIG_PCMCIA && (CONFIG_RPXCLASSIC || CONFIG_RPXLITE) */
+#endif /* CONFIG_PCMCIA && CONFIG_RPXLITE */
index b5ddc4b474d0e89bde1884f6f1bd9db46d1c181d..b1da75ec4d924dc4471c7daabe77fdef81a7fa1c 100644 (file)
@@ -165,7 +165,7 @@ void qe_init(uint qe_base)
        /*
         * Upload microcode to IRAM for those SOCs which do not have ROM in QE.
         */
-       qe_upload_firmware((const void *)CONFIG_SYS_QE_FMAN_FW_ADDR);
+       qe_upload_firmware((const void *)CONFIG_SYS_QE_FW_ADDR);
 
        /* enable the microcode in IRAM */
        out_be32(&qe_immr->iram.iready,QE_IRAM_READY);
index c82ac7b0710eaac96497d3539e2d5dbf525c6bf8..ebb7c5f12463239476167299e47756b88cbf2387 100644 (file)
@@ -282,5 +282,7 @@ int qe_set_mii_clk_src(int ucc_num);
 int qe_upload_firmware(const struct qe_firmware *firmware);
 struct qe_firmware_info *qe_get_firmware_info(void);
 void ft_qe_setup(void *blob);
+void qe_init(uint qe_base);
+void qe_reset(void);
 
 #endif /* __QE_H__ */
index df05bde46106bdc7733571aa29bdb59781f1b6c8..c4fb59cfb3109e356c59c3aa4d163cef17351b9e 100644 (file)
@@ -117,7 +117,7 @@ serial_initfunc(ns16550_serial_initialize);
 serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 serial_initfunc(s5p_serial_initialize);
-serial_initfunc(zynq_serial_initalize);
+serial_initfunc(zynq_serial_initialize);
 serial_initfunc(bfin_serial_initialize);
 serial_initfunc(bfin_jtag_initialize);
 serial_initfunc(mpc512x_serial_initialize);
@@ -214,7 +214,7 @@ void serial_initialize(void)
        bfin_serial_initialize();
        bfin_jtag_initialize();
        uartlite_serial_initialize();
-       zynq_serial_initalize();
+       zynq_serial_initialize();
        au1x00_serial_initialize();
        asc_serial_initialize();
        jz_serial_initialize();
index 53a8af02d64c79e4b7b2590b7c0a84d49078c159..1ff27d5f4889a5198ac14d761559360236436f87 100644 (file)
@@ -153,17 +153,17 @@ static int uart_zynq_serial_getc(const int port)
 
 /* Multi serial device functions */
 #define DECLARE_PSSERIAL_FUNCTIONS(port) \
-       int uart_zynq##port##_init(void) \
+       static int uart_zynq##port##_init(void) \
                                { return uart_zynq_serial_init(port); } \
-       void uart_zynq##port##_setbrg(void) \
+       static void uart_zynq##port##_setbrg(void) \
                                { return uart_zynq_serial_setbrg(port); } \
-       int uart_zynq##port##_getc(void) \
+       static int uart_zynq##port##_getc(void) \
                                { return uart_zynq_serial_getc(port); } \
-       int uart_zynq##port##_tstc(void) \
+       static int uart_zynq##port##_tstc(void) \
                                { return uart_zynq_serial_tstc(port); } \
-       void uart_zynq##port##_putc(const char c) \
+       static void uart_zynq##port##_putc(const char c) \
                                { uart_zynq_serial_putc(c, port); } \
-       void uart_zynq##port##_puts(const char *s) \
+       static void uart_zynq##port##_puts(const char *s) \
                                { uart_zynq_serial_puts(s, port); }
 
 /* Serial device descriptor */
@@ -179,10 +179,10 @@ static int uart_zynq_serial_getc(const int port)
 }
 
 DECLARE_PSSERIAL_FUNCTIONS(0);
-struct serial_device uart_zynq_serial0_device =
+static struct serial_device uart_zynq_serial0_device =
        INIT_PSSERIAL_STRUCTURE(0, "ttyPS0");
 DECLARE_PSSERIAL_FUNCTIONS(1);
-struct serial_device uart_zynq_serial1_device =
+static struct serial_device uart_zynq_serial1_device =
        INIT_PSSERIAL_STRUCTURE(1, "ttyPS1");
 
 #ifdef CONFIG_OF_CONTROL
@@ -223,7 +223,7 @@ __weak struct serial_device *default_serial_console(void)
 }
 #endif
 
-void zynq_serial_initalize(void)
+void zynq_serial_initialize(void)
 {
        serial_register(&uart_zynq_serial0_device);
        serial_register(&uart_zynq_serial1_device);
index 804a2bd412dd9d7f58ecdac0285c51d7bb93ab11..896c8d407e4ba0dacaefa7d1c737164a75f05ea3 100644 (file)
@@ -13,6 +13,7 @@ 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_FOTG210) += fotg210.o
+obj-$(CONFIG_CI_UDC)   += ci_udc.o
 obj-$(CONFIG_THOR_FUNCTION) += f_thor.o
 obj-$(CONFIG_USBDOWNLOAD_GADGET) += g_dnl.o
 obj-$(CONFIG_DFU_FUNCTION) += f_dfu.o
index 14b1e9b8bf1117037d4b21a41c0fd76a50f1a171..02d3fdade86c5edffcc668aae3d07a685044eb1c 100644 (file)
@@ -321,7 +321,7 @@ static void ci_debounce(struct ci_ep *ep, int in)
        if (addr == ba)
                return;         /* not a bounce */
 
-       memcpy(ep->req.buf, ep->b_buf, ep->req.length);
+       memcpy(ep->req.buf, ep->b_buf, ep->req.actual);
 free:
        /* Large payloads use allocated buffer, free it. */
        if (ep->b_buf != ep->b_fast)
@@ -350,6 +350,9 @@ static int ci_ep_queue(struct usb_ep *ep,
        item->info = INFO_BYTES(len) | INFO_IOC | INFO_ACTIVE;
        item->page0 = (uint32_t)ci_ep->b_buf;
        item->page1 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x1000;
+       item->page2 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x2000;
+       item->page3 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x3000;
+       item->page4 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x4000;
        ci_flush_qtd(num);
 
        head->next = (unsigned) item;
@@ -385,7 +388,7 @@ static void handle_ep_complete(struct ci_ep *ep)
                       num, in ? "in" : "out", item->info, item->page0);
 
        len = (item->info >> 16) & 0x7fff;
-       ep->req.length -= len;
+       ep->req.actual = ep->req.length - len;
        ci_debounce(ep, in);
 
        DBG("ept%d %s complete %x\n",
@@ -413,7 +416,11 @@ static void handle_setup(void)
 
        ci_invalidate_qh(0);
        memcpy(&r, head->setup_data, sizeof(struct usb_ctrlrequest));
+#ifdef CONFIG_CI_UDC_HAS_HOSTPC
+       writel(EPT_RX(0), &udc->epsetupstat);
+#else
        writel(EPT_RX(0), &udc->epstat);
+#endif
        DBG("handle setup %s, %x, %x index %x value %x\n", reqname(r.bRequest),
            r.bRequestType, r.bRequest, r.wIndex, r.wValue);
 
@@ -480,6 +487,9 @@ static void stop_activity(void)
        struct ept_queue_head *head;
        struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
        writel(readl(&udc->epcomp), &udc->epcomp);
+#ifdef CONFIG_CI_UDC_HAS_HOSTPC
+       writel(readl(&udc->epsetupstat), &udc->epsetupstat);
+#endif
        writel(readl(&udc->epstat), &udc->epstat);
        writel(0xffffffff, &udc->epflush);
 
@@ -521,7 +531,11 @@ void udc_irq(void)
                int max = 64;
                int speed = USB_SPEED_FULL;
 
+#ifdef CONFIG_CI_UDC_HAS_HOSTPC
+               bit = (readl(&udc->hostpc1_devlc) >> 25) & 3;
+#else
                bit = (readl(&udc->portsc) >> 26) & 3;
+#endif
                DBG("-- portchange %x %s\n", bit, (bit == 2) ? "High" : "Full");
                if (bit == 2) {
                        speed = USB_SPEED_HIGH;
@@ -538,7 +552,11 @@ void udc_irq(void)
                printf("<UEI %x>\n", readl(&udc->epcomp));
 
        if ((n & STS_UI) || (n & STS_UEI)) {
+#ifdef CONFIG_CI_UDC_HAS_HOSTPC
+               n = readl(&udc->epsetupstat);
+#else
                n = readl(&udc->epstat);
+#endif
                if (n & EPT_RX(0))
                        handle_setup();
 
@@ -699,7 +717,6 @@ static int ci_udc_probe(void)
 
 int usb_gadget_register_driver(struct usb_gadget_driver *driver)
 {
-       struct ci_udc *udc;
        int ret;
 
        if (!driver)
@@ -714,12 +731,18 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
                return ret;
 
        ret = ci_udc_probe();
+#if defined(CONFIG_USB_EHCI_MX6) || defined(CONFIG_USB_EHCI_MXS)
+       /*
+        * FIXME: usb_lowlevel_init()->ehci_hcd_init() should be doing all
+        * HW-specific initialization, e.g. ULPI-vs-UTMI PHY selection
+        */
        if (!ret) {
-               udc = (struct ci_udc *)controller.ctrl->hcor;
+               struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
 
                /* select ULPI phy */
                writel(PTS(PTS_ENABLE) | PFSC, &udc->portsc);
        }
+#endif
 
        ret = driver->bind(&controller.gadget);
        if (ret) {
index 42f6ef4ab30aa8e777a7af4ae49bd56e61697924..4425fd9345703d116e9e9d7638acb8f526bb8ac7 100644 (file)
@@ -8,45 +8,74 @@
 
 #define NUM_ENDPOINTS          6
 
+#ifdef CONFIG_CI_UDC_HAS_HOSTPC
+struct ci_udc {
+       u32 usbcmd;             /* 0x130 */
+       u32 usbsts;             /* 0x134 */
+       u32 pad1[3];
+       u32 devaddr;            /* 0x144 */
+       u32 epinitaddr;         /* 0x148 */
+       u32 pad2[10];
+       u32 portsc;             /* 0x174 */
+       u32 pad178[(0x1b4 - (0x174 + 4)) / 4];
+       u32 hostpc1_devlc;      /* 0x1b4 */
+       u32 pad1b8[(0x1f8 - (0x1b4 + 4)) / 4];
+       u32 usbmode;            /* 0x1f8 */
+       u32 pad1fc[(0x208 - (0x1f8 + 4)) / 4];
+       u32 epsetupstat;        /* 0x208 */
+       u32 epprime;            /* 0x20c */
+       u32 epflush;            /* 0x210 */
+       u32 epstat;             /* 0x214 */
+       u32 epcomp;             /* 0x218 */
+       u32 epctrl[16];         /* 0x21c */
+};
+#else
 struct ci_udc {
-#define MICRO_8FRAME   0x8
-#define USBCMD_ITC(x)  ((((x) > 0xff) ? 0xff : x) << 16)
-#define USBCMD_FS2     (1 << 15)
-#define USBCMD_RST     (1 << 1)
-#define USBCMD_RUN     (1)
        u32 usbcmd;             /* 0x140 */
-#define STS_SLI                (1 << 8)
-#define STS_URI                (1 << 6)
-#define STS_PCI                (1 << 2)
-#define STS_UEI                (1 << 1)
-#define STS_UI         (1 << 0)
        u32 usbsts;             /* 0x144 */
        u32 pad1[3];
        u32 devaddr;            /* 0x154 */
        u32 epinitaddr;         /* 0x158 */
        u32 pad2[10];
-#define PTS_ENABLE     2
-#define PTS(x)         (((x) & 0x3) << 30)
-#define PFSC           (1 << 24)
        u32 portsc;             /* 0x184 */
        u32 pad3[8];
-#define USBMODE_DEVICE 2
        u32 usbmode;            /* 0x1a8 */
        u32 epstat;             /* 0x1ac */
-#define EPT_TX(x)      (1 << (((x) & 0xffff) + 16))
-#define EPT_RX(x)      (1 << ((x) & 0xffff))
        u32 epprime;            /* 0x1b0 */
        u32 epflush;            /* 0x1b4 */
        u32 pad4;
        u32 epcomp;             /* 0x1bc */
+       u32 epctrl[16];         /* 0x1c0 */
+};
+
+#define PTS_ENABLE     2
+#define PTS(x)         (((x) & 0x3) << 30)
+#define PFSC           (1 << 24)
+#endif
+
+#define MICRO_8FRAME   0x8
+#define USBCMD_ITC(x)  ((((x) > 0xff) ? 0xff : x) << 16)
+#define USBCMD_FS2     (1 << 15)
+#define USBCMD_RST     (1 << 1)
+#define USBCMD_RUN     (1)
+
+#define STS_SLI                (1 << 8)
+#define STS_URI                (1 << 6)
+#define STS_PCI                (1 << 2)
+#define STS_UEI                (1 << 1)
+#define STS_UI         (1 << 0)
+
+#define USBMODE_DEVICE 2
+
+#define EPT_TX(x)      (1 << (((x) & 0xffff) + 16))
+#define EPT_RX(x)      (1 << ((x) & 0xffff))
+
 #define CTRL_TXE       (1 << 23)
 #define CTRL_TXR       (1 << 22)
 #define CTRL_RXE       (1 << 7)
 #define CTRL_RXR       (1 << 6)
 #define CTRL_TXT_BULK  (2 << 18)
 #define CTRL_RXT_BULK  (2 << 2)
-       u32 epctrl[16];         /* 0x1c0 */
-};
 
 struct ci_ep {
        struct usb_ep ep;
index de75ff13390c44bdc961136ad02ad83452c580a0..1b1e1793d920f49076b5ccac37d25075a9e07060 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/usb/composite.h>
 
 #include <dfu.h>
+#include <g_dnl.h>
 #include "f_dfu.h"
 
 struct f_dfu {
@@ -817,3 +818,5 @@ int dfu_add(struct usb_configuration *c)
 
        return dfu_bind_config(c);
 }
+
+DECLARE_GADGET_BIND_CALLBACK(usb_dnl_dfu, dfu_add);
index f896169743c3a9cff8274c3e2062ae615e3d1ac1..6374bb953a94478bbf469b09b52756e18796fac4 100644 (file)
 #include <config.h>
 #include <malloc.h>
 #include <common.h>
-#include <usb.h>
+#include <g_dnl.h>
 
 #include <linux/err.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/composite.h>
 #include <usb/lin_gadget_compat.h>
+#include <g_dnl.h>
 
 /*------------------------------------------------------------------------*/
 
@@ -680,11 +681,11 @@ static int sleep_thread(struct fsg_common *common)
                        /* Handle CTRL+C */
                        if (ctrlc())
                                return -EPIPE;
-#ifdef CONFIG_USB_CABLE_CHECK
+
                        /* Check cable connection */
-                       if (!usb_cable_connected())
+                       if (!g_dnl_board_usb_cable_connected())
                                return -EIO;
-#endif
+
                        k = 0;
                }
 
@@ -2778,3 +2779,5 @@ int fsg_init(struct ums *ums_dev)
 
        return 0;
 }
+
+DECLARE_GADGET_BIND_CALLBACK(usb_dnl_ums, fsg_add);
index f5c0224f21351b1f6a7a307ff132455ab80f431d..feef9e4619c482c31d7ce5a45bbab55a772c6146 100644 (file)
@@ -204,14 +204,14 @@ 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();
        int ret;
 
        debug("%s: left: %llu cnt: %d\n", __func__, left, cnt);
 
        if (left) {
-               ret = dfu_write(dfu_get_entity(alt_setting_num),
-                               transfer_buffer, left, cnt++);
+               ret = dfu_write(dfu_entity, transfer_buffer, left, cnt++);
                if (ret) {
                        error("DFU write failed [%d]: left: %llu", ret, left);
                        return ret;
@@ -225,11 +225,16 @@ static int download_tail(long long int left, int cnt)
         * This also frees memory malloc'ed by dfu_get_buf(), so no explicit
         * need fo call dfu_free_buf() is needed.
         */
-       ret = dfu_write(dfu_get_entity(alt_setting_num),
-                       transfer_buffer, 0, cnt);
+       ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
        if (ret)
                error("DFU write failed [%d] cnt: %d", ret, cnt);
 
+       ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
+       if (ret) {
+               error("DFU flush failed!");
+               return ret;
+       }
+
        return ret;
 }
 
@@ -999,3 +1004,5 @@ int thor_add(struct usb_configuration *c)
        debug("%s:\n", __func__);
        return thor_func_init(c);
 }
+
+DECLARE_GADGET_BIND_CALLBACK(usb_dnl_thor, thor_add);
index dd95afe86a5d5d44bbc07c91c883d09b1efa6958..25611acd607f21a39010a3c207ba70f39463c0c2 100644 (file)
@@ -41,7 +41,6 @@
 
 #define DRIVER_VERSION         "usb_dnl 2.0"
 
-static const char shortname[] = "usb_dnl_";
 static const char product[] = "USB download gadget";
 static char g_dnl_serial[MAX_STRING_SERIAL];
 static const char manufacturer[] = CONFIG_G_DNL_MANUFACTURER;
@@ -96,29 +95,36 @@ static int g_dnl_unbind(struct usb_composite_dev *cdev)
        free(cdev->config);
        cdev->config = NULL;
        debug("%s: calling usb_gadget_disconnect for "
-                       "controller '%s'\n", shortname, gadget->name);
+                       "controller '%s'\n", __func__, gadget->name);
        usb_gadget_disconnect(gadget);
 
        return 0;
 }
 
+static inline struct g_dnl_bind_callback *g_dnl_bind_callback_first(void)
+{
+       return ll_entry_start(struct g_dnl_bind_callback,
+                               g_dnl_bind_callbacks);
+}
+
+static inline struct g_dnl_bind_callback *g_dnl_bind_callback_end(void)
+{
+       return ll_entry_end(struct g_dnl_bind_callback,
+                               g_dnl_bind_callbacks);
+}
+
 static int g_dnl_do_config(struct usb_configuration *c)
 {
        const char *s = c->cdev->driver->name;
-       int ret = -1;
+       struct g_dnl_bind_callback *callback = g_dnl_bind_callback_first();
 
        debug("%s: configuration: 0x%p composite dev: 0x%p\n",
              __func__, c, c->cdev);
 
-       printf("GADGET DRIVER: %s\n", s);
-       if (!strcmp(s, "usb_dnl_dfu"))
-               ret = dfu_add(c);
-       else if (!strcmp(s, "usb_dnl_ums"))
-               ret = fsg_add(c);
-       else if (!strcmp(s, "usb_dnl_thor"))
-               ret = thor_add(c);
-
-       return ret;
+       for (; callback != g_dnl_bind_callback_end(); callback++)
+               if (!strcmp(s, callback->usb_function_name))
+                       return callback->fptr(c);
+       return -ENODEV;
 }
 
 static int g_dnl_config_register(struct usb_composite_dev *cdev)
@@ -152,6 +158,11 @@ __weak int g_dnl_get_board_bcd_device_number(int gcnum)
        return gcnum;
 }
 
+__weak int g_dnl_board_usb_cable_connected(void)
+{
+       return -EOPNOTSUPP;
+}
+
 static int g_dnl_get_bcd_device_number(struct usb_composite_dev *cdev)
 {
        struct usb_gadget *gadget = cdev->gadget;
@@ -203,12 +214,12 @@ static int g_dnl_bind(struct usb_composite_dev *cdev)
                device_desc.bcdDevice = cpu_to_le16(gcnum);
        else {
                debug("%s: controller '%s' not recognized\n",
-                       shortname, gadget->name);
+                       __func__, gadget->name);
                device_desc.bcdDevice = __constant_cpu_to_le16(0x9999);
        }
 
        debug("%s: calling usb_gadget_connect for "
-                       "controller '%s'\n", shortname, gadget->name);
+                       "controller '%s'\n", __func__, gadget->name);
        usb_gadget_connect(gadget);
 
        return 0;
@@ -227,36 +238,23 @@ static struct usb_composite_driver g_dnl_driver = {
        .unbind = g_dnl_unbind,
 };
 
-int g_dnl_register(const char *type)
+/*
+ * NOTICE:
+ * Registering via USB function name won't be necessary after rewriting
+ * g_dnl to support multiple USB functions.
+ */
+int g_dnl_register(const char *name)
 {
-       /* The largest function name is 4 */
-       static char name[sizeof(shortname) + 4];
        int ret;
 
-       if (!strcmp(type, "dfu")) {
-               strcpy(name, shortname);
-               strcat(name, type);
-       } else if (!strcmp(type, "ums")) {
-               strcpy(name, shortname);
-               strcat(name, type);
-       } else if (!strcmp(type, "thor")) {
-               strcpy(name, shortname);
-               strcat(name, type);
-       } else {
-               printf("%s: unknown command: %s\n", __func__, type);
-               return -EINVAL;
-       }
-
+       debug("%s: g_dnl_driver.name = %s\n", __func__, name);
        g_dnl_driver.name = name;
 
-       debug("%s: g_dnl_driver.name: %s\n", __func__, g_dnl_driver.name);
        ret = usb_composite_register(&g_dnl_driver);
-
        if (ret) {
                printf("%s: failed!, error: %d\n", __func__, ret);
                return ret;
        }
-
        return 0;
 }
 
index 02803df23c52faf2f6a84c7fa69f95f5cc0c2ca1..74300746b9dbce36dc30fb261b55d0da26a6e780 100644 (file)
@@ -311,7 +311,11 @@ static struct fsg_lun *fsg_lun_from_dev(struct device *dev)
 #define DELAYED_STATUS (EP0_BUFSIZE + 999)     /* An impossibly large value */
 
 /* Number of buffers we will use.  2 is enough for double-buffering */
+#ifndef CONFIG_CI_UDC
 #define FSG_NUM_BUFFERS        2
+#else
+#define FSG_NUM_BUFFERS        1 /* ci_udc only allows 1 req per ep at present */
+#endif
 
 /* Default size of buffer length. */
 #define FSG_BUFLEN     ((u32)16384)
index de5fa3f6483f3e5529b01cceb599146aa7c07b16..8c3ff64fe35359566a673a08791228d4f95989cf 100644 (file)
@@ -108,6 +108,9 @@ usb_gadget_get_string(struct usb_gadget_strings *table, int id, u8 *buf)
        struct usb_string       *s;
        int                     len;
 
+       if (!table)
+               return -EINVAL;
+
        /* descriptor 0 has the language id */
        if (id == 0) {
                buf[0] = 4;
index 578b097fc9591cfc9f813422dcb9ae223604b608..b301e28252bc31c34e6f7fcd0df95a6127fcd427 100644 (file)
@@ -36,6 +36,7 @@ obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
 obj-$(CONFIG_USB_EHCI_SPEAR) += ehci-spear.o
 obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
 obj-$(CONFIG_USB_EHCI_VCT) += ehci-vct.o
+obj-$(CONFIG_USB_EHCI_RMOBILE) += ehci-rmobile.o
 
 # xhci
 obj-$(CONFIG_USB_XHCI) += xhci.o xhci-mem.o xhci-ring.o
index 9356878eb2e452ce05ea756b098ea02cf569ff96..edd91a84a7e78ec97f37a5a27e82826a06eadb2c 100644 (file)
@@ -197,7 +197,8 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
 #ifdef CONFIG_OF_CONTROL
        /* setup the Vbus gpio here */
-       if (!fdtdec_setup_gpio(&ctx->vbus_gpio))
+       if (fdt_gpio_isvalid(&ctx->vbus_gpio) &&
+           !fdtdec_setup_gpio(&ctx->vbus_gpio))
                gpio_direction_output(ctx->vbus_gpio.gpio, 1);
 #endif
 
index 1ca7cf5d9b7911aac8e2bbc5c5ff7aefffe2e299..6cb4d986685c037757aca191dc9490e2a38c3a07 100644 (file)
 #include <asm/io.h>
 #include <usb/ehci-fsl.h>
 #include <hwconfig.h>
+#include <asm/fsl_errata.h>
 
 #include "ehci.h"
 
+static void set_txfifothresh(struct usb_ehci *, u32);
+
 /* Check USB PHY clock valid */
 static int usb_phy_clk_valid(struct usb_ehci *ehci)
 {
@@ -41,11 +44,23 @@ int ehci_hcd_init(int index, enum usb_init_type init,
        struct usb_ehci *ehci = NULL;
        const char *phy_type = NULL;
        size_t len;
+       char current_usb_controller[5];
 #ifdef CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
        char usb_phy[5];
 
        usb_phy[0] = '\0';
 #endif
+       if (has_erratum_a007075()) {
+               /*
+                * A 5ms delay is needed after applying soft-reset to the
+                * controller to let external ULPI phy come out of reset.
+                * This delay needs to be added before re-initializing
+                * the controller after soft-resetting completes
+                */
+               mdelay(5);
+       }
+       memset(current_usb_controller, '\0', 5);
+       snprintf(current_usb_controller, 4, "usb%d", index+1);
 
        switch (index) {
        case 0:
@@ -70,8 +85,9 @@ int ehci_hcd_init(int index, enum usb_init_type init,
        out_be32(&ehci->snoop2, 0x80000000 | SNOOP_SIZE_2GB);
 
        /* Init phy */
-       if (hwconfig_sub("usb1", "phy_type"))
-               phy_type = hwconfig_subarg("usb1", "phy_type", &len);
+       if (hwconfig_sub(current_usb_controller, "phy_type"))
+               phy_type = hwconfig_subarg(current_usb_controller,
+                               "phy_type", &len);
        else
                phy_type = getenv("usb_phy_type");
 
@@ -109,6 +125,10 @@ 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))
+               set_txfifothresh(ehci, TXFIFOTHRESH);
+
        return 0;
 }
 
@@ -120,3 +140,17 @@ int ehci_hcd_stop(int index)
 {
        return 0;
 }
+
+/*
+ * Setting the value of TXFIFO_THRESH field in TXFILLTUNING register
+ * to counter DDR latencies in writing data into Tx buffer.
+ * This prevents Tx buffer from getting underrun
+ */
+static void set_txfifothresh(struct usb_ehci *ehci, u32 txfifo_thresh)
+{
+       u32 cmd;
+       cmd = ehci_readl(&ehci->txfilltuning);
+       cmd &= ~TXFIFO_THRESH_MASK;
+       cmd |= TXFIFO_THRESH(txfifo_thresh);
+       ehci_writel(&ehci->txfilltuning, cmd);
+}
index 6017090ebeec93092953cc53266cd6de4a745dc7..eaf59134cb0e2797cfe08a70162c37db3f7e57be 100644 (file)
@@ -998,8 +998,8 @@ int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
        if (!ehcic[index].periodic_list)
                return -ENOMEM;
        for (i = 0; i < 1024; i++) {
-               ehcic[index].periodic_list[i] = (uint32_t)periodic
-                                               | QH_LINK_TYPE_QH;
+               ehcic[index].periodic_list[i] = cpu_to_hc32((uint32_t)periodic
+                                               | QH_LINK_TYPE_QH);
        }
 
        flush_dcache_range((uint32_t)ehcic[index].periodic_list,
@@ -1089,7 +1089,7 @@ struct int_queue {
        struct qTD *tds;
 };
 
-#define NEXT_QH(qh) (struct QH *)((qh)->qh_link & ~0x1f)
+#define NEXT_QH(qh) (struct QH *)(hc32_to_cpu((qh)->qh_link) & ~0x1f)
 
 static int
 enable_periodic(struct ehci_ctrl *ctrl)
@@ -1184,41 +1184,47 @@ create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
                struct qTD *td = result->tds + i;
                void **buf = &qh->buffer;
 
-               qh->qh_link = (uint32_t)(qh+1) | QH_LINK_TYPE_QH;
+               qh->qh_link = cpu_to_hc32((uint32_t)(qh+1) | QH_LINK_TYPE_QH);
                if (i == queuesize - 1)
-                       qh->qh_link = QH_LINK_TERMINATE;
+                       qh->qh_link = cpu_to_hc32(QH_LINK_TERMINATE);
 
-               qh->qh_overlay.qt_next = (uint32_t)td;
-               qh->qh_overlay.qt_altnext = QT_NEXT_TERMINATE;
-               qh->qh_endpt1 = (0 << 28) | /* No NAK reload (ehci 4.9) */
+               qh->qh_overlay.qt_next = cpu_to_hc32((uint32_t)td);
+               qh->qh_overlay.qt_altnext = cpu_to_hc32(QT_NEXT_TERMINATE);
+               qh->qh_endpt1 =
+                       cpu_to_hc32((0 << 28) | /* No NAK reload (ehci 4.9) */
                        (usb_maxpacket(dev, pipe) << 16) | /* MPS */
                        (1 << 14) |
                        QH_ENDPT1_EPS(ehci_encode_speed(dev->speed)) |
                        (usb_pipeendpoint(pipe) << 8) | /* Endpoint Number */
-                       (usb_pipedevice(pipe) << 0);
-               qh->qh_endpt2 = (1 << 30) | /* 1 Tx per mframe */
-                       (1 << 0); /* S-mask: microframe 0 */
+                       (usb_pipedevice(pipe) << 0));
+               qh->qh_endpt2 = cpu_to_hc32((1 << 30) | /* 1 Tx per mframe */
+                       (1 << 0)); /* S-mask: microframe 0 */
                if (dev->speed == USB_SPEED_LOW ||
                                dev->speed == USB_SPEED_FULL) {
                        debug("TT: port: %d, hub address: %d\n",
                                dev->portnr, dev->parent->devnum);
-                       qh->qh_endpt2 |= (dev->portnr << 23) |
+                       qh->qh_endpt2 |= cpu_to_hc32((dev->portnr << 23) |
                                (dev->parent->devnum << 16) |
-                               (0x1c << 8); /* C-mask: microframes 2-4 */
+                               (0x1c << 8)); /* C-mask: microframes 2-4 */
                }
 
-               td->qt_next = QT_NEXT_TERMINATE;
-               td->qt_altnext = QT_NEXT_TERMINATE;
+               td->qt_next = cpu_to_hc32(QT_NEXT_TERMINATE);
+               td->qt_altnext = cpu_to_hc32(QT_NEXT_TERMINATE);
                debug("communication direction is '%s'\n",
                      usb_pipein(pipe) ? "in" : "out");
-               td->qt_token = (elementsize << 16) |
+               td->qt_token = cpu_to_hc32((elementsize << 16) |
                        ((usb_pipein(pipe) ? 1 : 0) << 8) | /* IN/OUT token */
-                       0x80; /* active */
-               td->qt_buffer[0] = (uint32_t)buffer + i * elementsize;
-               td->qt_buffer[1] = (td->qt_buffer[0] + 0x1000) & ~0xfff;
-               td->qt_buffer[2] = (td->qt_buffer[0] + 0x2000) & ~0xfff;
-               td->qt_buffer[3] = (td->qt_buffer[0] + 0x3000) & ~0xfff;
-               td->qt_buffer[4] = (td->qt_buffer[0] + 0x4000) & ~0xfff;
+                       0x80); /* active */
+               td->qt_buffer[0] =
+                   cpu_to_hc32((uint32_t)buffer + i * elementsize);
+               td->qt_buffer[1] =
+                   cpu_to_hc32((td->qt_buffer[0] + 0x1000) & ~0xfff);
+               td->qt_buffer[2] =
+                   cpu_to_hc32((td->qt_buffer[0] + 0x2000) & ~0xfff);
+               td->qt_buffer[3] =
+                   cpu_to_hc32((td->qt_buffer[0] + 0x3000) & ~0xfff);
+               td->qt_buffer[4] =
+                   cpu_to_hc32((td->qt_buffer[0] + 0x4000) & ~0xfff);
 
                *buf = buffer + i * elementsize;
        }
@@ -1241,7 +1247,7 @@ create_int_queue(struct usb_device *dev, unsigned long pipe, int queuesize,
        /* hook up to periodic list */
        struct QH *list = &ctrl->periodic_queue;
        result->last->qh_link = list->qh_link;
-       list->qh_link = (uint32_t)result->first | QH_LINK_TYPE_QH;
+       list->qh_link = cpu_to_hc32((uint32_t)result->first | QH_LINK_TYPE_QH);
 
        flush_dcache_range((uint32_t)result->last,
                           ALIGN_END_ADDR(struct QH, result->last, 1));
@@ -1280,7 +1286,7 @@ void *poll_int_queue(struct usb_device *dev, struct int_queue *queue)
        /* still active */
        invalidate_dcache_range((uint32_t)cur,
                                ALIGN_END_ADDR(struct QH, cur, 1));
-       if (cur->qh_overlay.qt_token & 0x80) {
+       if (cur->qh_overlay.qt_token & cpu_to_hc32(0x80)) {
                debug("Exit poll_int_queue with no completed intr transfer. "
                      "token is %x\n", cur->qh_overlay.qt_token);
                return NULL;
@@ -1311,7 +1317,7 @@ destroy_int_queue(struct usb_device *dev, struct int_queue *queue)
 
        struct QH *cur = &ctrl->periodic_queue;
        timeout = get_timer(0) + 500; /* abort after 500ms */
-       while (!(cur->qh_link & QH_LINK_TERMINATE)) {
+       while (!(cur->qh_link & cpu_to_hc32(QH_LINK_TERMINATE))) {
                debug("considering %p, with qh_link %x\n", cur, cur->qh_link);
                if (NEXT_QH(cur) == queue->first) {
                        debug("found candidate. removing from chain\n");
diff --git a/drivers/usb/host/ehci-rmobile.c b/drivers/usb/host/ehci-rmobile.c
new file mode 100644 (file)
index 0000000..049e4c4
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ *  EHCI HCD (Host Controller Driver) for USB.
+ *
+ *  Copyright (C) 2013,2014 Renesas Electronics Corporation
+ *  Copyright (C) 2014 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+ *
+ *  SPDX-License-Identifier:     GPL-2.0
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/ehci-rmobile.h>
+#include "ehci.h"
+
+#if defined(CONFIG_R8A7740)
+static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
+       0xC6700000
+};
+#elif defined(CONFIG_R8A7790)
+static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
+       0xEE080000,     /* USB0 (EHCI) */
+       0xEE0A0000,     /* USB1 */
+       0xEE0C0000,     /* USB2 */
+       0xEE000000      /* USB3 (USB3.0 Host)*/
+};
+#elif defined(CONFIG_R8A7791)
+static u32 usb_base_address[CONFIG_USB_MAX_CONTROLLER_COUNT] = {
+       0xEE080000,     /* USB0 (EHCI) */
+       0xEE0C0000,     /* USB1 */
+       0xEE000000      /* USB3 (USB3.0 Host)*/
+};
+#else
+#error rmobile EHCI USB driver not supported on this platform
+#endif
+
+int ehci_hcd_stop(int index)
+{
+       int i;
+       u32 base;
+       struct ahbcom_pci_bridge *ahbcom_pci;
+
+       base = usb_base_address[index];
+       ahbcom_pci = (struct ahbcom_pci_bridge *)(base + AHBPCI_OFFSET);
+       writel(0, &ahbcom_pci->ahb_bus_ctr);
+
+       /* reset ehci */
+       setbits_le32(base + EHCI_USBCMD, CMD_RESET);
+       for (i = 100; i > 0; i--) {
+               if (!(readl(base + EHCI_USBCMD) & CMD_RESET))
+                       break;
+               udelay(100);
+       }
+
+       if (!i)
+               printf("error : ehci(%d) reset failed.\n", index);
+
+       if (index == (CONFIG_USB_MAX_CONTROLLER_COUNT - 1))
+               setbits_le32(SMSTPCR7, SMSTPCR703);
+
+       return 0;
+}
+
+int ehci_hcd_init(int index, enum usb_init_type init,
+       struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+{
+       u32 base;
+       u32 phys_base;
+       struct rmobile_ehci_reg *rehci;
+       struct ahbcom_pci_bridge *ahbcom_pci;
+       struct ahbconf_pci_bridge *ahbconf_pci;
+       struct ahb_pciconf *ahb_pciconf_ohci;
+       struct ahb_pciconf *ahb_pciconf_ehci;
+       uint32_t cap_base;
+
+       base = usb_base_address[index];
+       phys_base = base;
+       if (index == 0)
+               clrbits_le32(SMSTPCR7, SMSTPCR703);
+
+       rehci = (struct rmobile_ehci_reg *)(base + EHCI_OFFSET);
+       ahbcom_pci = (struct ahbcom_pci_bridge *)(base + AHBPCI_OFFSET);
+       ahbconf_pci =
+               (struct ahbconf_pci_bridge *)(base + PCI_CONF_AHBPCI_OFFSET);
+       ahb_pciconf_ohci = (struct ahb_pciconf *)(base + PCI_CONF_OHCI_OFFSET);
+       ahb_pciconf_ehci = (struct ahb_pciconf *)(base + PCI_CONF_EHCI_OFFSET);
+
+       /* Clock & Reset & Direct Power Down */
+       clrsetbits_le32(&ahbcom_pci->usbctr,
+                       (DIRPD | PCICLK_MASK | USBH_RST), USBCTR_WIN_SIZE_1GB);
+       clrbits_le32(&ahbcom_pci->usbctr, PLL_RST);
+
+       /* AHB-PCI Bridge Communication Registers */
+       writel(AHB_BUS_CTR_INIT, &ahbcom_pci->ahb_bus_ctr);
+       writel((CONFIG_SYS_SDRAM_BASE & 0xf0000000) | PCIAHB_WIN_PREFETCH,
+              &ahbcom_pci->pciahb_win1_ctr);
+       writel(0xf0000000 | PCIAHB_WIN_PREFETCH,
+              &ahbcom_pci->pciahb_win2_ctr);
+       writel(phys_base | PCIWIN2_PCICMD, &ahbcom_pci->ahbpci_win2_ctr);
+
+       setbits_le32(&ahbcom_pci->pci_arbiter_ctr,
+                    PCIBP_MODE | PCIREQ1 | PCIREQ0);
+
+       /* PCI Configuration Registers for AHBPCI */
+       writel(PCIWIN1_PCICMD | AHB_CFG_AHBPCI,
+              &ahbcom_pci->ahbpci_win1_ctr);
+       writel(phys_base + AHBPCI_OFFSET, &ahbconf_pci->basead);
+       writel(CONFIG_SYS_SDRAM_BASE & 0xf0000000, &ahbconf_pci->win1_basead);
+       writel(0xf0000000, &ahbconf_pci->win2_basead);
+       writel(SERREN | PERREN | MASTEREN | MEMEN,
+              &ahbconf_pci->cmnd_sts);
+
+       /* PCI Configuration Registers for EHCI */
+       writel(PCIWIN1_PCICMD | AHB_CFG_HOST, &ahbcom_pci->ahbpci_win1_ctr);
+       writel(phys_base + OHCI_OFFSET, &ahb_pciconf_ohci->basead);
+       writel(phys_base + EHCI_OFFSET, &ahb_pciconf_ehci->basead);
+       writel(SERREN | PERREN | MASTEREN | MEMEN,
+              &ahb_pciconf_ohci->cmnd_sts);
+       writel(SERREN | PERREN | MASTEREN | MEMEN,
+              &ahb_pciconf_ehci->cmnd_sts);
+
+       /* Enable PCI interrupt */
+       setbits_le32(&ahbcom_pci->pci_int_enable,
+                    USBH_PMEEN | USBH_INTBEN | USBH_INTAEN);
+
+       *hccr = (struct ehci_hccr *)((uint32_t)&rehci->hciversion);
+       cap_base = ehci_readl(&(*hccr)->cr_capbase);
+       *hcor = (struct ehci_hcor *)((uint32_t)*hccr + HC_LENGTH(cap_base));
+
+       return 0;
+}
index 1146d101de40901d5789c342c3716a2f2a1b7aaf..b4946a3f1cf5900614e7238f8033979876eac942 100644 (file)
@@ -298,7 +298,8 @@ int xhci_hcd_init(int index, struct xhci_hccr **hccr, struct xhci_hcor **hcor)
 
 #ifdef CONFIG_OF_CONTROL
        /* setup the Vbus gpio here */
-       if (!fdtdec_setup_gpio(&ctx->vbus_gpio))
+       if (fdt_gpio_isvalid(&ctx->vbus_gpio) &&
+           !fdtdec_setup_gpio(&ctx->vbus_gpio))
                gpio_direction_output(ctx->vbus_gpio.gpio, 1);
 #endif
 
index 05126803c3f5175a9f72e7f3804bb89b56c38795..0d7b89fcf6e4e0fe0508c4afa0ffa4d329abcfba 100644 (file)
@@ -204,7 +204,10 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
 
 int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
 {
-       /* TODO: implement me */
+       if (driver->disconnect)
+               driver->disconnect(&gadget->g);
+       if (driver->unbind)
+               driver->unbind(&gadget->g);
        return 0;
 }
 #endif /* CONFIG_MUSB_GADGET */
diff --git a/examples/standalone/x86-testapp.c b/examples/standalone/x86-testapp.c
deleted file mode 100644 (file)
index 1e16ec7..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-
-void *func[8], **pfunc;
-
-typedef struct xxx xxx_t;
-struct xxx {
-       int dummy;
-       void **pfunc;
-} q;
-
-#define XF_strcpy 3
-#define XF_printf 4
-
-#define LABEL(x)                                       \
-asm volatile (                                         \
-
-#if defined(__i386__)
-#define EXPORT_FUNC(x)                                 \
-asm volatile (                                         \
-"      .globl mon_" #x "\n"                            \
-"mon_" #x ":\n"                                                \
-"      movl    %0, %%eax\n"                            \
-"      movl    pfunc, %%ecx\n"                         \
-"      jmp     *(%%ecx,%%eax)\n"                       \
-       : : "i"(XF_ ## x * sizeof(void *)) : "eax", "ecx");
-#elif defined(__powerpc__)
-#define EXPORT_FUNC(x)                                 \
-asm volatile (                                         \
-"      .globl mon_" #x "\n"                            \
-"mon_" #x ":\n"                                                \
-"      lwz     %%r11, %0(%%r2)\n"                      \
-"      lwz     %%r11, %1(%%r11)\n"                     \
-"      mtctr   %%r11\n"                                \
-"      bctr\n"                                 \
-       : : "i"(offsetof(xxx_t, pfunc)), "i"(XF_ ## x * sizeof(void *)) : "r11", "r2");
-#elif defined(__arm__)
-#define EXPORT_FUNC(x)                                 \
-asm volatile (                                         \
-"      .globl mon_" #x "\n"                            \
-"mon_" #x ":\n"                                                \
-"      ldr     ip, [r8, %0]\n"                         \
-"      ldr     pc, [ip, %1]\n"                         \
-       : : "i"(offsetof(xxx_t, pfunc)), "i"(XF_ ## x * sizeof(void *)) : "ip");
-#elif defined(__mips__)
-#define EXPORT_FUNC(x)                                 \
-asm volatile (                                         \
-"      .globl mon_" #x "\n"                            \
-"mon_" #x ":\n"                                                \
-"      lw      $25, %0($26)\n"                         \
-"      lw      $25, %1($25)\n"                         \
-"      jr      $25\n"                                  \
-       : : "i"(offsetof(xxx_t, pfunc)), "i"(XF_ ## x * sizeof(void *)) : "t9");
-#elif defined(__nds32__)
-#define EXPORT_FUNC(x)                                 \
-asm volatile (                                         \
-"      .globl mon_" #x "\n"                            \
-"mon_" #x ":\n"                                                \
-"      lwi     $r16, [$gp + (%0)]\n"                   \
-"      lwi     $r16, [$r16 + (%1)]\n"                  \
-"      jr      $r16\n"                                 \
-: : "i"(offsetof(xxx_t, pfunc)),                       \
-"i"(XF_ ## x * sizeof(void *)) : "$r16");
-
-#else
-#error [No stub code for this arch]
-#endif
-
-void dummy(void)
-{
-EXPORT_FUNC(printf)
-EXPORT_FUNC(strcpy)
-}
-
-int main(void)
-{
-#if defined(__i386__)
-       xxx_t *pq;
-#elif defined(__powerpc__)
-       register volatile xxx_t *pq asm("r2");
-#elif defined(__arm__)
-       register volatile xxx_t *pq asm("r8");
-#elif defined(__mips__)
-       register volatile xxx_t *pq asm("k0");
-#elif defined(__nds32__)
-       register volatile xxx_t *pq asm("$r16");
-#endif
-       char buf[32];
-
-       func[XF_strcpy] = strcpy;
-       func[XF_printf] = printf;
-       pq = &q;
-       pq->pfunc = pfunc = func;
-
-       mon_strcpy(buf, "test");
-       mon_printf("hi %s %d z\n", buf, 444);
-
-       return 0;
-}
index ea063082790ec608726ecbd27fec12f82d02bf62..6315c02aa93d9fc6a4cda3f52f4912c8ebe2e5a0 100644 (file)
@@ -8,6 +8,13 @@
 #ifndef _AES_REF_H_
 #define _AES_REF_H_
 
+#ifdef USE_HOSTCC
+/* Define compat stuff for use in fw_* tools. */
+typedef unsigned char u8;
+typedef unsigned int u32;
+#define debug(...) do {} while (0)
+#endif
+
 /*
  * AES encryption library, with small code size, supporting only 128-bit AES
  *
@@ -25,30 +32,63 @@ enum {
 };
 
 /**
+ * aes_expand_key() - Expand the AES key
+ *
  * Expand a key into a key schedule, which is then used for the other
  * operations.
  *
- * \param key          Key, of length AES_KEY_LENGTH bytes
- * \param expkey       Buffer to place expanded key, AES_EXPAND_KEY_LENGTH
+ * @key                Key, of length AES_KEY_LENGTH bytes
+ * @expkey     Buffer to place expanded key, AES_EXPAND_KEY_LENGTH
  */
 void aes_expand_key(u8 *key, u8 *expkey);
 
 /**
- * Encrypt a single block of data
+ * aes_encrypt() - Encrypt single block of data with AES 128
  *
- * in          Input data
- * expkey      Expanded key to use for encryption (from aes_expand_key())
- * out         Output data
+ * @in         Input data
+ * @expkey     Expanded key to use for encryption (from aes_expand_key())
+ * @out                Output data
  */
 void aes_encrypt(u8 *in, u8 *expkey, u8 *out);
 
 /**
- * Decrypt a single block of data
+ * aes_decrypt() - Decrypt single block of data with AES 128
  *
- * in          Input data
- * expkey      Expanded key to use for decryption (from aes_expand_key())
- * out         Output data
+ * @in         Input data
+ * @expkey     Expanded key to use for decryption (from aes_expand_key())
+ * @out                Output data
  */
 void aes_decrypt(u8 *in, u8 *expkey, u8 *out);
 
+/**
+ * Apply chain data to the destination using EOR
+ *
+ * Each array is of length AES_KEY_LENGTH.
+ *
+ * @cbc_chain_data     Chain data
+ * @src                        Source data
+ * @dst                        Destination data, which is modified here
+ */
+void aes_apply_cbc_chain_data(u8 *cbc_chain_data, u8 *src, u8 *dst);
+
+/**
+ * aes_cbc_encrypt_blocks() - Encrypt multiple blocks of data with AES CBC.
+ *
+ * @key_exp            Expanded key to use
+ * @src                        Source data to encrypt
+ * @dst                        Destination buffer
+ * @num_aes_blocks     Number of AES blocks to encrypt
+ */
+void aes_cbc_encrypt_blocks(u8 *key_exp, u8 *src, u8 *dst, u32 num_aes_blocks);
+
+/**
+ * Decrypt multiple blocks of data with AES CBC.
+ *
+ * @key_exp            Expanded key to use
+ * @src                        Source data to decrypt
+ * @dst                        Destination buffer
+ * @num_aes_blocks     Number of AES blocks to decrypt
+ */
+void aes_cbc_decrypt_blocks(u8 *key_exp, u8 *src, u8 *dst, u32 num_aes_blocks);
+
 #endif /* _AES_REF_H_ */
index 707400e84793daf2166dff8d249e3cc6681a332c..e98b661e358815b1ab375b66675bf964eacf5d12 100644 (file)
@@ -79,6 +79,9 @@ typedef struct global_data {
 #endif
 #if defined(CONFIG_SYS_I2C)
        int             cur_i2c_bus;    /* current used i2c bus */
+#endif
+#ifdef CONFIG_SYS_I2C_MXC
+       void *srdata[10];
 #endif
        unsigned long timebase_h;
        unsigned long timebase_l;
index e78196797bdd133db62cf978e27bab5ae36cf1d6..c18e4ca27a3750da9a2c1e73d73c1269940bc09b 100644 (file)
@@ -108,9 +108,6 @@ typedef struct bd_info {
        unsigned int    bi_opbfreq;             /* OPB clock in Hz */
        int             bi_iic_fast[2];         /* Use fast i2c mode */
 #endif
-#if defined(CONFIG_NX823)
-       unsigned char   bi_sernum[8];
-#endif
 #if defined(CONFIG_4xx)
 #if defined(CONFIG_440GX) || \
                defined(CONFIG_460EX) || defined(CONFIG_460GT)
index cbd3c9e043db6ea97823a39c162fe86004153eaa..5fb0bb2d3d4db5c462f0c7e961b789417ed1ca24 100644 (file)
@@ -505,19 +505,8 @@ extern ssize_t spi_read     (uchar *, int, uchar *, int);
 extern ssize_t spi_write (uchar *, int, uchar *, int);
 #endif
 
-#ifdef CONFIG_RPXCLASSIC
-void rpxclassic_init (void);
-#endif
-
 void rpxlite_init (void);
 
-#ifdef CONFIG_MBX
-/* $(BOARD)/mbx8xx.c */
-void   mbx_init (void);
-void   board_serial_init (void);
-void   board_ether_init (void);
-#endif
-
 #ifdef CONFIG_HERMES
 /* $(BOARD)/hermes.c */
 void hermes_start_lxt980 (int speed);
@@ -692,9 +681,6 @@ ulong       get_UCLK (void);
 #if defined(CONFIG_LH7A40X)
 ulong  get_PLLCLK (void);
 #endif
-#if defined CONFIG_INCA_IP
-uint   incaip_get_cpuclk (void);
-#endif
 #if defined(CONFIG_IMX)
 ulong get_systemPLLCLK(void);
 ulong get_FCLK(void);
index 76338d4e6c163a4069848a647d96459ccf075fe4..821de21de7300efaeda1fd5bac19c130bba5b19f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -14,32 +14,45 @@ typedef struct {
 
        unsigned int tckmin_x_ps;
        unsigned int tckmax_ps;
-       unsigned int tckmax_max_ps;
        unsigned int trcd_ps;
        unsigned int trp_ps;
        unsigned int tras_ps;
+#if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4)
+       unsigned int taamin_ps;
+#endif
 
-       unsigned int twr_ps;    /* maximum = 63750 ps */
+#ifdef CONFIG_SYS_FSL_DDR4
+       unsigned int trfc1_ps;
+       unsigned int trfc2_ps;
+       unsigned int trfc4_ps;
+       unsigned int trrds_ps;
+       unsigned int trrdl_ps;
+       unsigned int tccdl_ps;
+#else
        unsigned int twtr_ps;   /* maximum = 63750 ps */
        unsigned int trfc_ps;   /* maximum = 255 ns + 256 ns + .75 ns
                                           = 511750 ps */
 
        unsigned int trrd_ps;   /* maximum = 63750 ps */
+       unsigned int trtp_ps;   /* byte 38, spd->trtp */
+#endif
+       unsigned int twr_ps;    /* maximum = 63750 ps */
        unsigned int trc_ps;    /* maximum = 254 ns + .75 ns = 254750 ps */
 
        unsigned int refresh_rate_ps;
        unsigned int extended_op_srt;
 
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
        unsigned int tis_ps;    /* byte 32, spd->ca_setup */
        unsigned int tih_ps;    /* byte 33, spd->ca_hold */
        unsigned int tds_ps;    /* byte 34, spd->data_setup */
        unsigned int tdh_ps;    /* byte 35, spd->data_hold */
-       unsigned int trtp_ps;   /* byte 38, spd->trtp */
        unsigned int tdqsq_max_ps;      /* byte 44, spd->tdqsq */
        unsigned int tqhs_ps;   /* byte 45, spd->tqhs */
+#endif
 
        unsigned int ndimms_present;
-       unsigned int lowest_common_SPD_caslat;
+       unsigned int lowest_common_spd_caslat;
        unsigned int highest_common_derated_caslat;
        unsigned int additive_latency;
        unsigned int all_dimms_burst_lengths_bitmask;
index c10a79c83930bde4c8e4d451b4a879fd6c0c41f9..29a3e61e80303db9e66b5b2c9e3e8868e5ef520e 100644 (file)
  * CPM capabilities.  I (or someone else) will add definitions as they
  * are needed.  -- Dan
  *
- * On the MBX board, EPPC-Bug loads CPM microcode into the first 512
- * bytes of the DP RAM and relocates the I2C parameter area to the
- * IDMA1 space.  The remaining DP RAM is available for buffer descriptors
- * or other use.
  */
 #ifndef __CPM_8XX__
 #define __CPM_8XX__
@@ -135,7 +131,6 @@ typedef struct cpm_buf_desc {
 #define PROFF_SMC2     ((uint)0x0380)
 
 /* Define enough so I can at least use the serial port as a UART.
- * The MBX uses SMC1 as the host serial port.
  */
 typedef struct smc_uart {
        ushort  smc_rbase;      /* Rx Buffer descriptor base address */
@@ -434,38 +429,6 @@ typedef struct scc_enet {
  * #define FEC_ENET to enable the SCC resp. FEC ethernet drivers.
  **********************************************************************/
 
-
-/***  ADS  *************************************************************/
-
-#if defined(CONFIG_MPC860) && defined(CONFIG_ADS)
-/* This ENET stuff is for the MPC860ADS with ethernet on SCC1.
- */
-
-#define        PROFF_ENET      PROFF_SCC1
-#define        CPM_CR_ENET     CPM_CR_CH_SCC1
-#define        SCC_ENET        0
-
-#define PA_ENET_RXD    ((ushort)0x0001)
-#define PA_ENET_TXD    ((ushort)0x0002)
-#define PA_ENET_TCLK   ((ushort)0x0100)
-#define PA_ENET_RCLK   ((ushort)0x0200)
-
-#define PB_ENET_TENA   ((uint)0x00001000)
-
-#define PC_ENET_CLSN   ((ushort)0x0010)
-#define PC_ENET_RENA   ((ushort)0x0020)
-
-#define SICR_ENET_MASK ((uint)0x000000ff)
-#define SICR_ENET_CLKRT        ((uint)0x0000002c)
-
-/* 68160 PHY control */
-
-#define PC_ENET_ETHLOOP ((ushort)0x0800)
-#define PC_ENET_TPFLDL ((ushort)0x0400)
-#define PC_ENET_TPSQEL  ((ushort)0x0200)
-
-#endif /* MPC860ADS */
-
 /***  BSEIP  **********************************************************/
 
 #ifdef CONFIG_BSEIP
@@ -568,62 +531,6 @@ typedef struct scc_enet {
 
 #endif
 
-/***  FADS823  ********************************************************/
-
-#if defined(CONFIG_MPC823FADS) && defined(CONFIG_FADS)
-/* This ENET stuff is for the MPC823FADS with ethernet on SCC2.
- */
-#ifdef CONFIG_SCC2_ENET
-#define        PROFF_ENET      PROFF_SCC2
-#define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-#define CPMVEC_ENET    CPMVEC_SCC2
-#endif
-
-#ifdef CONFIG_SCC1_ENET
-#define        PROFF_ENET      PROFF_SCC1
-#define        CPM_CR_ENET     CPM_CR_CH_SCC1
-#define        SCC_ENET        0
-#define CPMVEC_ENET    CPMVEC_SCC1
-#endif
-
-#define PA_ENET_RXD    ((ushort)0x0004)
-#define PA_ENET_TXD    ((ushort)0x0008)
-#define PA_ENET_TCLK   ((ushort)0x0400)
-#define PA_ENET_RCLK   ((ushort)0x0200)
-
-#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)0x00002e00)
-
-#endif /* CONFIG_FADS823FADS */
-
-/***  FADS850SAR  ********************************************************/
-
-#if defined(CONFIG_MPC850SAR) && defined(CONFIG_FADS)
-/* This ENET stuff is for the MPC850SAR with ethernet on SCC2.  Some of
- * this may be unique to the FADS850SAR configuration.
- * Note TENA is 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)        /* 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 */
-#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 SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00002f00)      /* RCLK-CLK2, TCLK-CLK4 */
-#endif /* CONFIG_FADS850SAR */
-
 /***  FADS860T********************************************************/
 
 #if defined(CONFIG_FADS) && defined(CONFIG_MPC86x)
@@ -709,32 +616,6 @@ typedef struct scc_enet {
 #define PD_MII_MASK    ((ushort)0x1FFF)        /* PD 3-15      */
 #endif /* CONFIG_GEN860T */
 
-/***  GENIETV  ********************************************************/
-
-#if defined(CONFIG_GENIETV)
-/* Ethernet is only on SCC2 */
-
-#define CONFIG_SCC2_ENET
-#define        PROFF_ENET      PROFF_SCC2
-#define        CPM_CR_ENET     CPM_CR_CH_SCC2
-#define        SCC_ENET        1
-#define CPMVEC_ENET    CPMVEC_SCC2
-
-#define PA_ENET_RXD    ((ushort)0x0004)        /* PA 13 */
-#define PA_ENET_TXD    ((ushort)0x0008)        /* PA 12 */
-#define PA_ENET_TCLK   ((ushort)0x0400)        /* PA  5 */
-#define PA_ENET_RCLK   ((ushort)0x0200)        /* PA  6 */
-
-#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 SICR_ENET_MASK ((uint)0x0000ff00)
-#define SICR_ENET_CLKRT        ((uint)0x00002e00)
-
-#endif /* CONFIG_GENIETV */
-
 /*** HERMES-PRO ******************************************************/
 
 /* The HERMES-PRO uses the FEC on a MPC860T for Ethernet */
@@ -888,60 +769,6 @@ typedef struct scc_enet {
 #define SICR_ENET_CLKRT        ((uint)0x00003E00)
 #endif /* CONFIG_LWMON */
 
-/***  NX823  ***********************************************/
-
-#if defined(CONFIG_NX823)
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC1 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 */
-
-#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 (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_NX823 */
-
-/***  MBX  ************************************************************/
-
-#ifdef CONFIG_MBX
-/* Bits in parallel I/O port registers that have to be set/cleared
- * to configure the pins for SCC1 use.  The TCLK and RCLK seem unique
- * to the MBX860 board.  Any two of the four available clocks could be
- * used, and the MPC860 cookbook manual has an example using different
- * clock pins.
- */
-#define        PROFF_ENET      PROFF_SCC1
-#define        CPM_CR_ENET     CPM_CR_CH_SCC1
-#define        SCC_ENET        0
-#define PA_ENET_RXD    ((ushort)0x0001)
-#define PA_ENET_TXD    ((ushort)0x0002)
-#define PA_ENET_TCLK   ((ushort)0x0200)
-#define PA_ENET_RCLK   ((ushort)0x0800)
-#define PC_ENET_TENA   ((ushort)0x0001)
-#define PC_ENET_CLSN   ((ushort)0x0010)
-#define PC_ENET_RENA   ((ushort)0x0020)
-
-/* Control bits in the SICR to route TCLK (CLK2) and RCLK (CLK4) 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)0x0000003d)
-#endif /* CONFIG_MBX */
-
 /***  KM8XX  *********************************************************/
 
 /* The KM8XX Service Module uses SCC3 for Ethernet */
@@ -1127,41 +954,6 @@ typedef struct scc_enet {
 
 #endif /* CONFIG_QS860T */
 
-/***  RPXCLASSIC  *****************************************************/
-
-#ifdef CONFIG_RPXCLASSIC
-
-#ifdef CONFIG_FEC_ENET
-
-# define FEC_ENET                              /* use FEC for EThernet */
-# undef SCC_ENET
-
-#else  /* ! CONFIG_FEC_ENET */
-
-/* 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)
-#define PA_ENET_TXD    ((ushort)0x0002)
-#define PA_ENET_TCLK   ((ushort)0x0200)
-#define PA_ENET_RCLK   ((ushort)0x0800)
-#define PB_ENET_TENA   ((uint)0x00001000)
-#define PC_ENET_CLSN   ((ushort)0x0010)
-#define PC_ENET_RENA   ((ushort)0x0020)
-
-/* Control bits in the SICR to route TCLK (CLK2) and RCLK (CLK4) 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)0x0000003d)
-
-#endif /* CONFIG_FEC_ENET */
-
-#endif /* CONFIG_RPXCLASSIC */
-
 /***  RPXLITE  ********************************************************/
 
 #ifdef CONFIG_RPXLITE
diff --git a/include/configs/ADS860.h b/include/configs/ADS860.h
deleted file mode 100644 (file)
index 82ea172..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-  * A collection of structures, addresses, and values associated with
-  * the Motorola 860 ADS board.         Copied from the MBX stuff.
-  * Magnus Damm added defines for 8xxrom and extended bd_info.
-  * Helmut Buchsbaum added bitvalues for BCSRx
-  *
-  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
-  *
-  * Modified by, Yuli Barcohen, Arabella Software Ltd., yuli@arabellasw.com
-  *
-  * Values common to all FADS family boards are in board/fads/fads.h
-  */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* Board type */
-#define CONFIG_ADS             1       /* Old Motorola MPC821/860ADS */
-
-/* Processor type */
-#define CONFIG_MPC860          1
-
-#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                38400   /* Console baudrate */
-
-#if 0
-#define CONFIG_SYS_8XX_FACT            1526    /* 32.768 kHz crystal on XTAL/EXTAL */
-#else
-#define CONFIG_SYS_8XX_FACT            12      /* 4 MHz oscillator on EXTCLK */
-#endif
-
-#define CONFIG_SYS_PLPRCR  (((CONFIG_SYS_8XX_FACT-1) << PLPRCR_MF_SHIFT) |     \
-               PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-#define CONFIG_DRAM_50MHZ              1
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_IMMAP
-#define CONFIG_CMD_PCMCIA
-#define CONFIG_CMD_PING
-
-/* This is picked up again in fads.h */
-#define FADS_COMMANDS_ALREADY_DEFINED
-
-#include "../../board/fads/fads.h"
-
-#define CONFIG_SYS_PC_IDE_RESET        ((ushort)0x0008)    /* PC 12    */
-
-#endif /* __CONFIG_H */
index b2483026870f3a8e4ecfcc164ce3be3944504b01..df371b771d5590d8036c89930e54ddef6a4d2acf 100644 (file)
 #define CONFIG_PHYS_64BIT
 
 #ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_SYS_FSL_PBL_PBI $(SRCTREE)/board/freescale/b4860qds/b4_pbi.cfg
+#define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/b4860qds/b4_rcw.cfg
+#ifndef CONFIG_NAND
 #define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
 #define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
-#define CONFIG_SYS_FSL_PBL_PBI board/freescale/b4860qds/b4_pbi.cfg
-#define CONFIG_SYS_FSL_PBL_RCW board/freescale/b4860qds/b4_rcw.cfg
+#else
+#define CONFIG_SPL
+#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
+#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
+#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
+#endif
 #endif
 
 #ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
 #define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
-#define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#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
@@ -164,7 +197,16 @@ unsigned long get_board_ddr_clk(void);
 /*
  *  Config the L3 Cache as L3 SRAM
  */
-#define CONFIG_SYS_INIT_L3_ADDR                CONFIG_RAMBOOT_TEXT_BASE
+#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_NAND
+#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
@@ -193,7 +235,9 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_DDR_SPD
 #define CONFIG_SYS_DDR_RAW_TIMING
 #define CONFIG_SYS_FSL_DDR3
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_FSL_DDR_INTERACTIVE
+#endif
 
 #define CONFIG_SYS_SPD_BUS_NUM 0
 #define SPD_EEPROM_ADDRESS1    0x51
@@ -381,7 +425,11 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NOR_FTIM2
 #define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NOR_FTIM3
 
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+#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
 
 #if defined(CONFIG_RAMBOOT_PBL)
 #define CONFIG_SYS_RAMBOOT
@@ -414,7 +462,7 @@ unsigned long get_board_ddr_clk(void);
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
 /* Serial Port - controlled on board with jumper J8
@@ -435,7 +483,9 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_CCSRBAR+0x11D500)
 #define CONFIG_SYS_NS16550_COM4        (CONFIG_SYS_CCSRBAR+0x11D600)
 #define CONFIG_SERIAL_MULTI            /* Enable both serial ports */
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV   /* determine from environment */
+#endif
 
 
 /* Use the HUSH parser */
@@ -596,7 +646,7 @@ unsigned long get_board_ddr_clk(void);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
@@ -604,10 +654,10 @@ unsigned long get_board_ddr_clk(void);
  * 0x2000 (16 blocks), 8 + 1089 + 16 = 1113, enlarge it to 1130.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1130)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 1130)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (13 * 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
@@ -617,10 +667,10 @@ unsigned long get_board_ddr_clk(void);
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xFFE00000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
index a163e3d8f1d4a452f6cce3ce89880252dfd6c2c0..5a316c83ad18ccabab0453e615498ee6858d2018 100644 (file)
@@ -220,7 +220,7 @@ extern unsigned long get_sdram_size(void);
                                                - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024) /* Reserve 256 kB for Mon*/
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc*/
 
 /* Serial Port */
index 052a0f11035375b6140671bf605415c3fa5ce521..e76a04b26253f48f608e87542037e13ec32f38dd 100644 (file)
 #define CONFIG_SYS_TEXT_BASE           0x11000000
 #define CONFIG_RESET_VECTOR_ADDRESS    0x110bfffc
 #endif
+#ifdef CONFIG_NAND_SECBOOT
+#define CONFIG_RAMBOOT_NAND
+#define CONFIG_SYS_RAMBOOT
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_SYS_TEXT_BASE           0x11000000
+#define CONFIG_RESET_VECTOR_ADDRESS    0x110bfffc
+#endif
 
 #ifdef CONFIG_NAND
 #define CONFIG_SPL
@@ -396,7 +403,7 @@ combinations. this should be removed later
                                                - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024) /* Reserve 256 kB for Mon*/
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc*/
 
 /* Serial Port */
@@ -551,7 +558,7 @@ combinations. this should be removed later
 #define CONFIG_ENV_OFFSET      0x100000        /* 1MB */
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #define CONFIG_ENV_SIZE                0x2000
-#elif defined(CONFIG_NAND)
+#elif defined(CONFIG_NAND) || defined(CONFIG_NAND_SECBOOT)
 #define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET      ((768 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE)
@@ -696,4 +703,6 @@ combinations. this should be removed later
 
 #define CONFIG_BOOTCOMMAND CONFIG_RAMBOOTCOMMAND
 
+#include <asm/fsl_secure_boot.h>
+
 #endif /* __CONFIG_H */
index 92913c8e79d159900f79fe75d5835aa28ff280a7..9e12fac5b13315850216f9b65eb3707181778f2a 100644 (file)
                                                - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (2 * 1024 * 1024)
 
 /*
diff --git a/include/configs/EVB64260.h b/include/configs/EVB64260.h
deleted file mode 100644 (file)
index 8ec75d9..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * (C) Copyright 2001
- * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#ifndef __ASSEMBLY__
-#include <galileo/core.h>
-#endif
-
-#include "../board/evb64260/local.h"
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_EVB64260                1       /* this is an EVB64260 board    */
-#define CONFIG_SYS_GT_6426x        GT_64260 /* with a 64260 system controller */
-
-#define        CONFIG_SYS_TEXT_BASE    0xfff00000
-#define        CONFIG_SYS_LDSCRIPT     "board/evb64260/u-boot.lds"
-
-#define CONFIG_BAUDRATE                38400   /* console baudrate = 38400     */
-
-#undef CONFIG_ECC                      /* enable ECC support */
-/* #define CONFIG_EVB64260_750CX  1 */      /* Support the EVB-64260-750CX Board */
-
-/* which initialization functions to call for this board */
-#define CONFIG_MISC_INIT_R     1
-#define CONFIG_BOARD_EARLY_INIT_F 1
-
-#ifndef CONFIG_EVB64260_750CX
-#define CONFIG_SYS_BOARD_NAME          "EVB64260"
-#else
-#define CONFIG_SYS_BOARD_NAME         "EVB64260-750CX"
-#endif
-
-#define CONFIG_SYS_HUSH_PARSER
-
-/*
- * The following defines let you select what serial you want to use
- * for your console driver.
- *
- * what to do:
- * to use the DUART, undef CONFIG_MPSC.  If you have hacked a serial
- * cable onto the second DUART channel, change the CONFIG_SYS_DUART port from 1
- * to 0 below.
- *
- * to use the MPSC, #define CONFIG_MPSC.  If you have wired up another
- * mpsc channel, change CONFIG_MPSC_PORT to the desired value.
- */
-#define        CONFIG_MPSC
-#define CONFIG_MPSC_PORT       0
-
-
-/* define this if you want to enable GT MAC filtering */
-#define CONFIG_GT_USE_MAC_HASH_TABLE
-
-#undef CONFIG_ETHER_PORT_MII   /* use RMII */
-
-#if 1
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_ZERO_BOOTDELAY_CHECK
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                                  \
-       "bootp && "                                                  \
-       "setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath " \
-       "ip=$ipaddr:$serverip:$gatewayip:" \
-       "$netmask:$hostname:eth0:none; && " \
-       "bootm"
-
-#define CONFIG_LOADS_ECHO      0       /* echo off for serial download */
-#define        CONFIG_SYS_LOADS_BAUD_CHANGE            /* allow baudrate changes       */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-#undef CONFIG_ALTIVEC                  /* undef to disable             */
-
-/*
- * 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_ASKENV
-
-
-/*
- * 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         0x00C00000      /* 4 ... 12 MB in DRAM  */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x00300000      /* default load address */
-#define CONFIG_SYS_BUS_CLK             100000000       /* 100 MHz              */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 230400 }
-
-#ifdef CONFIG_EVB64260_750CX
-#define CONFIG_750CX
-#define CONFIG_SYS_BROKEN_CL2
-#endif
-
-/*
- * Low Level Configuration Settings
- * (address mappings, register initial values, etc.)
- * You should know what you are doing if you make changes here.
- */
-
-/*-----------------------------------------------------------------------
- * 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)
-#define CONFIG_SYS_INIT_RAM_LOCK
-
-
-/*-----------------------------------------------------------------------
- * 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_RESET_ADDRESS       0xfff00100
-#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 256 kB for malloc */
-
-/* areas to map different things with the GT in physical space */
-#define CONFIG_SYS_DRAM_BANKS          4
-#define CONFIG_SYS_DFL_GT_REGS         0x14000000      /* boot time GT_REGS */
-
-/* What to put in the bats. */
-#define CONFIG_SYS_MISC_REGION_BASE    0xf0000000
-
-/* Peripheral Device section */
-#define CONFIG_SYS_GT_REGS             0xf8000000
-#define CONFIG_SYS_DEV_BASE            0xfc000000
-
-#define CONFIG_SYS_DEV0_SPACE          CONFIG_SYS_DEV_BASE
-#define CONFIG_SYS_DEV1_SPACE          (CONFIG_SYS_DEV0_SPACE + CONFIG_SYS_DEV0_SIZE)
-#define CONFIG_SYS_DEV2_SPACE          (CONFIG_SYS_DEV1_SPACE + CONFIG_SYS_DEV1_SIZE)
-#define CONFIG_SYS_DEV3_SPACE          (CONFIG_SYS_DEV2_SPACE + CONFIG_SYS_DEV2_SIZE)
-
-#define CONFIG_SYS_DEV0_SIZE            _8M /* evb64260 sram  @ 0xfc00.0000 */
-#define CONFIG_SYS_DEV1_SIZE            _8M /* evb64260 rtc   @ 0xfc80.0000 */
-#define CONFIG_SYS_DEV2_SIZE           _16M /* evb64260 duart @ 0xfd00.0000 */
-#define CONFIG_SYS_DEV3_SIZE           _16M /* evb64260 flash @ 0xfe00.0000 */
-
-#define CONFIG_SYS_DEV0_PAR            0x20205093
-#define CONFIG_SYS_DEV1_PAR            0xcfcfffff
-#define CONFIG_SYS_DEV2_PAR            0xc0059bd4
-#define CONFIG_SYS_8BIT_BOOT_PAR       0xc00b5e7c
-#define CONFIG_SYS_32BIT_BOOT_PAR      0xc4a8241c
-       /*   c    4    a      8     2     4    1      c         */
-       /* 33 22|2222|22 22|111 1|11 11|1 1  |    |             */
-       /* 10 98|7654|32 10|987 6|54 32|1 098|7 654|3 210       */
-       /* 11|00|0100|10 10|100|0 00|10 0|100 0|001 1|100       */
-       /*  3| 0|.... ..| 2| 4 |  0 |  4 |  8  |  3  | 4        */
-
-#if 0 /* Wrong?? NTL */
-#define CONFIG_SYS_MPP_CONTROL_0       0x53541717      /* InitAct EOT[4] DBurst TCEn[1] */
-                                               /* DMAAck[1:0] GNT0[1:0] */
-#else
-#define CONFIG_SYS_MPP_CONTROL_0       0x53547777      /* InitAct EOT[4] DBurst TCEn[1] */
-                                               /* REQ0[1:0] GNT0[1:0] */
-#endif
-#define CONFIG_SYS_MPP_CONTROL_1       0x44009911      /* TCEn[4] TCTcnt[4] GPP[13:12] */
-                                               /* DMAReq[4] DMAAck[4] WDNMI WDE */
-#if 0 /* Wrong?? NTL */
-#define CONFIG_SYS_MPP_CONTROL_2       0x40091818      /* TCTcnt[0] GPP[22:21] BClkIn */
-                                               /* DMAAck[1:0] GNT1[1:0] */
-#else
-#define CONFIG_SYS_MPP_CONTROL_2       0x40098888      /* TCTcnt[0] */
-                                               /* GPP[22] (RS232IntB or PCI1Int) */
-                                               /* GPP[21] (RS323IntA) */
-                                               /* BClkIn */
-                                               /* REQ1[1:0] GNT1[1:0] */
-#endif
-
-#if 0 /* Wrong?? NTL */
-# define CONFIG_SYS_MPP_CONTROL_3      0x00090066      /* GPP[31:29] BClkOut0 */
-                                               /* GPP[27:26] Int[1:0] */
-#else
-# define CONFIG_SYS_MPP_CONTROL_3      0x22090066      /* MREQ MGNT */
-                                               /* GPP[29]    (PCI1Int) */
-                                               /* BClkOut0 */
-                                               /* GPP[27]    (PCI0Int) */
-                                               /* GPP[26]    (RtcInt or PCI1Int) */
-                                               /* CPUInt[25:24] */
-#endif
-
-# define CONFIG_SYS_SERIAL_PORT_MUX    0x00000102      /* 0=hiZ  1=MPSC0 2=ETH 0 and 2 RMII */
-
-#if 0 /* Wrong?? - NTL */
-# define CONFIG_SYS_GPP_LEVEL_CONTROL  0x000002c6
-#else
-# define CONFIG_SYS_GPP_LEVEL_CONTROL  0x2c600000      /* 0010 1100 0110 0000 */
-                                               /* gpp[29] */
-                                               /* gpp[27:26] */
-                                               /* gpp[22:21] */
-
-# define CONFIG_SYS_SDRAM_CONFIG       0xd8e18200      /* 0x448 */
-                               /* idmas use buffer 1,1
-                                  comm use buffer 0
-                                  pci use buffer 1,1
-                                  cpu use buffer 0
-                                  normal load (see also ifdef HVL)
-                                  standard SDRAM (see also ifdef REG)
-                                  non staggered refresh */
-                               /* 31:26  25 23  20 19 18 16 */
-                               /* 110110 00 111 0  0  00 1 */
-                               /* refresh_count=0x200
-                                  phisical interleaving disable
-                                  virtual interleaving enable */
-                               /* 15 14 13:0 */
-                               /* 1  0  0x200 */
-#endif
-
-#define CONFIG_SYS_DUART_IO            CONFIG_SYS_DEV2_SPACE
-#define CONFIG_SYS_DUART_CHAN          1               /* channel to use for console */
-#define CONFIG_SYS_INIT_CHAN1
-#define CONFIG_SYS_INIT_CHAN2
-
-#define SRAM_BASE              CONFIG_SYS_DEV0_SPACE
-#define SRAM_SIZE              0x00100000              /* 1 MB of sram */
-
-
-/*-----------------------------------------------------------------------
- * 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_HOST PCI_HOST_FORCE  /* select pci host function     */
-#define CONFIG_PCI_PNP                  /* do pci plug-and-play         */
-
-/* PCI MEMORY MAP section */
-#define CONFIG_SYS_PCI0_MEM_BASE       0x80000000
-#define CONFIG_SYS_PCI0_MEM_SIZE       _128M
-#define CONFIG_SYS_PCI1_MEM_BASE       0x88000000
-#define CONFIG_SYS_PCI1_MEM_SIZE       _128M
-
-#define CONFIG_SYS_PCI0_0_MEM_SPACE    (CONFIG_SYS_PCI0_MEM_BASE)
-#define CONFIG_SYS_PCI1_0_MEM_SPACE    (CONFIG_SYS_PCI1_MEM_BASE)
-
-
-/* PCI I/O MAP section */
-#define CONFIG_SYS_PCI0_IO_BASE        0xfa000000
-#define CONFIG_SYS_PCI0_IO_SIZE        _16M
-#define CONFIG_SYS_PCI1_IO_BASE        0xfb000000
-#define CONFIG_SYS_PCI1_IO_SIZE        _16M
-
-#define CONFIG_SYS_PCI0_IO_SPACE       (CONFIG_SYS_PCI0_IO_BASE)
-#define CONFIG_SYS_PCI0_IO_SPACE_PCI   0x00000000
-#define CONFIG_SYS_PCI1_IO_SPACE       (CONFIG_SYS_PCI1_IO_BASE)
-#define CONFIG_SYS_PCI1_IO_SPACE_PCI   0x00000000
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-
-#define CONFIG_SYS_NS16550_REG_SIZE    -4
-
-#define CONFIG_SYS_NS16550_CLK         3686400
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_DUART_IO + 0)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_DUART_IO + 0x20)
-
-/*----------------------------------------------------------------------
- * Initial BAT mappings
- */
-
-/* NOTES:
- * 1) GUARDED and WRITE_THRU not allowed in IBATS
- * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT
- */
-
-/* SDRAM */
-#define CONFIG_SYS_IBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_IBAT0U (CONFIG_SYS_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-#define CONFIG_SYS_DBAT0L (CONFIG_SYS_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
-#define CONFIG_SYS_DBAT0U CONFIG_SYS_IBAT0U
-
-/* init ram */
-#define CONFIG_SYS_IBAT1L  (CONFIG_SYS_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_IBAT1U  (CONFIG_SYS_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
-#define CONFIG_SYS_DBAT1L  CONFIG_SYS_IBAT1L
-#define CONFIG_SYS_DBAT1U  CONFIG_SYS_IBAT1U
-
-/* PCI0, PCI1 in one BAT */
-#define CONFIG_SYS_IBAT2L BATL_NO_ACCESS
-#define CONFIG_SYS_IBAT2U CONFIG_SYS_DBAT2U
-#define CONFIG_SYS_DBAT2L (CONFIG_SYS_PCI0_MEM_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
-#define CONFIG_SYS_DBAT2U (CONFIG_SYS_PCI0_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
-
-/* GT regs, bootrom, all the devices, PCI I/O */
-#define CONFIG_SYS_IBAT3L (CONFIG_SYS_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW)
-#define CONFIG_SYS_IBAT3U (CONFIG_SYS_MISC_REGION_BASE | BATU_VS | BATU_VP | BATU_BL_256M)
-#define CONFIG_SYS_DBAT3L (CONFIG_SYS_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE)
-#define CONFIG_SYS_DBAT3U CONFIG_SYS_IBAT3U
-
-/* I2C speed and slave address (for compatability) defaults */
-#define CONFIG_SYS_I2C_SPEED   400000
-#define CONFIG_SYS_I2C_SLAVE   0x7F
-
-/* I2C addresses for the two DIMM SPD chips */
-#ifndef CONFIG_EVB64260_750CX
-#define DIMM0_I2C_ADDR 0x56
-#define DIMM1_I2C_ADDR 0x54
-#else /* CONFIG_EVB64260_750CX - only has 1 DIMM */
-#define DIMM0_I2C_ADDR  0x54
-#define DIMM1_I2C_ADDR 0x54
-#endif
-
-/*
- * 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_EXTRA_FLASH_DEVICE  DEVICE3 /* extra flash at device 3 */
-#define CONFIG_SYS_EXTRA_FLASH_WIDTH   4       /* 32 bit */
-
-#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_CFI           1
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_SIZE         0x1000  /* Total Size of Environment Sector */
-#define CONFIG_ENV_SECT_SIZE   0x10000
-#define CONFIG_ENV_ADDR    (CONFIG_SYS_FLASH_BASE+CONFIG_SYS_MONITOR_LEN-CONFIG_ENV_SECT_SIZE)
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE      32      /* For all MPC74xx CPUs          */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CACHELINE_SHIFT     5       /* log base 2 of the above value */
-#endif
-
-/*-----------------------------------------------------------------------
- * L2CR setup -- make sure this is right for your board!
- * look in include/74xx_7xx.h for the defines used here
- */
-
-#define CONFIG_SYS_L2
-
-#ifdef CONFIG_750CX
-#define L2_INIT                0
-#else
-#define L2_INIT                (L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \
-                        L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT)
-#endif
-
-#define L2_ENABLE      (L2_INIT | L2CR_L2E)
-
-#define CONFIG_SYS_BOARD_ASM_INIT      1
-
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/FADS823.h b/include/configs/FADS823.h
deleted file mode 100644 (file)
index 50de4ea..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
- /*
-  * A collection of structures, addresses, and values associated with
-  * the Motorola 860T FADS board.  Copied from the MBX stuff.
-  * Magnus Damm added defines for 8xxrom and extended bd_info.
-  * Helmut Buchsbaum added bitvalues for BCSRx
-  *
-  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
-  */
-
-/*
- * 1999-nov-26: The FADS is using the following physical memorymap:
- *
- * ff020000 -> ff02ffff : pcmcia     io remapping
- * ff010000 -> ff01ffff : BCSR       connected to CS1, setup by U-Boot
- * ff000000 -> ff00ffff : IMAP       internal in the cpu
- * e0000000 -> f3ffffff : pcmcia     memory remapping by m8xx_pcmcia
- * fe000000 -> fe1fffff : flash      connected to CS0, setup by U-Boot
- * 00000000 -> nnnnnnnn : sdram/dram setup by U-Boot
-*/
-
-#define CONFIG_SYS_PCMCIA_IO_ADDR      0xff020000
-#define CONFIG_SYS_PCMCIA_IO_SIZE      0x10000
-#define CONFIG_SYS_PCMCIA_MEM_ADDR     0xe0000000
-#define CONFIG_SYS_PCMCIA_MEM_SIZE     0x10000
-#define CONFIG_SYS_IMMR                0xFF000000
-#define        CONFIG_SYS_SDRAM_SIZE           (4<<20) /* standard FADS has 4M */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x02800000
-#define BCSR_ADDR              ((uint) 0xff010000)
-#define FLASH_BASE0_PRELIM     0x02800000      /* FLASH bank #0        */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        CONFIG_SYS_TEXT_BASE    0xFE000000
-
-#define        CONFIG_ETHADDR          08:00:22:50:70:63       /* Ethernet address */
-#define CONFIG_ENV_OVERWRITE   1       /* Overwrite the environment */
-
-#define CONFIG_VIDEO           1       /* To enable video controller support */
-#define CONFIG_HARD_I2C                1       /* To I2C with hardware support */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/*#define CONFIG_PCMCIA                1       / * To enable PCMCIA support */
-
-/* Video related */
-
-#define CONFIG_VIDEO_LOGO                      1       /* Show the logo */
-#define CONFIG_VIDEO_ENCODER_AD7176            1       /* Enable this encoder */
-#define CONFIG_VIDEO_ENCODER_AD7176_ADDR       0x54    /* Default on fads */
-#define CONFIG_VIDEO_SIZE                      (2*1024*1024)
-/* #define CONFIG_VIDEO_ADDR (gd->bd->bi_memsize - CONFIG_VIDEO_SIZE) Frame buffer address */
-
-/* Wireless 56Khz 4PPM keyboard on SMCx */
-
-/*#define CONFIG_KEYBOARD              1 */
-#define CONFIG_WL_4PPM_KEYBOARD_SMC    0       /* SMC to use (0 indexed) */
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_MPC823          1
-#define CONFIG_MPC823FADS      1
-#define CONFIG_FADS            1
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                115200
-
-/* Set the CPU speed to 50Mhz on the FADS */
-
-#if 0
-#define MPC8XX_FACT    10                      /* Multiply by 10               */
-#define MPC8XX_XIN     5000000                 /* 5 MHz in     */
-#else
-#define MPC8XX_FACT    10                      /* Multiply by 10 */
-#define MPC8XX_XIN     5000000                 /* 5 MHz in */
-#define CONFIG_SYS_PLPRCR_MF   (MPC8XX_FACT-1) << 20   /* From 0 to 4095 */
-#endif
-#define MPC8XX_HZ ((MPC8XX_XIN) * (MPC8XX_FACT))
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#if 1
-#define CONFIG_BOOTDELAY       2       /* autoboot after 2 seconds     */
-#define CONFIG_LOADS_ECHO      0       /* Dont echoes received characters */
-#define CONFIG_BOOTARGS                ""
-#define CONFIG_BOOTCOMMAND                                                     \
-"bootp ;"                                                                      \
-"setenv bootargs console=tty0 console=ttyS0 "                                  \
-"root=/dev/nfs nfsroot=${serverip}:${rootpath} "                               \
-"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off ;"      \
-"bootm"
-#else
-#define CONFIG_BOOTDELAY       0       /* autoboot disabled            */
-#endif
-
-#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
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                             /* undef to save memory         */
-#define        CONFIG_SYS_PROMPT               ":>"            /* 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       0x00004000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x01000000      /* 0 ... 16 MB in DRAM  */
-
-#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.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR_SIZE           ((uint)(64 * 1024))
-
-/*-----------------------------------------------------------------------
- * 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
- * Also NOTE that it doesn't mean SDRAM - it means MEMORY.
- */
-#define CONFIG_SYS_FLASH_SIZE          ((uint)(8 * 1024 * 1024))       /* max 8Mbyte */
-#if 0
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (512 << 10)     /* Reserve 512 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_OFFSET              0x00040000      /* Offset of Environment Sector */
-#define        CONFIG_ENV_SIZE         0x40000 /* Total 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)
-
-/*-----------------------------------------------------------------------
- * 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 | CONFIG_SYS_PLPRCR_MF)
-
-/*-----------------------------------------------------------------------
- * 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)
-
- /*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER         0
-
-/* Because of the way the 860 starts up and assigns CS0 the
-* entire address space, we have to set the memory controller
-* differently.  Normally, you write the option register
-* first, and then enable the chip select by writing the
-* base register.  For CS0, you must write the base register
-* first, followed by the option register.
-*/
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-/* the other CS:s are determined by looking at parameters in BCSRx */
-
-#define BCSR_SIZE              ((uint)(64 * 1024))
-
-#define FLASH_BASE1_PRELIM     0x00000000      /* FLASH bank #1        */
-
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFE00000      /* OR addr mask */
-
-/* FLASH timing: ACS = 10, TRLX = 1, CSNT = 1, SCY = 3, EHTR = 0       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_ACS_DIV4 | OR_BI | OR_SCY_3_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)   /* 1 Mbyte until detected and only 1 Mbyte is needed*/
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-/* BCSRx - Board Control and Status Registers */
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  0xffff8110                                                                      /* 64Kbyte address space */
-#define CONFIG_SYS_BR1_PRELIM  ((BCSR_ADDR) | 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)
-
-#define CONFIG_SYS_MAMR                0x13a01114
-
-/* values according to the manual */
-
-#define        BCSR0                   ((uint) (BCSR_ADDR + 00))
-#define        BCSR1                   ((uint) (BCSR_ADDR + 0x04))
-#define        BCSR2                   ((uint) (BCSR_ADDR + 0x08))
-#define        BCSR3                   ((uint) (BCSR_ADDR + 0x0c))
-#define        BCSR4                   ((uint) (BCSR_ADDR + 0x10))
-
-/* FADS bitvalues by Helmut Buchsbaum
- * see MPC8xxADS User's Manual for a proper description
- * of the following structures
- */
-
-#define BCSR0_ERB       ((uint)0x80000000)
-#define BCSR0_IP        ((uint)0x40000000)
-#define BCSR0_BDIS      ((uint)0x10000000)
-#define BCSR0_BPS_MASK  ((uint)0x0C000000)
-#define BCSR0_ISB_MASK  ((uint)0x01800000)
-#define BCSR0_DBGC_MASK ((uint)0x00600000)
-#define BCSR0_DBPC_MASK ((uint)0x00180000)
-#define BCSR0_EBDF_MASK ((uint)0x00060000)
-
-#define BCSR1_FLASH_EN           ((uint)0x80000000)
-#define BCSR1_DRAM_EN            ((uint)0x40000000)
-#define BCSR1_ETHEN              ((uint)0x20000000)
-#define BCSR1_IRDEN              ((uint)0x10000000)
-#define BCSR1_FLASH_CFG_EN       ((uint)0x08000000)
-#define BCSR1_CNT_REG_EN_PROTECT ((uint)0x04000000)
-#define BCSR1_BCSR_EN            ((uint)0x02000000)
-#define BCSR1_RS232EN_1          ((uint)0x01000000)
-#define BCSR1_PCCEN              ((uint)0x00800000)
-#define BCSR1_PCCVCC0            ((uint)0x00400000)
-#define BCSR1_PCCVPP_MASK        ((uint)0x00300000)
-#define BCSR1_DRAM_HALF_WORD     ((uint)0x00080000)
-#define BCSR1_RS232EN_2          ((uint)0x00040000)
-#define BCSR1_SDRAM_EN           ((uint)0x00020000)
-#define BCSR1_PCCVCC1            ((uint)0x00010000)
-
-#define BCSR2_FLASH_PD_MASK      ((uint)0xF0000000)
-#define BCSR2_FLASH_PD_SHIFT    28
-#define BCSR2_DRAM_PD_MASK       ((uint)0x07800000)
-#define BCSR2_DRAM_PD_SHIFT      23
-#define BCSR2_EXTTOLI_MASK       ((uint)0x00780000)
-#define BCSR2_DBREVNR_MASK       ((uint)0x00030000)
-
-#define BCSR3_DBID_MASK          ((ushort)0x3800)
-#define BCSR3_CNT_REG_EN_PROTECT ((ushort)0x0400)
-#define BCSR3_BREVNR0            ((ushort)0x0080)
-#define BCSR3_FLASH_PD_MASK      ((ushort)0x0070)
-#define BCSR3_BREVN1             ((ushort)0x0008)
-#define BCSR3_BREVN2_MASK        ((ushort)0x0003)
-
-#define BCSR4_ETHLOOP            ((uint)0x80000000)
-#define BCSR4_TFPLDL             ((uint)0x40000000)
-#define BCSR4_TPSQEL             ((uint)0x20000000)
-#define BCSR4_SIGNAL_LAMP        ((uint)0x10000000)
-#ifdef CONFIG_MPC823
-#define BCSR4_USB_EN             ((uint)0x08000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860SAR
-#define BCSR4_UTOPIA_EN          ((uint)0x08000000)
-#endif /* CONFIG_MPC860SAR */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETH_EN            ((uint)0x08000000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_USB_SPEED          ((uint)0x04000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHCFG0           ((uint)0x04000000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_VCCO               ((uint)0x02000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHFDE            ((uint)0x02000000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_VIDEO_ON           ((uint)0x00800000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC823
-#define BCSR4_VDO_EKT_CLK_EN     ((uint)0x00400000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHCFG1           ((uint)0x00400000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_VIDEO_RST          ((uint)0x00200000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHRST            ((uint)0x00200000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_MODEM_EN           ((uint)0x00100000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC823
-#define BCSR4_DATA_VOICE         ((uint)0x00080000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC850
-#define BCSR4_DATA_VOICE         ((uint)0x00080000)
-#endif /* CONFIG_MPC850 */
-
-#define CONFIG_DRAM_50MHZ              1
-#define CONFIG_SDRAM_50MHZ
-
-/* We don't use the 8259.
-*/
-#define NR_8259_INTS   0
-
-/*
- * MPC8xx CPM Options
- */
-#define CONFIG_SCC_ENET 1
-#define CONFIG_SCC2_ENET 1
-#undef  CONFIG_FEC_ENET
-#undef  CONFIG_CPM_IIC
-#undef  CONFIG_UCODE_PATCH
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-/* PCMCIA configuration */
-
-#define PCMCIA_MAX_SLOTS    1
-
-#ifdef CONFIG_MPC860
-#define PCMCIA_SLOT_A 1
-#endif
-
-#define CONFIG_SYS_DAUGHTERBOARD
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/FADS850SAR.h b/include/configs/FADS850SAR.h
deleted file mode 100644 (file)
index d48460b..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
- /*
-  * A collection of structures, addresses, and values associated with
-  * the Motorola 860T FADS board.  Copied from the MBX stuff.
-  * Magnus Damm added defines for 8xxrom and extended bd_info.
-  * Helmut Buchsbaum added bitvalues for BCSRx
-  *
-  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
-  */
-
-/*
- * 1999-nov-26: The FADS is using the following physical memorymap:
- *
- * ff020000 -> ff02ffff : pcmcia
- * ff010000 -> ff01ffff : BCSR       connected to CS1, setup by 8xxrom
- * ff000000 -> ff00ffff : IMAP       internal in the cpu
- * fe000000 -> ffnnnnnn : flash      connected to CS0, setup by 8xxrom
- * 00000000 -> nnnnnnnn : sdram/dram setup by 8xxrom
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_MPC850          1
-#define CONFIG_MPC850SAR       1
-#define CONFIG_FADS                    1
-
-#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 MPC8XX_FACT    10                              /* Multiply by 10               */
-#define MPC8XX_XIN     50000000                /* 50 MHz in    */
-#else
-#define MPC8XX_FACT    12                              /* Multiply by 12 */
-#define MPC8XX_XIN     4000000                 /* 4 MHz in */
-#endif
-#define MPC8XX_HZ ((MPC8XX_XIN) * (MPC8XX_FACT))
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#if 1
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#define CONFIG_BOOTCOMMAND     "bootm 02880000"        /* autoboot command */
-#define CONFIG_BOOTARGS                " "
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-
-/*
- * 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               ":>"            /* 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       0x00004000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00800000      /* 0 ... 8 MB in DRAM   */
-
-#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.
- */
-/*-----------------------------------------------------------------------
- * Internal Memory Mapped Register
- */
-#define CONFIG_SYS_IMMR                        0xFF000000
-#define CONFIG_SYS_IMMR_SIZE           ((uint)(64 * 1024))
-
-/*-----------------------------------------------------------------------
- * 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
- * Also NOTE that it doesn't mean SDRAM - it means MEMORY.
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define        CONFIG_SYS_SDRAM_SIZE           (4<<20) /* standard FADS has 4M */
-#define CONFIG_SYS_FLASH_BASE          0x02800000
-#define CONFIG_SYS_FLASH_SIZE          ((uint)(8 * 1024 * 1024))       /* max 8Mbyte */
-#if 0
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 128 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (512 << 10)     /* Reserve 512 kB for Monitor   */
-#endif
-#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
- */
-#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_OFFSET              0x00040000      /* Offset of Environment Sector */
-#define        CONFIG_ENV_SIZE         0x40000 /* Total 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)
-
-/*-----------------------------------------------------------------------
- * 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      (((MPC8XX_FACT-1) << 20) | \
-                               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)
-
- /*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER         0
-
-/* Because of the way the 860 starts up and assigns CS0 the
-* entire address space, we have to set the memory controller
-* differently.  Normally, you write the option register
-* first, and then enable the chip select by writing the
-* base register.  For CS0, you must write the base register
-* first, followed by the option register.
-*/
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-/* the other CS:s are determined by looking at parameters in BCSRx */
-
-
-#define BCSR_ADDR              ((uint) 0x02100000)
-#define BCSR_SIZE              ((uint)(64 * 1024))
-
-#define FLASH_BASE0_PRELIM     0x02800000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0x00000000      /* FLASH bank #1        */
-
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFE00000      /* OR addr mask */
-
-/* FLASH timing: ACS = 10, TRLX = 1, CSNT = 1, SCY = 3, EHTR = 0       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_ACS_DIV4 | OR_BI | OR_SCY_3_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)   /* 1 Mbyte until detected and only 1 Mbyte is needed*/
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V )
-
-/* BCSRx - Board Control and Status Registers */
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  0xffff8110                                                                      /* 64Kbyte address space */
-#define CONFIG_SYS_BR1_PRELIM  ((BCSR_ADDR) | 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)
-
-#define CONFIG_SYS_MAMR                0x13a01114
-
-/* values according to the manual */
-
-
-#define PCMCIA_MEM_ADDR                ((uint)0xff020000)
-#define PCMCIA_MEM_SIZE                ((uint)(64 * 1024))
-
-#define        BCSR0                   ((uint) (BCSR_ADDR + 00))
-#define        BCSR1                   ((uint) (BCSR_ADDR + 0x04))
-#define        BCSR2                   ((uint) (BCSR_ADDR + 0x08))
-#define        BCSR3                   ((uint) (BCSR_ADDR + 0x0c))
-#define        BCSR4                   ((uint) (BCSR_ADDR + 0x10))
-
-/* FADS bitvalues by Helmut Buchsbaum
- * see MPC8xxADS User's Manual for a proper description
- * of the following structures
- */
-
-#define BCSR0_ERB       ((uint)0x80000000)
-#define BCSR0_IP        ((uint)0x40000000)
-#define BCSR0_BDIS      ((uint)0x10000000)
-#define BCSR0_BPS_MASK  ((uint)0x0C000000)
-#define BCSR0_ISB_MASK  ((uint)0x01800000)
-#define BCSR0_DBGC_MASK ((uint)0x00600000)
-#define BCSR0_DBPC_MASK ((uint)0x00180000)
-#define BCSR0_EBDF_MASK ((uint)0x00060000)
-
-#define BCSR1_FLASH_EN           ((uint)0x80000000)
-#define BCSR1_DRAM_EN            ((uint)0x40000000)
-#define BCSR1_ETHEN              ((uint)0x20000000)
-#define BCSR1_IRDEN              ((uint)0x10000000)
-#define BCSR1_FLASH_CFG_EN       ((uint)0x08000000)
-#define BCSR1_CNT_REG_EN_PROTECT ((uint)0x04000000)
-#define BCSR1_BCSR_EN            ((uint)0x02000000)
-#define BCSR1_RS232EN_1          ((uint)0x01000000)
-#define BCSR1_PCCEN              ((uint)0x00800000)
-#define BCSR1_PCCVCC0            ((uint)0x00400000)
-#define BCSR1_PCCVPP_MASK        ((uint)0x00300000)
-#define BCSR1_DRAM_HALF_WORD     ((uint)0x00080000)
-#define BCSR1_RS232EN_2          ((uint)0x00040000)
-#define BCSR1_SDRAM_EN           ((uint)0x00020000)
-#define BCSR1_PCCVCC1            ((uint)0x00010000)
-
-#define BCSR2_FLASH_PD_MASK      ((uint)0xF0000000)
-#define BCSR2_FLASH_PD_SHIFT    28
-#define BCSR2_DRAM_PD_MASK       ((uint)0x07800000)
-#define BCSR2_DRAM_PD_SHIFT      23
-#define BCSR2_EXTTOLI_MASK       ((uint)0x00780000)
-#define BCSR2_DBREVNR_MASK       ((uint)0x00030000)
-
-#define BCSR3_DBID_MASK          ((ushort)0x3800)
-#define BCSR3_CNT_REG_EN_PROTECT ((ushort)0x0400)
-#define BCSR3_BREVNR0            ((ushort)0x0080)
-#define BCSR3_FLASH_PD_MASK      ((ushort)0x0070)
-#define BCSR3_BREVN1             ((ushort)0x0008)
-#define BCSR3_BREVN2_MASK        ((ushort)0x0003)
-
-#define BCSR4_ETHLOOP            ((uint)0x80000000)
-#define BCSR4_TFPLDL             ((uint)0x40000000)
-#define BCSR4_TPSQEL             ((uint)0x20000000)
-#define BCSR4_SIGNAL_LAMP        ((uint)0x10000000)
-#ifdef CONFIG_MPC823
-#define BCSR4_USB_EN             ((uint)0x08000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860SAR
-#define BCSR4_UTOPIA_EN          ((uint)0x08000000)
-#endif /* CONFIG_MPC860SAR */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETH_EN            ((uint)0x08000000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_USB_SPEED          ((uint)0x04000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHCFG0           ((uint)0x04000000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_VCCO               ((uint)0x02000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHFDE            ((uint)0x02000000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_VIDEO_ON           ((uint)0x00800000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC823
-#define BCSR4_VDO_EKT_CLK_EN     ((uint)0x00400000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHCFG1           ((uint)0x00400000)
-#endif /* CONFIG_MPC860T */
-#ifdef CONFIG_MPC823
-#define BCSR4_VIDEO_RST          ((uint)0x00200000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETHRST            ((uint)0x00200000)
-#endif /* CONFIG_MPC860T */
-#define BCSR4_MODEM_EN           ((uint)0x00100000)
-#define BCSR4_DATA_VOICE         ((uint)0x00080000)
-
-#define CONFIG_DRAM_50MHZ              1
-#define CONFIG_SDRAM_50MHZ
-
-/* We don't use the 8259.
-*/
-#define NR_8259_INTS   0
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-
-/* PCMCIA configuration */
-
-#define PCMCIA_MAX_SLOTS    2
-
-#ifdef CONFIG_MPC860
-#define PCMCIA_SLOT_A 1
-#endif
-
-#define CONFIG_SYS_DAUGHTERBOARD
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/FADS860T.h b/include/configs/FADS860T.h
deleted file mode 100644 (file)
index ed7484b..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  * A collection of structures, addresses, and values associated with
-  * the Motorola 860T FADS board.  Copied from the MBX stuff.
-  * Magnus Damm added defines for 8xxrom and extended bd_info.
-  * Helmut Buchsbaum added bitvalues for BCSRx
-  *
-  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
-  *
-  * Modified by, Yuli Barcohen, Arabella Software Ltd., yuli@arabellasw.com
-  *
-  * Values common to all FADS family boards are in board/fads/fads.h
-  */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* board type */
-#define CONFIG_FADS            1       /* old/new FADS + new ADS */
-
-/* processor type */
-#define CONFIG_MPC860T         1       /* 860T */
-
-#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                38400
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-
-#if 0 /* old FADS */
-# define CONFIG_SYS_8XX_FACT           12      /* 4 MHz oscillator on EXTCLK */
-#else /* new FADS */
-# define CONFIG_SYS_8XX_FACT           10      /* 5 MHz oscillator on EXTCLK */
-#endif
-
-#define CONFIG_SYS_PLPRCR  (((CONFIG_SYS_8XX_FACT-1) << PLPRCR_MF_SHIFT) |     \
-               PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-#define CONFIG_DRAM_50MHZ              1
-#define CONFIG_SDRAM_50MHZ              1
-
-#include "../../board/fads/fads.h"
-
-#ifdef USE_REAL_FLASH_VALUES
-/*
- * These values fit our FADS860T ...
- * The "default" behaviour with 1Mbyte initial doesn't work for us!
- */
-#undef CONFIG_SYS_OR0_PRELIM
-#undef CONFIG_SYS_BR0_PRELIM
-#define CONFIG_SYS_OR0_PRELIM  0x0FFC00D34 /* Real values for the board */
-#define CONFIG_SYS_BR0_PRELIM  0x02800001  /* Real values for the board */
-#endif
-
-#define CONFIG_SYS_DAUGHTERBOARD /* FADS has processor-specific daughterboard */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/GENIETV.h b/include/configs/GENIETV.h
deleted file mode 100644 (file)
index 6a34b12..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
- /*
-  * A collection of structures, addresses, and values associated with
-  * the Motorola 860T FADS board.  Copied from the MBX stuff.
-  * Magnus Damm added defines for 8xxrom and extended bd_info.
-  * Helmut Buchsbaum added bitvalues for BCSRx
-  *
-  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
-  */
-
-/*
- * The GENIETV is using the following physical memorymap (copied from
- * the FADS configuration):
- *
- * ff020000 -> ff02ffff : pcmcia
- * ff010000 -> ff01ffff : BCSR       connected to CS1, setup by 8xxROM
- * ff000000 -> ff00ffff : IMAP       internal in the cpu
- * 30000000 -> 300fffff : flash      connected to CS0
- * 00000000 -> nnnnnnnn : sdram      setup by U-Boot
- *
- * CS pins are connected as follows:
- *
- * CS0 -512Kb boot flash
- * CS1 - SDRAM #1
- * CS2 - SDRAM #2
- * CS3 - Flash #1
- * CS4 - Flash #2
- * CS5 - Lon (if present)
- * CS6 - PCMCIA #1
- * CS7 - PCMCIA #2
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        CONFIG_SYS_TEXT_BASE    0x00000000
-
-#define        CONFIG_ETHADDR          08:00:22:50:70:63       /* Ethernet address */
-#define CONFIG_ENV_OVERWRITE   1       /* Overwrite the environment */
-
-#define CONFIG_SYS_ALLOC_DPRAM                 /* Use dynamic DPRAM allocation */
-
-#define CONFIG_SYS_AUTOLOAD            "n"     /* No autoload */
-
-/*#define CONFIG_VIDEO         1       /  To enable the video initialization */
-/*#define CONFIG_VIDEO_ADDR    0x00200000 */
-/*#define CONFIG_HARD_I2C      1       /  I2C with hardware support */
-/*#define CONFIG_PCMCIA                1       /  To enable the PCMCIA initialization */
-
-/*#define CONFIG_SYS_PCMCIA_IO_ADDR    0xff020000 */
-/*#define CONFIG_SYS_PCMCIA_IO_SIZE    0x10000 */
-/*#define CONFIG_SYS_PCMCIA_MEM_ADDR   0xe0000000 */
-/*#define CONFIG_SYS_PCMCIA_MEM_SIZE   0x10000 */
-
-/* Video related */
-
-/*#define CONFIG_VIDEO_LOGO                    1       /  Show the logo */
-/*#define CONFIG_VIDEO_ENCODER_AD7177          1       /  Enable this encoder */
-/*#define CONFIG_VIDEO_ENCODER_AD7177_ADDR     0xF4    /  ALSB to ground */
-
-/* Wireless 56Khz 4PPM keyboard on SMCx */
-
-/*#define CONFIG_KEYBOARD              0 */
-/*#define CONFIG_WL_4PPM_KEYBOARD_SMC  0       /  SMC to use (0 indexed) */
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#include <mpc8xx_irq.h>
-
-#define CONFIG_GENIETV         1
-#define CONFIG_MPC823          1
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                9600
-
-#define MPC8XX_FACT    12                      /* Multiply by 12       */
-#define MPC8XX_XIN     5000000                 /* 4 MHz clock          */
-
-#define MPC8XX_HZ      ((MPC8XX_XIN) * (MPC8XX_FACT))
-#define CONFIG_SYS_PLPRCR_MF   ((MPC8XX_FACT-1) << 20)
-#define CONFIG_8xx_GCLK_FREQ   MPC8XX_HZ       /* Force it - dont measure it */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#if 1
-#define CONFIG_BOOTDELAY       1       /* autoboot after 2 seconds     */
-#define CONFIG_LOADS_ECHO      0       /* Dont echoes received characters */
-#define CONFIG_BOOTARGS                ""
-#define CONFIG_BOOTCOMMAND                                                     \
-"bootp; tftp; "                                                                        \
-"setenv bootargs console=tty0 console=ttyS0 "                                  \
-"root=/dev/nfs nfsroot=${serverip}:${rootpath} "                               \
-"ip=${ipaddr}:${serverip}:${gatewayip}:${subnetmask}:${hostname}:eth0:off ;"   \
-"bootm "
-#else
-#define CONFIG_BOOTDELAY       0       /* autoboot disabled            */
-#endif
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-
-/*
- * 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
- */
-#define        CONFIG_SYS_LONGHELP                             /* undef to save memory         */
-#define        CONFIG_SYS_PROMPT               ":>"            /* 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              8               /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00004000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00800000      /* 0 ... 8 MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00100000      /* default load address */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 4800, 9600, 19200, 38400, 57600, 115200 }
-
-/*
- * 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
-#define CONFIG_SYS_IMMR_SIZE           ((uint)(64 * 1024))
-
-/*-----------------------------------------------------------------------
- * 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
- * Also NOTE that it doesn't mean SDRAM - it means MEMORY.
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000
-#define CONFIG_SYS_FLASH_BASE          0x02800000
-#define CONFIG_SYS_FLASH_SIZE          ((uint)(8 * 1024 * 1024))       /* max 8Mbyte */
-#if 0
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 128 kB for Monitor   */
-#else
-#define        CONFIG_SYS_MONITOR_LEN          (512 << 10)     /* Reserve 512 kB for Monitor   */
-#endif
-#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
- */
-#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_OFFSET              0x10000 /* Offset of Environment Sector         */
-#define        CONFIG_ENV_SIZE         0x10000 /* Total Size of Environment Sector (64k)*/
-
-/* values according to the manual */
-
-/*-----------------------------------------------------------------------
- * 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)
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC10)
-
-/*-----------------------------------------------------------------------
- * 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)
-
-/*-----------------------------------------------------------------------
- * 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)
- */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST | CONFIG_SYS_PLPRCR_MF)
-
-/*-----------------------------------------------------------------------
- * 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)
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER         0
-
-/* Because of the way the 860 starts up and assigns CS0 the
-* entire address space, we have to set the memory controller
-* differently.  Normally, you write the option register
-* first, and then enable the chip select by writing the
-* base register.  For CS0, you must write the base register
-* first, followed by the option register.
-*/
-
-/*
- * Init Memory Controller:
- *
- * BR0 and OR0(FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0x02800000      /* FLASH bank #0                */
-
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask         */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFF800000      /* OR addr mask (512Kb) */
-
-/* FLASH timing */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_ACS_DIV2 | OR_BI | \
-                               OR_SCY_15_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)          /* 0xfff80ff4 */
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V | BR_PS_8)     /* 0x02800401 */
-
-/*
- * BR1/2 and OR1/2 (SDRAM)
-*/
-
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000A00
-
-#define SDRAM_MAX_SIZE         0x04000000      /* 64Mb bank */
-#define SDRAM_BASE1_PRELIM     0x00000000      /* First bank */
-#define SDRAM_BASE2_PRELIM     0x10000000      /* Second bank */
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MBMR_PTB            0x5d            /* 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
-/*
- * MBMR settings for SDRAM
- */
-
-/* 8 column SDRAM */
-#define CONFIG_SYS_MBMR_8COL   ((CONFIG_SYS_MBMR_PTB << MAMR_PTA_SHIFT)  | MAMR_PTAE | \
-                       MAMR_G0CLA_A11 | MAMR_RLFA_1X | MAMR_WLFA_1X \
-                       | MAMR_TLFA_4X) /* 0x5d802114 */
-
-/* values according to the manual */
-
-#define CONFIG_DRAM_50MHZ              1
-#define CONFIG_SDRAM_50MHZ
-
-/* We don't use the 8259.
-*/
-#define NR_8259_INTS   0
-
-/*
- * MPC8xx CPM Options
- */
-#define CONFIG_SCC_ENET 1
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-/* PCMCIA configuration */
-
-#define PCMCIA_MAX_SLOTS    1
-#define PCMCIA_SLOT_B 1
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/MBX.h b/include/configs/MBX.h
deleted file mode 100644 (file)
index 96edd44..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Configuation settings for the MBX8xx board.
- *
- * -----------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- */
-/*
- * Changed 2002-10-01
- * Added PCMCIA defines mostly taken from other U-Boot boards that
- * have PCMCIA already working.  If you find any bugs, incorrect assumptions
- * feel free to fix them yourself and submit a patch.
- * Rod Boyce <rod_boyce@stratexnet.com.
- */
-/*
- * 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_MBX             1       /* ...on an MBX module          */
-
-#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
-/* Define this to use the PCI bus */
-#undef CONFIG_USE_PCI
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-#define CONFIG_8xx_GCLK_FREQ    (50000000UL)
-#if 1
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-#define CONFIG_BOOTCOMMAND     "bootm 20000" /* 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            */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_PCMCIA
-#define CONFIG_CMD_IDE
-
-
-#define CONFIG_DOS_PARTITION
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#undef CONFIG_SYS_HUSH_PARSER                  /* Hush parse for U-Boot        */
-#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.
- */
-
-/*-----------------------------------------------------------------------
- * Physical memory map as defined by the MBX PGM
- */
-#define CONFIG_SYS_IMMR                0xFA200000 /* Internal Memory Mapped Register*/
-#define CONFIG_SYS_NVRAM_BASE          0xFA000000 /* NVRAM                          */
-#define CONFIG_SYS_NVRAM_OR            0xffe00000 /* w/o speed dependent flags!!    */
-#define CONFIG_SYS_CSR_BASE            0xFA100000 /* Control/Status Registers       */
-#define CONFIG_SYS_PCIMEM_BASE         0x80000000 /* PCI I/O and Memory Spaces      */
-#define CONFIG_SYS_PCIMEM_OR           0xA0000108
-#define CONFIG_SYS_PCIBRIDGE_BASE      0xFA210000 /* PCI-Bus Bridge Registers       */
-#define CONFIG_SYS_PCIBRIDGE_OR        0xFFFF0108
-
-/*-----------------------------------------------------------------------
- * 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_VPD_SIZE       256 /* size in bytes reserved for vpd buffer */
-#define CONFIG_SYS_INIT_VPD_OFFSET     (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_VPD_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      (CONFIG_SYS_INIT_VPD_OFFSET-8)
-
-/*-----------------------------------------------------------------------
- * Offset in DPMEM where we keep the VPD data
- */
-#define CONFIG_SYS_DPRAMVPD            (CONFIG_SYS_INIT_VPD_OFFSET - 0x2000)
-
-/*-----------------------------------------------------------------------
- * 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         (256 << 10)     /* Reserve 256 kB for Monitor   */
-#endif
-#undef CONFIG_SYS_MONITOR_BASE /* 0x200000        to run U-Boot from RAM */
-#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      16      /* 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)      */
-
-/*-----------------------------------------------------------------------
- * NVRAM Configuration
- *
- * Note: the MBX is special because there is already a firmware on this
- * board: EPPC-Bug from Motorola. To avoid collisions in NVRAM Usage, we
- * access the NVRAM at the offset 0x1000.
- */
-#define CONFIG_ENV_IS_IN_NVRAM 1       /* turn on NVRAM env feature */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_NVRAM_BASE + 0x1000)
-#define CONFIG_ENV_SIZE                0x1000
-
-/*-----------------------------------------------------------------------
- * 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)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-/* #define CONFIG_SYS_SIUMCR   (SIUMCR_DBGC11 | SIUMCR_DPC | SIUMCR_MLRC10 | SIUMCR_SEME) */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DPC | SIUMCR_MLRC11 | SIUMCR_SEME | SIUMCR_BSC )
-
-/*-----------------------------------------------------------------------
- * 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 | 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 - 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_RTDIV | SCCR_RTSEL)
-#define CONFIG_SYS_SCCR        SCCR_TBS
-
-/*-----------------------------------------------------------------------
- * 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_PCMCIA_SLOT_A   1
-
-
-/*-----------------------------------------------------------------------
- * 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
-
-/*-----------------------------------------------------------------------
- * Debug Entry Mode
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER 0
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/MBX860T.h b/include/configs/MBX860T.h
deleted file mode 100644 (file)
index 74f44df..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
- /*
-  * A collection of structures, addresses, and values associated with
-  * the Motorola 860T MBX board.
-  * Copied from the FADS stuff, which was originally copied from the MBX stuff!
-  * Magnus Damm added defines for 8xxrom and extended bd_info.
-  * Helmut Buchsbaum added bitvalues for BCSRx
-  * Rob Taylor coverted it back to MBX
-  *
-  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
-  */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#include <mpc8xx_irq.h>
-
-#define CONFIG_MPC860          1
-#define CONFIG_MPC860T         1
-#define CONFIG_MBX             1
-
-#define        CONFIG_SYS_TEXT_BASE    0xfe000000
-
-#define CONFIG_8xx_CPUCLOCK    40
-#define CONFIG_8xx_BUSCLOCK    (CONFIG_8xx_CPUCLOCK)
-#define TARGET_SYSTEM_FREQUENCY 40
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#define CONFIG_BAUDRATE                9600
-
-#define MPC8XX_FACT    10                              /* Multiply by 10               */
-#define MPC8XX_XIN     40000000                /* 50 MHz in    */
-#define MPC8XX_HZ ((MPC8XX_XIN) * (MPC8XX_FACT))
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#if 1
-#define CONFIG_8xx_BOOTDELAY   -1      /* autoboot disabled            */
-#define CONFIG_8xx_TFTP_MODE
-#else
-#define CONFIG_8xx_BOOTDELAY   5       /* autoboot after 5 seconds     */
-#undef CONFIG_8xx_TFTP_MODE
-#endif
-
-#define CONFIG_MISC_INIT_R
-
-#define CONFIG_DRAM_SPEED      (CONFIG_8xx_BUSCLOCK)   /* MHz          */
-#define CONFIG_BOOTCOMMAND     "bootm FE020000"        /* autoboot command */
-#define CONFIG_BOOTARGS                " "
-/*
- * Miscellaneous configurable options
- */
-#undef CONFIG_SYS_LONGHELP                     /* undef to save memory         */
-#define        CONFIG_SYS_PROMPT               ":>"            /* 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      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         0x0800000       /* 4 ... 8 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                        0xFFA00000
-#define CONFIG_SYS_IMMR_SIZE           ((uint)(64 * 1024))
-#define CONFIG_SYS_NVRAM_BASE          0xFA000000 /* NVRAM                          */
-#define CONFIG_SYS_NVRAM_OR            0xffe00000 /* w/o speed dependent flags!!    */
-#define CONFIG_SYS_CSR_BASE            0xFA100000 /* Control/Status Registers       */
-#define CONFIG_SYS_PCIMEM_BASE         0x80000000 /* PCI I/O and Memory Spaces      */
-#define CONFIG_SYS_PCIMEM_OR           0xA0000108
-#define CONFIG_SYS_PCIBRIDGE_BASE      0xFA210000 /* PCI-Bus Bridge Registers       */
-#define CONFIG_SYS_PCIBRIDGE_OR        0xFFFF0108
-
-/*-----------------------------------------------------------------------
- * 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_VPD_SIZE        256 /* size in bytes reserved for vpd buffer */
-#define CONFIG_SYS_INIT_VPD_OFFSET     (CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_VPD_SIZE)
-#define        CONFIG_SYS_INIT_SP_OFFSET       (CONFIG_SYS_INIT_VPD_OFFSET-8)
-
-/*-----------------------------------------------------------------------
- * Offset in DPMEM where we keep the VPD data
- */
-#define CONFIG_SYS_DPRAMVPD            (CONFIG_SYS_INIT_VPD_OFFSET - 0x2000)
-
-/*-----------------------------------------------------------------------
- * 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          0x00000000
-/*0xFE000000*/
-#define CONFIG_SYS_FLASH_SIZE          ((uint)(8 * 1024 * 1024))       /* max 8Mbyte */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_HWINFO_ADDR         (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN - CONFIG_SYS_HWINFO_LEN)
-#define        CONFIG_SYS_MALLOC_LEN           (256 << 10)     /* 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     4       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      16      /* 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)      */
-
-/*-----------------------------------------------------------------------
- * NVRAM Configuration
- *
- * Note: the MBX is special because there is already a firmware on this
- * board: EPPC-Bug from Motorola. To avoid collisions in NVRAM Usage, we
- * access the NVRAM at the offset 0x1000.
- */
-#define CONFIG_ENV_IS_IN_NVRAM 1       /* turn on NVRAM env feature */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_NVRAM_BASE + 0x1000)
-#define CONFIG_ENV_SIZE                0x1000
-
-/*-----------------------------------------------------------------------
- * 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)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           11-6
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC11 | SIUMCR_DPC | SIUMCR_MLRC10 | SIUMCR_SEME)
-
-/*-----------------------------------------------------------------------
- * 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 | 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 - 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_RTDIV | SCCR_RTSEL)
-#define CONFIG_SYS_SCCR        SCCR_TBS
-
- /*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER         0
-
-/* Because of the way the 860 starts up and assigns CS0 the
-* entire address space, we have to set the memory controller
-* differently.  Normally, you write the option register
-* first, and then enable the chip select by writing the
-* base register.  For CS0, you must write the base register
-* first, followed by the option register.
-*/
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-/* the other CS:s are determined by looking at parameters in BCSRx */
-
-
-#define BCSR_ADDR              ((uint) 0xFF010000)
-#define BCSR_SIZE              ((uint)(64 * 1024))
-
-#define FLASH_BASE0_PRELIM     0xFE000000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFF010000      /* FLASH bank #0        */
-
-#define CONFIG_SYS_REMAP_OR_AM         0x80000000      /* OR addr mask */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFFF00000      /* OR addr mask */
-
-/* FLASH timing: ACS = 10, TRLX = 1, CSNT = 1, SCY = 3, EHTR = 0       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_ACS_DIV4 | OR_BI | OR_SCY_3_CLK | OR_TRLX)
-
-#define CONFIG_SYS_OR0_REMAP   (CONFIG_SYS_REMAP_OR_AM  | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_OR0_PRELIM  (0xFF800000 | OR_CSNT_SAM | OR_BI | OR_SCY_3_CLK)   /* 1 Mbyte until detected and only 1 Mbyte is needed*/
-#define CONFIG_SYS_BR0_PRELIM  (0xFE000000 | BR_V )
-
-/* BCSRx - Board Control and Status Registers */
-#define CONFIG_SYS_OR1_REMAP   CONFIG_SYS_OR0_REMAP
-#define CONFIG_SYS_OR1_PRELIM  0xFFC00000 | OR_ACS_DIV4
-#define CONFIG_SYS_BR1_PRELIM  (0x00000000 | BR_MS_UPMA | 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)
-
-#define CONFIG_SYS_MAMR                0x13821000
-
-/* values according to the manual */
-
-
-#define PCMCIA_MEM_ADDR                ((uint)0xff020000)
-#define PCMCIA_MEM_SIZE                ((uint)(64 * 1024))
-
-#define        BCSR0                   ((uint) (BCSR_ADDR + 00))
-#define        BCSR1                   ((uint) (BCSR_ADDR + 0x04))
-#define        BCSR2                   ((uint) (BCSR_ADDR + 0x08))
-#define        BCSR3                   ((uint) (BCSR_ADDR + 0x0c))
-#define        BCSR4                   ((uint) (BCSR_ADDR + 0x10))
-
-/* FADS bitvalues by Helmut Buchsbaum
- * see MPC8xxADS User's Manual for a proper description
- * of the following structures
- */
-
-#define BCSR0_ERB       ((uint)0x80000000)
-#define BCSR0_IP        ((uint)0x40000000)
-#define BCSR0_BDIS      ((uint)0x10000000)
-#define BCSR0_BPS_MASK  ((uint)0x0C000000)
-#define BCSR0_ISB_MASK  ((uint)0x01800000)
-#define BCSR0_DBGC_MASK ((uint)0x00600000)
-#define BCSR0_DBPC_MASK ((uint)0x00180000)
-#define BCSR0_EBDF_MASK ((uint)0x00060000)
-
-#define BCSR1_FLASH_EN           ((uint)0x80000000)
-#define BCSR1_DRAM_EN            ((uint)0x40000000)
-#define BCSR1_ETHEN              ((uint)0x20000000)
-#define BCSR1_IRDEN              ((uint)0x10000000)
-#define BCSR1_FLASH_CFG_EN       ((uint)0x08000000)
-#define BCSR1_CNT_REG_EN_PROTECT ((uint)0x04000000)
-#define BCSR1_BCSR_EN            ((uint)0x02000000)
-#define BCSR1_RS232EN_1          ((uint)0x01000000)
-#define BCSR1_PCCEN              ((uint)0x00800000)
-#define BCSR1_PCCVCC0            ((uint)0x00400000)
-#define BCSR1_PCCVPP_MASK        ((uint)0x00300000)
-#define BCSR1_DRAM_HALF_WORD     ((uint)0x00080000)
-#define BCSR1_RS232EN_2          ((uint)0x00040000)
-#define BCSR1_SDRAM_EN           ((uint)0x00020000)
-#define BCSR1_PCCVCC1            ((uint)0x00010000)
-
-#define BCSR2_FLASH_PD_MASK      ((uint)0xF0000000)
-#define BCSR2_DRAM_PD_MASK       ((uint)0x07800000)
-#define BCSR2_DRAM_PD_SHIFT      (23)
-#define BCSR2_EXTTOLI_MASK       ((uint)0x00780000)
-#define BCSR2_DBREVNR_MASK       ((uint)0x00030000)
-
-#define BCSR3_DBID_MASK          ((ushort)0x3800)
-#define BCSR3_CNT_REG_EN_PROTECT ((ushort)0x0400)
-#define BCSR3_BREVNR0            ((ushort)0x0080)
-#define BCSR3_FLASH_PD_MASK      ((ushort)0x0070)
-#define BCSR3_BREVN1             ((ushort)0x0008)
-#define BCSR3_BREVN2_MASK        ((ushort)0x0003)
-
-#define BCSR4_ETHLOOP            ((uint)0x80000000)
-#define BCSR4_TFPLDL             ((uint)0x40000000)
-#define BCSR4_TPSQEL             ((uint)0x20000000)
-#define BCSR4_SIGNAL_LAMP        ((uint)0x10000000)
-#ifdef CONFIG_MPC823
-#define BCSR4_USB_EN             ((uint)0x08000000)
-#endif /* CONFIG_MPC823 */
-#ifdef CONFIG_MPC860SAR
-#define BCSR4_UTOPIA_EN          ((uint)0x08000000)
-#endif /* CONFIG_MPC860SAR */
-#ifdef CONFIG_MPC860T
-#define BCSR4_FETH_EN            ((uint)0x08000000)
-#endif /* CONFIG_MPC860T */
-#define BCSR4_USB_SPEED          ((uint)0x04000000)
-#define BCSR4_VCCO               ((uint)0x02000000)
-#define BCSR4_VIDEO_ON           ((uint)0x00800000)
-#define BCSR4_VDO_EKT_CLK_EN     ((uint)0x00400000)
-#define BCSR4_VIDEO_RST          ((uint)0x00200000)
-#define BCSR4_MODEM_EN           ((uint)0x00100000)
-#define BCSR4_DATA_VOICE         ((uint)0x00080000)
-
-#define CONFIG_DRAM_40MHZ              1
-
-#ifdef CONFIG_MPC860T
-
-/* Interrupt level assignments.
-*/
-#define FEC_INTERRUPT  SIU_LEVEL1      /* FEC interrupt */
-
-#endif /* CONFIG_MPC860T */
-
-/* We don't use the 8259.
-*/
-#define NR_8259_INTS   0
-
-#define CONFIG_CMD_NET
-/*
- * MPC8xx CPM Options
- */
-#define CONFIG_SCC_ENET 1
-#define CONFIG_SCC1_ENET 1
-#define CONFIG_FEC_ENET 1
-#undef  CONFIG_CPM_IIC
-#undef  CONFIG_UCODE_PATCH
-
-
-#define CONFIG_DISK_SPINUP_TIME 1000000
-
-
-/* PCMCIA configuration */
-
-#define PCMCIA_MAX_SLOTS    2
-
-#ifdef CONFIG_MPC860
-#define PCMCIA_SLOT_A 1
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/MOUSSE.h b/include/configs/MOUSSE.h
deleted file mode 100644 (file)
index e84d12f..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * (C) Copyright 2000, 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001
- * James F. Dougherty (jfd@cs.stanford.edu)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- *
- * Configuration settings for the MOUSSE board.
- * See also: http://www.vooha.com/
- *
- */
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * 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_MOUSSE       1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF00000
-#define        CONFIG_SYS_LDSCRIPT     "board/mousse/u-boot.lds"
-
-#define CONFIG_SYS_ADDR_MAP_B      1
-
-#define CONFIG_CONS_INDEX   1
-#define CONFIG_BAUDRATE     9600
-#if 1
-#define CONFIG_BOOTCOMMAND  "tftp 100000 vmlinux.img;bootm"    /* autoboot command */
-#else
-#define CONFIG_BOOTCOMMAND  "bootm ffe10000"
-#endif
-#define CONFIG_BOOTARGS      "console=ttyS0 root=/dev/nfs rw nfsroot=209.128.93.133:/boot nfsaddrs=209.128.93.133:209.128.93.138"
-#define CONFIG_BOOTDELAY     3
-
-
-/*
- * 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_DATE
-
-
-#define CONFIG_ENV_OVERWRITE 1
-#define CONFIG_ETH_ADDR      "00:10:18:10:00:06"
-
-#define CONFIG_DOS_PARTITION  1 /* MSDOS bootable partitiion support */
-
-#include "../board/mousse/mousse.h"
-
-/*
- * Miscellaneous configurable options
- */
-#undef 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     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         */
-
-/*-----------------------------------------------------------------------
- * 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
-
-#ifdef DEBUG
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_SDRAM_BASE
-#else
-#define CONFIG_SYS_MONITOR_BASE    CONFIG_SYS_FLASH_BASE
-#endif
-
-#ifdef DEBUG
-#define CONFIG_SYS_MONITOR_LEN     (4 << 20)   /* lots of mem ... */
-#else
-#define CONFIG_SYS_MONITOR_LEN     (512 << 10) /* 512K PLCC bootrom */
-#endif
-#define CONFIG_SYS_MALLOC_LEN      (2*(4096 << 10))    /* 2*4096kB for malloc()  */
-
-#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
-
-#define CONFIG_SYS_FLASH_BASE      0xFFF00000
-#define CONFIG_SYS_FLASH_SIZE      ((uint)(512 * 1024))
-#define CONFIG_SYS_RESET_ADDRESS   0xFFF00100
-#define FLASH_BASE0_PRELIM  0xFFF00000  /* 512K PLCC FLASH/AM29F040*/
-#define FLASH_BASE0_SIZE    0x80000     /* 512K */
-#define FLASH_BASE1_PRELIM  0xFFE10000  /* AMD 29LV160DB
-                                          1MB - 64K FLASH0 SEG =960K
-                                          (size=0xf0000)*/
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-
-#define CONFIG_SYS_NS16550_CLK         18432000
-
-#define CONFIG_SYS_NS16550_COM1        0xFFE08080
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in DPRAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_MONITOR_LEN
-#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
-
-/*
- * 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  /* external frequency to pll */
-#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER  2
-
-#define CONFIG_SYS_ETH_DEV_FN       0x00
-#define CONFIG_SYS_ETH_IOBASE       0x00104000
-
-
-       /* Bit-field values for MCCR1.
-        */
-#define CONFIG_SYS_ROMNAL          8
-#define CONFIG_SYS_ROMFAL          8
-
-       /* Bit-field values for MCCR2.
-        */
-#define CONFIG_SYS_REFINT          0xf5     /* Refresh interval               */
-
-       /* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4.
-        */
-#define CONFIG_SYS_BSTOPRE         0x79
-
-#ifdef INCLUDE_ECC
-#define USE_ECC                                1
-#else /* INCLUDE_ECC */
-#define USE_ECC                                0
-#endif /* INCLUDE_ECC */
-
-
-       /* Bit-field values for MCCR3.
-        */
-#define CONFIG_SYS_REFREC          8       /* Refresh to activate interval   */
-#define CONFIG_SYS_RDLAT           (4+USE_ECC)   /* Data latancy from read command */
-
-       /* Bit-field values for MCCR4.
-        */
-#define CONFIG_SYS_PRETOACT        3       /* Precharge to activate interval */
-#define CONFIG_SYS_ACTTOPRE        5       /* Activate to Precharge interval */
-#define CONFIG_SYS_SDMODE_CAS_LAT  3       /* 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-USE_ECC)
-
-/* 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_RAM_SIZE        0x04000000  /* 64MB */
-
-
-#define CONFIG_SYS_BANK0_START     0x00000000
-#define CONFIG_SYS_BANK0_END       (CONFIG_SYS_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            0x7f
-
-
-#define CONFIG_SYS_PGMAX           0x32 /* how long the 8240 reatins the currently accessed page in memory
-                                   see 8240 book for details*/
-#define PCI_MEM_SPACE1_START   0x80000000
-#define PCI_MEM_SPACE2_START   0xfd000000
-
-/* IBAT/DBAT Configuration */
-/* Ram: 64MB, starts at address-0, r/w instruction/data */
-#define CONFIG_SYS_IBAT0U      (CONFIG_SYS_SDRAM_BASE | BATU_BL_64M | BATU_VS | BATU_VP)
-#define CONFIG_SYS_IBAT0L      (CONFIG_SYS_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
-#define CONFIG_SYS_DBAT0U      CONFIG_SYS_IBAT0U
-#define CONFIG_SYS_DBAT0L      CONFIG_SYS_IBAT0L
-
-/* MPLD/Port-X I/O Space : data and instruction read/write,  cache-inhibit */
-#define CONFIG_SYS_IBAT1U      (PORTX_DEV_BASE | BATU_BL_128M | BATU_VS | BATU_VP)
-#if 0
-#define CONFIG_SYS_IBAT1L      (PORTX_DEV_BASE | BATL_PP_10  | BATL_MEMCOHERENCE |\
-                        BATL_WRITETHROUGH | BATL_CACHEINHIBIT)
-#else
-#define CONFIG_SYS_IBAT1L      (PORTX_DEV_BASE | BATL_PP_10 |BATL_CACHEINHIBIT)
-#endif
-#define CONFIG_SYS_DBAT1U      CONFIG_SYS_IBAT1U
-#define CONFIG_SYS_DBAT1L      CONFIG_SYS_IBAT1L
-
-/* PCI Memory region 1: 0x8XXX_XXXX PCI Mem space: EUMBAR, etc - 16MB */
-#define CONFIG_SYS_IBAT2U      (PCI_MEM_SPACE1_START|BATU_BL_16M | BATU_VS | BATU_VP)
-#define CONFIG_SYS_IBAT2L      (PCI_MEM_SPACE1_START|BATL_PP_10 | BATL_GUARDEDSTORAGE|BATL_CACHEINHIBIT)
-#define CONFIG_SYS_DBAT2U      CONFIG_SYS_IBAT2U
-#define CONFIG_SYS_DBAT2L      CONFIG_SYS_IBAT2L
-
-/* PCI Memory region 2: PCI Devices in 0xFD space */
-#define CONFIG_SYS_IBAT3U      (PCI_MEM_SPACE2_START|BATU_BL_16M | BATU_VS | BATU_VP)
-#define CONFIG_SYS_IBAT3L      (PCI_MEM_SPACE2_START|BATL_PP_10 | BATL_GUARDEDSTORAGE | BATL_CACHEINHIBIT)
-#define CONFIG_SYS_DBAT3U      CONFIG_SYS_IBAT3U
-#define CONFIG_SYS_DBAT3L      CONFIG_SYS_IBAT3L
-
-
-/*
- * 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     3       /* Max number of flash banks         */
-#define CONFIG_SYS_MAX_FLASH_SECT      64      /* 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)   */
-
-#if 0
-#define        CONFIG_ENV_IS_IN_FLASH      1
-#define CONFIG_ENV_OFFSET          0x8000  /* Offset of the Environment Sector */
-#define CONFIG_ENV_SIZE            0x4000  /* Size of the Environment Sector    */
-#else
-#define CONFIG_ENV_IS_IN_NVRAM          1
-#define CONFIG_ENV_ADDR            NV_OFF_U_BOOT_ADDR /* PortX NVM Free addr*/
-#define CONFIG_ENV_OFFSET          CONFIG_ENV_ADDR
-#define CONFIG_ENV_SIZE            NV_U_BOOT_ENV_SIZE /* 2K */
-#endif
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_CACHELINE_SIZE  16
-
-/* Localizations */
-#if 0
-#define CONFIG_ETHADDR          0:0:0:0:1:d
-#define CONFIG_IPADDR           172.16.40.113
-#define CONFIG_SERVERIP         172.16.40.111
-#else
-#define CONFIG_ETHADDR          0:0:0:0:1:d
-#define CONFIG_IPADDR           209.128.93.138
-#define CONFIG_SERVERIP         209.128.93.133
-#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
-
-#endif  /* __CONFIG_H */
index faa5495cb494d9600f0c3e3180d15b5bc90b2bd6..f15e1626f0b7e9ef158df3b518004950eb869b00 100644 (file)
 
 #ifdef CONFIG_SDCARD
 #define CONFIG_RAMBOOT_SDCARD          1
-#define CONFIG_SYS_TEXT_BASE   0xf8f80000
+#define CONFIG_SYS_TEXT_BASE   0xf8f40000
 #define CONFIG_RESET_VECTOR_ADDRESS    0xf8fffffc
 #endif
 
 #ifdef CONFIG_SPIFLASH
 #define CONFIG_RAMBOOT_SPIFLASH                1
-#define CONFIG_SYS_TEXT_BASE   0xf8f80000
+#define CONFIG_SYS_TEXT_BASE   0xf8f40000
 #define CONFIG_RESET_VECTOR_ADDRESS    0xf8fffffc
 #endif
 
index 58b9c26e93dba0a9c0253d604f32147a62cbac73..5165a456aa1389390d4b5efa2c774ab282aa5929 100644 (file)
@@ -493,7 +493,7 @@ extern unsigned long get_clock_freq(void);
 
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xfff00000
+#define CONFIG_SYS_QE_FW_ADDR  0xfff00000
 
 /*
  * BOOTP options
diff --git a/include/configs/NX823.h b/include/configs/NX823.h
deleted file mode 100644 (file)
index 6d468df..0000000
+++ /dev/null
@@ -1,344 +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+
- */
-
-/*
- * 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_NX823           1       /* ...on a NEXUS 823  module    */
-
-#define        CONFIG_SYS_TEXT_BASE    0x40000000
-
-/*#define  CONFIG_VIDEO                1 */
-
-#define CONFIG_8xx_GCLK_FREQ   MPC8XX_SPEED
-#define CONFIG_8xx_CONS_SMC1   1       /* Console is on SMC1       */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE 57600  /* console baudrate = 115kbps   */
-#define CONFIG_BOOTDELAY       2       /* autoboot after 2 seconds */
-#define CONFIG_BOOTARGS                "ramdisk_size=8000 "\
-                               "root=/dev/nfs rw nfsroot=10.77.77.250:/ppcroot "\
-                               "nfsaddrs=10.77.77.20:10.77.77.250"
-#define CONFIG_BOOTCOMMAND     "bootm 400e0000"
-
-#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, for now       */
-#define CONFIG_SOURCE
-
-/*
- * 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_SOURCE
-
-
-/* call various generic functions */
-#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       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         (128 << 10)     /* Reserve 128 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      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 xEMBED
-#ifdef EMBED
-#define CONFIG_ENV_SIZE                0x200   /* FIXME How big when embedded?? */
-#define CONFIG_ENV_ADDR                CONFIG_SYS_MONITOR_BASE
-#else
-#define CONFIG_ENV_ADDR                0x40020000      /* absolute address for now   */
-#define CONFIG_ENV_SIZE                0x20000 /* 8K ouch, this may later be */
-#endif
-
-#define CONFIG_SYS_FLASH_SN_BASE       0x4001fff0      /* programmer automagically puts    */
-#define CONFIG_SYS_FLASH_SN_SECTOR     0x40000000      /* a serial number here             */
-#define CONFIG_SYS_FLASH_SN_BYTES      8
-
-/*-----------------------------------------------------------------------
- * 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_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP)
-#endif
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                           12-30
- *-----------------------------------------------------------------------
- * PCMCIA config., multi-function pin tri-state
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00 | SIUMCR_DBPC00)
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control                                12-16
- *-----------------------------------------------------------------------
- * 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         12-18
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control               12-23
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PS | PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register         5-7
- *-----------------------------------------------------------------------
- * Reset PLL lock status sticky bit, timer expired status bit and timer
- * interrupt status bit
- */
-#define MPC8XX_SPEED   66666666L
-#define MPC8XX_XIN     32768   /* 32.768 kHz crystal */
-#define MPC8XX_FACT            (MPC8XX_SPEED/MPC8XX_XIN)
-#define CONFIG_SYS_PLPRCR_MF  ((MPC8XX_FACT-1) << PLPRCR_MF_SHIFT)
-#define CONFIG_SYS_PLPRCR              (CONFIG_SYS_PLPRCR_MF | PLPRCR_TEXPS | PLPRCR_TMIST)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register              5-3
- *-----------------------------------------------------------------------
- * 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)
-
-/*-----------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_DER         0
-
-/*
- * Init Memory Controller:
- *
- * BR0 and OR0 (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 = 00, TRLX = 0, CSNT = 1, SCY = 8, EHTR = 0       */
-#define CONFIG_SYS_OR_TIMING_FLASH     (OR_CSNT_SAM  | OR_ACS_DIV1 | OR_BI | \
-                                OR_SCY_8_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)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V )
-
-/*
- * BR1/2 and OR1/2 (SDRAM)
- */
-#define SDRAM_BASE1_PRELIM     0x00000000      /* SDRAM bank #0    */
-#define SDRAM_BASE2_PRELIM     0x20000000      /* SDRAM bank #1    */
-#define SDRAM_MAX_SIZE         0x04000000      /* max 64 MB per bank   */
-
-/* SDRAM timing: Multiplexed addresses, drive GPL5 high on first cycle */
-#define CONFIG_SYS_OR_TIMING_SDRAM     (OR_G5LS | OR_CSNT_SAM)
-
-#define CONFIG_SYS_OR1_PRELIM  (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 )
-#define CONFIG_SYS_OR2_PRELIM  CONFIG_SYS_OR1_PRELIM
-#define CONFIG_SYS_BR2_PRELIM  ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/* IO and memory mapped stuff */
-#define NX823_IO_OR_AM         0xFFFF0000      /* mask for IO addresses */
-#define NX823_IO_BASE          0xFF000000      /* start of IO  */
-#define GPOUT_OFFSET           (3<<16)
-#define QUART_OFFSET           (4<<16)
-#define VIDAC_OFFSET           (5<<16)
-#define CPLD_OFFSET            (6<<16)
-#define SED1386_OFFSET         (7<<16)
-
-/*
- * BR3 and OR3 (general purpose output latches)
- */
-#define GPOUT_BASE     (NX823_IO_BASE + GPOUT_OFFSET)
-#define GPOUT_TIMING   (OR_CSNT_SAM | OR_TRLX | OR_BI)
-#define CONFIG_SYS_OR3_PRELIM  (NX823_IO_OR_AM | GPOUT_TIMING)
-#define CONFIG_SYS_BR3_PRELIM  (GPOUT_BASE | BR_V)
-
-/*
- * BR4 and OR4 (QUART)
- */
-#define QUART_BASE     (NX823_IO_BASE + QUART_OFFSET)
-#define QUART_TIMING   (OR_ACS_DIV4 | OR_SCY_3_CLK | OR_CSNT_SAM | OR_TRLX)
-#define CONFIG_SYS_OR4_PRELIM  (NX823_IO_OR_AM | QUART_TIMING | OR_BI)
-#define CONFIG_SYS_BR4_PRELIM  (QUART_BASE | BR_PS_8 | BR_V)
-
-/*
- * BR5 and OR5 (Video DAC)
- */
-#define VIDAC_BASE     (NX823_IO_BASE + VIDAC_OFFSET)
-#define VIDAC_TIMING   (OR_ACS_DIV4 | OR_SCY_3_CLK | OR_CSNT_SAM | OR_EHTR)
-#define CONFIG_SYS_OR5_PRELIM  (NX823_IO_OR_AM | VIDAC_TIMING | OR_BI)
-#define CONFIG_SYS_BR5_PRELIM  (VIDAC_BASE | BR_PS_8 | BR_V)
-
-/*
- * BR6 and OR6 (CPLD)
- * FIXME timing not verified for CPLD
- */
-#define CPLD_BASE      (NX823_IO_BASE + CPLD_OFFSET)
-#define CPLD_TIMING    (OR_ACS_DIV4 | OR_SCY_3_CLK | OR_CSNT_SAM | OR_EHTR)
-#define CONFIG_SYS_OR6_PRELIM  (NX823_IO_OR_AM | CPLD_TIMING | OR_BI)
-#define CONFIG_SYS_BR6_PRELIM  (CPLD_BASE | BR_PS_8 | BR_V )
-
-/*
- * BR7 and OR7 (SED1386)
- * FIXME timing not verified for SED controller
- */
-#define SED1386_BASE   0xF7000000
-#define CONFIG_SYS_OR7_PRELIM  (0xFF000000 | OR_BI | OR_SETA)
-#define CONFIG_SYS_BR7_PRELIM  (SED1386_BASE | BR_PS_16 | 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)
-
-#define CONFIG_ENV_OVERWRITE   /* allow changes to ethaddr (for now)   */
-#define CONFIG_ETHADDR         00:10:20:30:40:50
-#define CONFIG_IPADDR          10.77.77.20
-#define CONFIG_SERVERIP                10.77.77.250
-
-#endif /* __CONFIG_H */
index eabfc85f0f45c564ca3753ee83949eb78f8460b2..d612a8b9c4f48e3528a9b8b44d8eab932388f350 100644 (file)
@@ -541,7 +541,8 @@ extern unsigned long get_sdram_size(void);
                                        FTIM2_GPCM_TWP(0x1f))
 #define CONFIG_SYS_CS3_FTIM3           0x0
 
-#if defined(CONFIG_RAMBOOT_SDCARD) || defined(CONFIG_RAMBOOT_SPIFLASH)
+#if defined(CONFIG_RAMBOOT_SDCARD) || defined(CONFIG_RAMBOOT_SPIFLASH) || \
+       defined(CONFIG_RAMBOOT_NAND)
 #define CONFIG_SYS_RAMBOOT
 #define CONFIG_SYS_EXTRA_ENV_RELOC
 #else
@@ -549,8 +550,7 @@ extern unsigned long get_sdram_size(void);
 #endif
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_IFC_A003399
-#if !defined(CONFIG_SPL) && !defined(CONFIG_SYS_RAMBOOT)\
-       && !defined(CONFIG_SECURE_BOOT)
+#if !defined(CONFIG_SPL) && !defined(CONFIG_SYS_RAMBOOT)
 #define CONFIG_A003399_NOR_WORKAROUND
 #endif
 #endif
@@ -566,7 +566,7 @@ extern unsigned long get_sdram_size(void);
                                                - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024) /* Reserve 256 kB for Mon*/
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc*/
 
 /*
index 139d4fed2516784602f8225372dd2c306b41f400..959cdf69bbb491a99eef0599ec1d46441ee4e259 100644 (file)
        (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         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
 
 /*
index b41cb4a13efff2291d163f0befaf973997e762a7..ba3da06dfb062f1bd24697132131efc8890e6c6e 100644 (file)
@@ -125,7 +125,7 @@ extern unsigned long get_clock_freq(void);
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN (512 * 1024)      /* Reserve 512 kB for Mon */
+#define CONFIG_SYS_MONITOR_LEN (768 * 1024)      /* Reserve 512 kB for Mon */
 #define CONFIG_SYS_MALLOC_LEN  (6 * 1024 * 1024) /* Reserved for malloc */
 
 #define CONFIG_SYS_NAND_BASE           0xffa00000
@@ -360,7 +360,7 @@ extern unsigned long get_clock_freq(void);
 /* Default address of microcode for the Linux Fman driver */
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xEFF00000
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
 
index 2ffa3546de7d39338985f345696a1ec5cbc4a855..8601eec85ea9c83110bb4888c6de98337bc5d457 100644 (file)
@@ -198,7 +198,7 @@ extern unsigned long get_clock_freq(void);
        (CONFIG_SYS_INIT_RAM_END - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */
+#define CONFIG_SYS_MONITOR_LEN (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN  (6 * 1024 * 1024) /* Reserved for malloc */
 
 #ifndef CONFIG_NAND_SPL
@@ -500,10 +500,10 @@ extern unsigned long get_clock_freq(void);
 /* Default address of microcode for the Linux Fman driver */
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xEFF00000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x1f00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x1f00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
index 2ffaf5c0d93c74529d0295f800398a7541b8daaf..0f04067258385d1007710f64f3cb3a89ea0d4c29 100644 (file)
@@ -238,7 +238,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
                                                - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024) /* Reserve 256 kB for Mon*/
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc*/
 
 #ifndef CONFIG_NAND_SPL
index 3d0b5c2fbe374b7c0bd50c5229f5db4914e99709..820b6332a60cdc0026ff4eda451447a716024541 100644 (file)
 #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         (256 * 1024) /* Reserve 256 kB for Mon */
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc */
 
 #define CONFIG_SYS_NAND_BASE           0xffa00000
index b3880f190f9a481bb503a4faac3c54908f0ae214..54e6493913b29cddec25fa07d01d6aaac52c667d 100644 (file)
@@ -315,7 +315,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#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
@@ -506,7 +506,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
@@ -514,10 +514,10 @@ unsigned long get_board_sys_clk(unsigned long dummy);
  * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 1680)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (8 * 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
@@ -527,10 +527,10 @@ unsigned long get_board_sys_clk(unsigned long dummy);
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xFFE00000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xEFF00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
diff --git a/include/configs/RPXClassic.h b/include/configs/RPXClassic.h
deleted file mode 100644 (file)
index 0f07d0c..0000000
+++ /dev/null
@@ -1,483 +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
- */
-
-/* Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        RPXClassic_50MHz
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_MPC860           1
-#define CONFIG_RPXCLASSIC              1
-
-#define        CONFIG_SYS_TEXT_BASE    0xff000000
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                9600    /* console baudrate = 9600bps   */
-
-/* Define CONFIG_FEC_ENET to use Fast ethernet instead of ethernet on SCC1   */
-#define CONFIG_FEC_ENET
-#ifdef CONFIG_FEC_ENET
-#define CONFIG_SYS_DISCOVER_PHY        1
-#define CONFIG_MII              1
-#endif /* CONFIG_FEC_ENET */
-#define CONFIG_MISC_INIT_R
-
-/* Video console (graphic: Epson SED13806 on ECCX board, no keyboard         */
-#if 1
-#define CONFIG_VIDEO_SED13806
-#define CONFIG_NEC_NL6448BC20
-#define CONFIG_VIDEO_SED13806_16BPP
-
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VIDEO_BMP_LOGO
-#define CONFIG_CONSOLE_EXTRA_INFO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-#define CONFIG_VIDEO_SW_CURSOR
-#endif
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK 1
-
-#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      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_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-
-/*
- * Command line configuration.
- */
-#include <config_cmd_default.h>
-
-#define CONFIG_CMD_ELF
-
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_RESET_ADDRESS       0x80000000
-#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       0x0040000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x00C0000       /* 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                0xFA200000
-
-/*-----------------------------------------------------------------------------
- * I2C Configuration
- *-----------------------------------------------------------------------------
- */
-#define CONFIG_SYS_I2C_SPEED           50000
-#define CONFIG_SYS_I2C_SLAVE           0x34
-
-
-/* enable I2C and select the hardware/software driver */
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support    */
-#undef  CONFIG_SYS_I2C_SOFT            /* I2C bit-banged               */
-
-#if defined(CONFIG_SYS_I2C_SOFT)
-#define CONFIG_SYS_I2C                 1
-/*
- * Software (bit-bang) I2C driver configuration
- */
-#define I2C_PORT       1               /* Port A=0, B=1, C=2, D=3 */
-#define I2C_ACTIVE     (iop->pdir |=  0x00000010)
-#define I2C_TRISTATE   (iop->pdir &= ~0x00000010)
-#define I2C_READ       ((iop->pdat & 0x00000010) != 0)
-#define I2C_SDA(bit)   if(bit) iop->pdat |=  0x00000010; \
-                       else    iop->pdat &= ~0x00000010
-#define I2C_SCL(bit)   if(bit) iop->pdat |=  0x00000020; \
-                       else    iop->pdat &= ~0x00000020
-#define I2C_DELAY      udelay(5)       /* 1/4 I2C clock duration */
-
-
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0x34
-#endif
-
-# 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
-
-/*-----------------------------------------------------------------------
- * 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  0xFF000000
-
-#if defined(DEBUG) || defined (CONFIG_VIDEO_SED13806) || 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        0xFF000000
-/*%%% #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    */
-
-#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 0
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define        CONFIG_ENV_OFFSET               0x20000 /*   Offset   of Environment Sector  */
-#define CONFIG_ENV_SECT_SIZE       0x8000
-#define        CONFIG_ENV_SIZE         0x8000  /* Total Size of Environment Sector  */
-#else
-#define CONFIG_ENV_IS_IN_NVRAM     1
-#define CONFIG_ENV_ADDR            0xfa000100
-#define CONFIG_ENV_SIZE            0x1000
-#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
- */
-#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_MLRC10)
-
-/*-----------------------------------------------------------------------
- * 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)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/*%%%#define CONFIG_SYS_RTCSC  (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE) */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC |  RTCSC_ALR | 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
- *
- * If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)!
- */
-/* up to 50 MHz we use a 1:1 clock */
-#define CONFIG_SYS_PLPRCR      ( (4 << PLPRCR_MF_SHIFT) | PLPRCR_TEXPS | PLPRCR_SPLSS | 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
-/* up to 50 MHz we use a 1:1 clock */
-#define CONFIG_SYS_SCCR        (SCCR_COM00 | SCCR_TBS)
-
-/*-----------------------------------------------------------------------
- * 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 and OR0 (FLASH)
- */
-
-#define FLASH_BASE_PRELIM      0xFE000000      /* FLASH base */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFE000000      /* OR addr mask */
-
-/* FLASH timing: ACS = 0, TRLX = 0, CSNT = 0, SCY = 4, ETHR = 0, BIH = 1 */
-#define CONFIG_SYS_OR_TIMING_FLASH (OR_SCY_4_CLK | OR_BI)
-
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE_PRELIM & BR_BA_MSK) | BR_V)
-
-/*
- * BR1 and OR1 (SDRAM)
- *
- */
-#define SDRAM_BASE_PRELIM      0x00000000      /* SDRAM base   */
-#define        SDRAM_MAX_SIZE          0x01000000      /* max 16 MB */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000E00
-
-#define CONFIG_SYS_OR1_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR1_PRELIM  ((SDRAM_BASE_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/* RPXLITE mem setting */
-#define        CONFIG_SYS_BR3_PRELIM   0xFA400001              /* BCSR */
-#define CONFIG_SYS_OR3_PRELIM  0xff7f8970
-#define        CONFIG_SYS_BR4_PRELIM   0xFA000401              /* NVRAM&SRAM */
-#define CONFIG_SYS_OR4_PRELIM  0xFFF80970
-
-/* ECCX CS settings                                                          */
-#define SED13806_OR             0xFFC00108     /* - 4 Mo
-                                                  - Burst inhibit
-                                                  - external TA             */
-#define SED13806_REG_ADDR       0xa0000000
-#define SED13806_ACCES          0x801           /* 16 bit access             */
-
-
-/* Global definitions for the ECCX board                                     */
-#define ECCX_CSR_ADDR           (0xfac00000)
-#define ECCX_CSR8_OFFSET        (0x8)
-#define ECCX_CSR11_OFFSET       (0xB)
-#define ECCX_CSR12_OFFSET       (0xC)
-
-#define ECCX_CSR8  (volatile unsigned char *)(ECCX_CSR_ADDR + ECCX_CSR8_OFFSET)
-#define ECCX_CSR11 (volatile unsigned char *)(ECCX_CSR_ADDR + ECCX_CSR11_OFFSET)
-#define ECCX_CSR12 (volatile unsigned char *)(ECCX_CSR_ADDR + ECCX_CSR12_OFFSET)
-
-
-#define REG_GPIO_CTRL 0x008
-
-/* Definitions for CSR8                                                      */
-#define ECCX_ENEPSON            0x80    /* Bit 0:
-                                          0= disable and reset SED1386
-                                          1= enable SED1386                 */
-/* Bit 1:   0= SED1386 in Big Endian mode                                    */
-/*          1= SED1386 in little endian mode                                 */
-#define ECCX_LE                 0x40
-#define ECCX_BE                 0x00
-
-/* Bit 2,3: Selection                                                        */
-/*      00 = Disabled                                                        */
-/*      01 = CS2 is used for the SED1386                                     */
-/*      10 = CS5 is used for the SED1386                                     */
-/*      11 = reserved                                                        */
-#define ECCX_CS2                0x10
-#define ECCX_CS5                0x20
-
-/* Definitions for CSR12                                                     */
-#define ECCX_ID                 0x02
-#define ECCX_860                0x01
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    58
-
-/*
- * Refresh clock Prescalar
- */
-#define CONFIG_SYS_MPTPR       MPTPR_PTP_DIV8
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 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_A12 |   \
-                        MAMR_GPL_A4DIS | MAMR_RLFA_4X | MAMR_WLFA_3X | MAMR_TLFA_16X)
-
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
-/* Configuration variable added by yooth. */
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
-
-/*
- * BCSRx
- *
- * Board Status and Control Registers
- *
- */
-
-#define BCSR0 0xFA400000
-#define BCSR1 0xFA400001
-#define BCSR2 0xFA400002
-#define BCSR3 0xFA400003
-
-#define BCSR0_ENMONXCVR        0x01    /* Monitor XVCR Control */
-#define BCSR0_ENNVRAM  0x02    /* CS4# Control */
-#define BCSR0_LED5             0x04    /* LED5 control 0='on' 1='off' */
-#define BCSR0_LED4             0x08    /* LED4 control 0='on' 1='off' */
-#define BCSR0_FULLDPLX 0x10    /* Ethernet XCVR Control */
-#define BCSR0_COLTEST  0x20
-#define BCSR0_ETHLPBK  0x40
-#define BCSR0_ETHEN    0x80
-
-#define BCSR1_PCVCTL7  0x01    /* PC Slot B Control */
-#define BCSR1_PCVCTL6  0x02
-#define BCSR1_PCVCTL5  0x04
-#define BCSR1_PCVCTL4  0x08
-#define BCSR1_IPB5SEL  0x10
-
-#define BCSR2_MIIRST    0x80
-#define BCSR2_MIIPWRDWN 0x40
-#define BCSR2_MIICTL    0x08
-
-#define BCSR3_BWRTC            0x01    /* Real Time Clock Battery */
-#define BCSR3_BWNVR            0x02    /* NVRAM Battery */
-#define BCSR3_RDY_BSY  0x04    /* Flash Operation */
-#define BCSR3_RPXL             0x08    /* Reserved (reads back '1') */
-#define BCSR3_D27              0x10    /* Dip Switch settings */
-#define BCSR3_D26              0x20
-#define BCSR3_D25              0x40
-#define BCSR3_D24              0x80
-
-
-/*
- * Environment setting
- */
-
-/* #define CONFIG_ETHADDR      00:10:EC:00:2C:A2 */
-/* #define CONFIG_IPADDR       10.10.106.1 */
-/* #define CONFIG_SERVERIP     10.10.104.11 */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/RPXlite.h b/include/configs/RPXlite.h
deleted file mode 100644 (file)
index a28230a..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* Yoo. Jonghoon, IPone, yooth@ipone.co.kr
- * U-Boot port on RPXlite board
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        RPXLite_50MHz
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#undef CONFIG_MPC860
-#define CONFIG_MPC850          1       /* This is a MPC850 CPU         */
-#define CONFIG_RPXLITE         1
-
-#define        CONFIG_SYS_TEXT_BASE    0xfff00000
-
-#define        CONFIG_8xx_CONS_SMC1    1       /* Console is on SMC1           */
-#undef CONFIG_8xx_CONS_SMC2
-#undef CONFIG_8xx_CONS_NONE
-#define CONFIG_BAUDRATE                9600    /* console baudrate = 9600bps   */
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-#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  */
-
-#define CONFIG_BZIP2           /* Include support for bzip2 compressed images  */
-
-/* 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      40000   /* 40 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(5)       /* 1/4 I2C clock duration */
-
-/* M41T11 Serial Access Timekeeper(R) SRAM */
-#define CONFIG_RTC_M41T11 1
-#define CONFIG_SYS_I2C_RTC_ADDR 0x68
-/* play along with the linux driver */
-#define CONFIG_SYS_M41T11_BASE_YEAR 1900
-
-#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>
-
-
-/*
- * 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         0x00C00000      /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_SYS_RESET_ADDRESS       0x09900000
-
-#define        CONFIG_SYS_LOAD_ADDR            0x400000        /* 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                0xFA200000
-
-/*-----------------------------------------------------------------------
- * 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          0xFFC00000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* Reserve 256 kB for Monitor   */
-#ifdef CONFIG_BZIP2
-#define CONFIG_SYS_MALLOC_LEN          (4096 << 10)    /* Reserve ~4 MB for malloc()   */
-#else
-#define CONFIG_SYS_MALLOC_LEN          (128 << 10)     /* Reserve 128 KB for malloc()  */
-#endif /* CONFIG_BZIP2 */
-
-/*
- * 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_SYS_DIRECT_FLASH_TFTP
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* We use one complete sector           */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-
-#define CONFIG_ENV_OVERWRITE
-
-/*-----------------------------------------------------------------------
- * 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 | 0x00000600 | 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_MLRC10)
-
-/*-----------------------------------------------------------------------
- * 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)
-
-/*-----------------------------------------------------------------------
- * RTCSC - Real-Time Clock Status and Control Register         11-27
- *-----------------------------------------------------------------------
- */
-/*%%%#define CONFIG_SYS_RTCSC  (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE) */
-#define CONFIG_SYS_RTCSC       (RTCSC_SEC | 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)!
- */
-/* up to 50 MHz we use a 1:1 clock */
-#define CONFIG_SYS_PLPRCR      ( (5 << PLPRCR_MF_SHIFT) | 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
-/* up to 50 MHz we use a 1:1 clock */
-#define CONFIG_SYS_SCCR        (SCCR_COM11 | SCCR_TBS)
-
-/*-----------------------------------------------------------------------
- * 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 and OR0 (FLASH)
- */
-
-#define FLASH_BASE_PRELIM      0xFE000000      /* FLASH base */
-#define CONFIG_SYS_PRELIM_OR_AM        0xFE000000      /* OR addr mask */
-
-/* FLASH timing: ACS = 0, TRLX = 0, CSNT = 0, SCY = 4, ETHR = 0, BIH = 1 */
-#define CONFIG_SYS_OR_TIMING_FLASH (OR_SCY_4_CLK | OR_BI)
-
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_FLASH)
-#define CONFIG_SYS_BR0_PRELIM  ((FLASH_BASE_PRELIM & BR_BA_MSK) | BR_V)
-
-/*
- * BR1 and OR1 (SDRAM)
- *
- */
-#define SDRAM_BASE_PRELIM      0x00000000      /* SDRAM base   */
-#define        SDRAM_MAX_SIZE          0x01000000      /* max 16 MB */
-
-/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)     */
-#define CONFIG_SYS_OR_TIMING_SDRAM     0x00000E00
-
-#define CONFIG_SYS_OR1_PRELIM  (CONFIG_SYS_PRELIM_OR_AM | CONFIG_SYS_OR_TIMING_SDRAM )
-#define CONFIG_SYS_BR1_PRELIM  ((SDRAM_BASE_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V )
-
-/* RPXLITE mem setting */
-#define        CONFIG_SYS_BR3_PRELIM   0xFA400001              /* BCSR */
-#define CONFIG_SYS_OR3_PRELIM  0xFFFF8910
-#define        CONFIG_SYS_BR4_PRELIM   0xFA000401              /* NVRAM&SRAM */
-#define CONFIG_SYS_OR4_PRELIM  0xFFFE0970
-
-/*
- * Memory Periodic Timer Prescaler
- */
-
-/* periodic timer for refresh */
-#define CONFIG_SYS_MAMR_PTA    58
-
-/*
- * Refresh clock Prescalar
- */
-#define CONFIG_SYS_MPTPR       MPTPR_PTP_DIV8
-
-/*
- * MAMR settings for SDRAM
- */
-
-/* 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_A12 |   \
-                        MAMR_GPL_A4DIS | MAMR_RLFA_4X | MAMR_WLFA_3X | MAMR_TLFA_16X)
-
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
-/* Configuration variable added by yooth. */
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
-
-/*
- * BCSRx
- *
- * Board Status and Control Registers
- *
- */
-
-#define BCSR0 0xFA400000
-#define BCSR1 0xFA400001
-#define BCSR2 0xFA400002
-#define BCSR3 0xFA400003
-
-#define BCSR0_ENMONXCVR        0x01    /* Monitor XVCR Control */
-#define BCSR0_ENNVRAM  0x02    /* CS4# Control */
-#define BCSR0_LED5     0x04    /* LED5 control 0='on' 1='off' */
-#define BCSR0_LED4     0x08    /* LED4 control 0='on' 1='off' */
-#define BCSR0_FULLDPLX 0x10    /* Ethernet XCVR Control */
-#define BCSR0_COLTEST  0x20
-#define BCSR0_ETHLPBK  0x40
-#define BCSR0_ETHEN    0x80
-
-#define BCSR1_PCVCTL7  0x01    /* PC Slot B Control */
-#define BCSR1_PCVCTL6  0x02
-#define BCSR1_PCVCTL5  0x04
-#define BCSR1_PCVCTL4  0x08
-#define BCSR1_IPB5SEL  0x10
-
-#define BCSR2_ENPA5HDR 0x08    /* USB Control */
-#define BCSR2_ENUSBCLK 0x10
-#define BCSR2_USBPWREN 0x20
-#define BCSR2_USBSPD   0x40
-#define BCSR2_USBSUSP  0x80
-
-#define BCSR3_BWRTC    0x01    /* Real Time Clock Battery */
-#define BCSR3_BWNVR    0x02    /* NVRAM Battery */
-#define BCSR3_RDY_BSY  0x04    /* Flash Operation */
-#define BCSR3_RPXL     0x08    /* Reserved (reads back '1') */
-#define BCSR3_D27      0x10    /* Dip Switch settings */
-#define BCSR3_D26      0x20
-#define BCSR3_D25      0x40
-#define BCSR3_D24      0x80
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/RPXsuper.h b/include/configs/RPXsuper.h
deleted file mode 100644 (file)
index f5e0968..0000000
+++ /dev/null
@@ -1,501 +0,0 @@
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define        CONFIG_SYS_TEXT_BASE    0x80F00000
-
-/*****************************************************************************
- *
- * These settings must match the way _your_ board is set up
- *
- *****************************************************************************/
-/* for the AY-Revision which does not use the HRCW */
-#define CONFIG_SYS_DEFAULT_IMMR        0x00010000
-
-/* What is the oscillator's (UX2) frequency in Hz? */
-#define CONFIG_8260_CLKIN  (66 * 1000 * 1000)
-
-/* How is switch S2 set? We really only want the MODCK[1-3] bits, so
- * only the 3 least significant bits are important.
-*/
-#define CONFIG_SYS_SBC_S2  0x04
-
-/* What should MODCK_H be? It is dependent on the oscillator
- * frequency, MODCK[1-3], and desired CPM and core frequencies.
- * Some example values (all frequencies are in MHz):
- *
- * MODCK_H   MODCK[1-3]  Osc    CPM    Core
- * 0x2       0x2         33     133    133
- * 0x2       0x4         33     133    200
- * 0x5       0x5         66     133    133
- * 0x5       0x7         66     133    200
- */
-#define CONFIG_SYS_SBC_MODCK_H 0x06
-
-#define CONFIG_SYS_SBC_BOOT_LOW 1      /* only for HRCW */
-#undef CONFIG_SYS_SBC_BOOT_LOW
-
-/* 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 0x80000000
-#define CONFIG_SYS_FLASH0_SIZE 16
-
-/* 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 and how big is
- * it (in Mbytes)?
-*/
-#define CONFIG_SYS_SDRAM0_BASE 0x00000000
-#define CONFIG_SYS_SDRAM0_SIZE 64
-
-/* What should be the base address of SDRAM DIMM and how big is
- * it (in Mbytes)?
-*/
-#define CONFIG_SYS_SDRAM1_BASE 0x04000000
-#define CONFIG_SYS_SDRAM1_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 0x00000000
-
-/*
- * 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 60x 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)
-# define CONFIG_SYS_CPMFCR_RAMTYPE     0
-/*#define CONFIG_SYS_FCC_PSMR          (FCC_PSMR_FDE|FCC_PSMR_LPB) */
-# define CONFIG_SYS_FCC_PSMR           0
-
-#else /* CONFIG_ETHER_INDEX */
-# error "on RPX Super ethernet must be FCC3"
-#endif /* CONFIG_ETHER_INDEX */
-
-#define CONFIG_HARD_I2C         1      /* I2C with hardware support    */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-
-/* 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 */
-#define CONFIG_ETHADDR          08:00:22:50:70:63
-
-#define CONFIG_IPADDR          192.168.1.99
-#define CONFIG_SERVERIP         192.168.1.3
-
-/* 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       */
-
-
-/*
- * 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_IMMAP
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_REGINFO
-
-#undef CONFIG_CMD_KGDB
-
-
-/* Where do the internal registers live? */
-#define CONFIG_SYS_IMMR               0xF0000000
-
-/* 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_RPXSUPER         1       /* on an Embedded Planet RPX Super Board  */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f      */
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-/*
- * 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    */
-
-#define CONFIG_SYS_MEMTEST_START 0x04000000   /* memtest works on  */
-#define CONFIG_SYS_MEMTEST_END   0x06000000   /* 64-96 MB in SDRAM */
-
-#define        CONFIG_CLOCKS_IN_MHZ    1       /* clocks passsed to Linux in MHz */
-
-#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.
- */
-
-#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  (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 + 0x00F00000)
-
-#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         */
-#define CONFIG_SYS_MAX_FLASH_SECT    71      /* 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 + 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)
-
-#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   |\
-                        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
- */
-#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        (SCCR_DFBRG01)
-
-/*-----------------------------------------------------------------------
- * 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 (BGA - 16MB AMD AM29DL323DB90)
- *  1   60x     SDRAM   64 bit  SDRAM (BGA - 64MB Hitachi HM5225325FBP-B60)
- *  2   Local   SDRAM   32 bit  SDRAM (BGA - 32MB Hitachi HM5225325FBP-B60)
- *  3   unused
- *  4   60x     GPCM     8 bit  Board Regs, LEDs, switches
- *  5   unused
- *  6   unused
- *  7   unused
- *  8   PCMCIA
- *  9   unused
- * 10   unused
- * 11   unused
-*/
-
-/* 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_6_CLK                 |\
-                        ORxG_EHTR)
-
-/* Bank 1 - SDRAM
- *
- */
-#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_PBI0_A8             |\
-                        ORxS_NUMR_12                   |\
-                        ORxS_IBID)
-
-#define CONFIG_SYS_PSDMR       0x014DA412
-#define CONFIG_SYS_PSRT        0x79
-
-
-/* Bank 2 - SDRAM
- *
- */
-#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       0x0169A512
-#define CONFIG_SYS_LSRT        0x79
-
-#define CONFIG_SYS_MPTPR       (0x0800 & MPTPR_PTP_MSK)
-
-/* Bank 4 - On board registers
- *
- */
-#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_5_CLK              |\
-                          ORxG_TRLX)
-
-#endif  /* __CONFIG_H */
index 993f9ae53364d3c88fe79996d12b4edbc583fff8..522653bdc3dbc145bab3b7c1728aa209ba7b2e52 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2013 Freescale Semiconductor, Inc.
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MP                      /* support multiple processors */
 
+/* support deep sleep */
+#define CONFIG_DEEP_SLEEP
+#define CONFIG_SILENT_CONSOLE
+
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xeff40000
 #endif
@@ -169,8 +173,10 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CHIP_SELECTS_PER_CTRL   (2 * CONFIG_DIMM_SLOTS_PER_CTLR)
 
 #define CONFIG_DDR_SPD
+#ifndef CONFIG_SYS_FSL_DDR4
 #define CONFIG_SYS_FSL_DDR3
 #define CONFIG_FSL_DDR_INTERACTIVE
+#endif
 
 #define CONFIG_SYS_SPD_BUS_NUM 0
 #define SPD_EEPROM_ADDRESS     0x51
@@ -374,7 +380,7 @@ unsigned long get_board_ddr_clk(void);
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
 
 /* Serial Port - controlled on board with jumper J8
@@ -595,6 +601,8 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
 
+#define CONFIG_QE
+#define CONFIG_U_QE
 /* Default address of microcode for the Linux Fman driver */
 #if defined(CONFIG_SPIFLASH)
 /*
@@ -602,7 +610,7 @@ unsigned long get_board_ddr_clk(void);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
@@ -610,13 +618,14 @@ unsigned long get_board_ddr_clk(void);
  * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 1680)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
+#define CONFIG_SYS_QE_FW_ADDR          0xEFF10000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
@@ -648,6 +657,23 @@ unsigned long get_board_ddr_clk(void);
 #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
  */
diff --git a/include/configs/T1040RDB.h b/include/configs/T1040RDB.h
deleted file mode 100644 (file)
index 395845b..0000000
+++ /dev/null
@@ -1,687 +0,0 @@
-/*
- * Copyright 2013 Freescale Semiconductor, Inc.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * T1040 RDB board configuration file
- */
-#define CONFIG_T104xRDB
-#define CONFIG_T1040RDB
-#define CONFIG_PHYS_64BIT
-
-#ifdef CONFIG_RAMBOOT_PBL
-#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
-#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
-#endif
-
-/* 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 */
-
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xeff40000
-#endif
-
-#ifndef CONFIG_RESET_VECTOR_ADDRESS
-#define CONFIG_RESET_VECTOR_ADDRESS    0xeffffffc
-#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_PCI                     /* Enable PCI/PCIE */
-#define CONFIG_PCI_INDIRECT_BRIDGE
-#define CONFIG_PCIE1                   /* PCIE controler 1 */
-#define CONFIG_PCIE2                   /* PCIE controler 2 */
-#define CONFIG_PCIE3                   /* PCIE controler 3 */
-#define CONFIG_PCIE4                   /* PCIE controler 4 */
-
-#define CONFIG_FSL_PCI_INIT            /* Use common FSL init code */
-#define CONFIG_SYS_PCI_64BIT           /* enable 64-bit PCI resources */
-
-#define CONFIG_FSL_LAW                 /* Use common FSL init code */
-
-#define CONFIG_ENV_OVERWRITE
-
-#ifdef CONFIG_SYS_NO_FLASH
-#define CONFIG_ENV_IS_NOWHERE
-#else
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-#endif
-
-#ifndef CONFIG_SYS_NO_FLASH
-#if defined(CONFIG_SPIFLASH)
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#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_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 * 1658)
-#elif defined(CONFIG_NAND)
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
-#define CONFIG_ENV_OFFSET              (3 * 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
-#else /* CONFIG_SYS_NO_FLASH */
-#define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
-#endif
-
-#define CONFIG_SYS_CLK_FREQ    100000000
-#define CONFIG_DDR_CLK_FREQ    66666666
-
-/*
- * 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_ENABLE_36BIT_PHYS
-
-#define CONFIG_ADDR_MAP
-#define CONFIG_SYS_NUM_ADDR_MAP                64      /* number of TLB1 entries */
-
-#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_DCSRBAR             0xf0000000
-#define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
-
-/*
- * DDR Setup
- */
-#define CONFIG_VERY_BIG_RAM
-#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
-#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
-
-/* CONFIG_NUM_DDR_CONTROLLERS is defined in include/asm/config_mpc85xx.h */
-#define CONFIG_DIMM_SLOTS_PER_CTLR     1
-#define CONFIG_CHIP_SELECTS_PER_CTRL   (2 * CONFIG_DIMM_SLOTS_PER_CTLR)
-
-#define CONFIG_DDR_SPD
-#define CONFIG_SYS_DDR_RAW_TIMING
-#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
-#define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
-
-#define CONFIG_SYS_NOR_CSPR_EXT        (0xf)
-#define CONFIG_SYS_NOR_CSPR    (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE) | \
-                               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}
-
-/* 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_PHYS) \
-                               | 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(0x0) | \
-                                       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
-#define CONFIG_SYS_NAND_BASE_PHYS      (0xf00000000ull | CONFIG_SYS_NAND_BASE)
-
-#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_NOR_CSPR_EXT
-#define CONFIG_SYS_CSPR1               CONFIG_SYS_NOR_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_NOR_CSPR_EXT
-#define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR_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
-
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-
-#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 */
-#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)
-#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         (512 * 1024)
-#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
-
-/* Serial Port - controlled on board with jumper J8
- * open - index 2
- * shorted - index 1
- */
-#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_SERIAL_MULTI            /* Enable both serial ports */
-#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 "> "
-
-/* 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       400000  /* I2C speed in Hz */
-#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
-#define CONFIG_SYS_FSL_I2C2_SPEED      400000  /* I2C speed in Hz */
-#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
-#define CONFIG_SYS_FSL_I2C_OFFSET      0x118000
-#define CONFIG_SYS_FSL_I2C2_OFFSET     0x119000
-
-/* I2C bus multiplexer */
-#define I2C_MUX_PCA_ADDR                0x70
-#define I2C_MUX_CH_DEFAULT      0x8
-
-
-/*
- * eSPI - Enhanced SPI
- */
-#define CONFIG_FSL_ESPI
-#define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_STMICRO
-#define CONFIG_CMD_SF
-#define CONFIG_SF_DEFAULT_SPEED         10000000
-#define CONFIG_SF_DEFAULT_MODE          0
-#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
-
-/*
- * General PCI
- * Memory space is mapped 1-1, but I/O space must start from 0.
- */
-
-#ifdef CONFIG_PCI
-/* controller 1, direct to uli, tgtid 3, Base address 20000 */
-#ifdef CONFIG_PCIE1
-#define        CONFIG_SYS_PCIE1_MEM_VIRT       0x80000000
-#define        CONFIG_SYS_PCIE1_MEM_BUS        0xe0000000
-#define        CONFIG_SYS_PCIE1_MEM_PHYS       0xc00000000ull
-#define CONFIG_SYS_PCIE1_MEM_SIZE      0x10000000      /* 256M */
-#define CONFIG_SYS_PCIE1_IO_VIRT       0xf8000000
-#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
-#define CONFIG_SYS_PCIE1_IO_PHYS       0xff8000000ull
-#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
-#define CONFIG_SYS_PCIE2_MEM_BUS       0xe0000000
-#define CONFIG_SYS_PCIE2_MEM_PHYS      0xc10000000ull
-#define CONFIG_SYS_PCIE2_MEM_SIZE      0x10000000      /* 256M */
-#define CONFIG_SYS_PCIE2_IO_VIRT       0xf8010000
-#define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
-#define CONFIG_SYS_PCIE2_IO_PHYS       0xff8010000ull
-#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
-#define CONFIG_SYS_PCIE3_MEM_BUS       0xe0000000
-#define CONFIG_SYS_PCIE3_MEM_PHYS      0xc20000000ull
-#define CONFIG_SYS_PCIE3_MEM_SIZE      0x10000000      /* 256M */
-#define CONFIG_SYS_PCIE3_IO_VIRT       0xf8020000
-#define CONFIG_SYS_PCIE3_IO_BUS                0x00000000
-#define CONFIG_SYS_PCIE3_IO_PHYS       0xff8020000ull
-#define CONFIG_SYS_PCIE3_IO_SIZE       0x00010000      /* 64k */
-#endif
-
-/* controller 4, Base address 203000 */
-#ifdef CONFIG_PCIE4
-#define CONFIG_SYS_PCIE4_MEM_VIRT      0xb0000000
-#define CONFIG_SYS_PCIE4_MEM_BUS       0xe0000000
-#define CONFIG_SYS_PCIE4_MEM_PHYS      0xc30000000ull
-#define CONFIG_SYS_PCIE4_MEM_SIZE      0x10000000      /* 256M */
-#define CONFIG_SYS_PCIE4_IO_VIRT       0xf8030000
-#define CONFIG_SYS_PCIE4_IO_BUS                0x00000000
-#define CONFIG_SYS_PCIE4_IO_PHYS       0xff8030000ull
-#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 */
-
-/* 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
-
-#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
-
-#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    25
-#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_QMAN_MEM_BASE       0xf6000000
-#define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
-#define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
-
-#define CONFIG_SYS_DPAA_FMAN
-#define CONFIG_SYS_DPAA_PME
-
-/* 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_QE_FMAN_FW_ADDR     0x110000
-#elif defined(CONFIG_SDCARD)
-/*
- * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
- * about 825KB (1650 blocks), Env is stored after the image, and the env size is
- * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
- */
-#define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
-#elif defined(CONFIG_NAND)
-#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (4 * CONFIG_SYS_NAND_BLOCK_SIZE)
-#else
-#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
-#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_PHY_VITESSE
-#define CONFIG_PHY_REALTEK
-#endif
-
-#ifdef CONFIG_FMAN_ENET
-#define CONFIG_SYS_SGMII1_PHY_ADDR             0x03
-#define CONFIG_SYS_RGMII1_PHY_ADDR             0x01
-#define CONFIG_SYS_RGMII2_PHY_ADDR             0x02
-
-#define CONFIG_MII             /* MII PHY management */
-#define CONFIG_ETHPRIME                "FM1@DTSEC4"
-#define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
-#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_DHCP
-#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*/
-
-/* default location for tftp and bootm */
-#define CONFIG_LOADADDR                1000000
-
-#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:bank_intlv=cs0_cs1;"                  \
-       "usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) ";"\
-       "usb2:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) "\0"\
-       "netdev=eth0\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"                                 \
-       "ramdiskfile=t1040rdb/ramdisk.uboot\0"                  \
-       "fdtaddr=c00000\0"                                      \
-       "fdtfile=t1040rdb/t1040rdb.dtb\0"                       \
-       "bdev=sda3\0"                                           \
-       "c=ffe\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_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_LINUX
-
-#ifdef CONFIG_SECURE_BOOT
-#include <asm/fsl_secure_boot.h>
-#endif
-
-#endif /* __CONFIG_H */
similarity index 78%
rename from include/configs/T1042RDB_PI.h
rename to include/configs/T104xRDB.h
index 68656e6ef15fc4e1d9efa7ae49e8b4f36970f4e9..81b4f31bc6e8323f461b58dde4f71d74719d57be 100644 (file)
@@ -1,38 +1,92 @@
 /*
- * Copyright 2013 Freescale Semiconductor, Inc.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
++ * Copyright 2014 Freescale Semiconductor, Inc.
++ *
++ * SPDX-License-Identifier:     GPL-2.0+
++ */
 
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
 /*
- * T1042RDB_PI board configuration file
+ * T104x RDB board configuration file
  */
 #define CONFIG_T104xRDB
-#define CONFIG_T1042RDB_PI
 #define CONFIG_PHYS_64BIT
 
 #ifdef CONFIG_RAMBOOT_PBL
-#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
-#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
+#define CONFIG_SYS_FSL_PBL_PBI $(SRCTREE)/board/freescale/t104xrdb/t104x_pbi.cfg
+#ifdef CONFIG_T1040RDB
+#define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/t104xrdb/t1040_rcw.cfg
+#endif
+#ifdef CONFIG_T1042RDB_PI
+#define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/t104xrdb/t1042_rcw.cfg
+#endif
+
+#define CONFIG_SPL
+#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
+#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
+#define RESET_VECTOR_OFFSET            0x27FFC
+#define BOOT_PAGE_OFFSET               0x27000
+
+#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
 
 /* High Level Configuration Options */
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MP                      /* support multiple processors */
 
+/* support deep sleep */
+#define CONFIG_DEEP_SLEEP
+#define CONFIG_SILENT_CONSOLE
+
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xeff40000
 #endif
 
 #define CONFIG_ENV_OVERWRITE
 
-#ifdef CONFIG_SYS_NO_FLASH
-#define CONFIG_ENV_IS_NOWHERE
-#else
+#ifndef CONFIG_SYS_NO_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 #endif
 
-#ifndef CONFIG_SYS_NO_FLASH
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
-#define CONFIG_ENV_OFFSET              (512 * 1658)
+#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                        CONFIG_SYS_NAND_BLOCK_SIZE
+#define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (3 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
 #define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
 #endif
-#else /* CONFIG_SYS_NO_FLASH */
-#define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
-#endif
 
 #define CONFIG_SYS_CLK_FREQ    100000000
 #define CONFIG_DDR_CLK_FREQ    66666666
  *  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)
 
 #define CONFIG_SYS_DCSRBAR             0xf0000000
 #define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
 #define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE_PHYS}
 
 /* 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 | BANK0 */
+#define CPLD_LBMAP_RESET               0xFF
+#define CPLD_LBMAP_SHIFT               0x03
+
 #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_CS1_FTIM3           CONFIG_SYS_NAND_FTIM3
 #endif
 
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+#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
 
 #if defined(CONFIG_RAMBOOT_PBL)
 #define CONFIG_SYS_RAMBOOT
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
 /* Serial Port - controlled on board with jumper J8
 #define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_CCSRBAR+0x11D500)
 #define CONFIG_SYS_NS16550_COM4        (CONFIG_SYS_CCSRBAR+0x11D600)
 #define CONFIG_SERIAL_MULTI            /* Enable both serial ports */
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV   /* determine from environment */
+#endif
 
 /* Use the HUSH parser */
 #define CONFIG_SYS_HUSH_PARSER
 
 /* I2C bus multiplexer */
 #define I2C_MUX_PCA_ADDR                0x70
+#ifdef CONFIG_T1040RDB
+#define I2C_MUX_CH_DEFAULT      0x8
+#endif
 
+#ifdef CONFIG_T1042RDB_PI
 /*
  * RTC configuration
  */
 
 /*DVI encoder*/
 #define CONFIG_HDMI_ENCODER_I2C_ADDR  0x75
+#endif
 
 /*
  * eSPI - Enhanced SPI
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
 
+#ifdef CONFIG_T1040RDB
+#define CONFIG_QE
+#define CONFIG_U_QE
+#endif
+
 /* Default address of microcode for the Linux Fman driver */
 #if defined(CONFIG_SPIFLASH)
 /*
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
- * about 825KB (1650 blocks), Env is stored after the image, and the env size is
- * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
+ * 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.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 0x820)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (4 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (5 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
+#endif
+
+#ifdef CONFIG_T1040RDB
+#if defined(CONFIG_SPIFLASH)
+#define CONFIG_SYS_QE_FW_ADDR          0x130000
+#elif defined(CONFIG_SDCARD)
+#define CONFIG_SYS_QE_FW_ADDR          (512 * 0x920)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_QE_FW_ADDR          (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#else
+#define CONFIG_SYS_QE_FW_ADDR          0xEFF10000
+#endif
 #endif
+
+
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
 #endif /* CONFIG_NOBQFMAN */
 #endif
 
 #ifdef CONFIG_FMAN_ENET
+#ifdef CONFIG_T1040RDB
+#define CONFIG_SYS_SGMII1_PHY_ADDR             0x03
+#endif
 #define CONFIG_SYS_RGMII1_PHY_ADDR             0x01
 #define CONFIG_SYS_RGMII2_PHY_ADDR             0x02
 
  */
 #include <config_cmd_default.h>
 
+#ifdef CONFIG_T1042RDB_PI
 #define CONFIG_CMD_DATE
+#endif
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_ELF
 #define CONFIG_CMD_ERRATA
 #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=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 Configuration
  */
 
 #define __USB_PHY_TYPE utmi
 
+#ifdef CONFIG_T1040RDB
+#define FDTFILE                "t1040rdb/t1040rdb.dtb"
+#define RAMDISKFILE    "t1040rdb/ramdisk.uboot"
+#elif CONFIG_T1042RDB_PI
+#define FDTFILE                "t1040rdb_pi/t1040rdb_pi.dtb"
+#define RAMDISKFILE    "t1040rdb_pi/ramdisk.uboot"
+#endif
+
 #define        CONFIG_EXTRA_ENV_SETTINGS                               \
        "hwconfig=fsl_ddr:bank_intlv=cs0_cs1;"                  \
        "usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) ";"\
        "cmp.b $loadaddr $ubootaddr $filesize\0"                \
        "consoledev=ttyS0\0"                                    \
        "ramdiskaddr=2000000\0"                                 \
-       "ramdiskfile=t1040rdb_pi/ramdisk.uboot\0"                       \
+       "ramdiskfile=" __stringify(RAMDISKFILE) "\0"            \
        "fdtaddr=c00000\0"                                      \
-       "fdtfile=t1040rdb_pi/t1040rdb_pi.dtb\0"                         \
+       "fdtfile=" __stringify(FDTFILE) "\0"                    \
        "bdev=sda3\0"                                           \
        "c=ffe\0"
 
index 399ddbb791cee82480c4f7a9761b2be8998964f8..8bf08430be6667efb5efc89142fef99226781de3 100644 (file)
 #define CONFIG_ENV_OVERWRITE
 
 #ifdef CONFIG_RAMBOOT_PBL
-#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
-#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
 #define CONFIG_SYS_FSL_PBL_PBI board/freescale/t208xqds/t208x_pbi.cfg
 #if defined(CONFIG_PPC_T2080)
 #define CONFIG_SYS_FSL_PBL_RCW board/freescale/t208xqds/t2080_rcw.cfg
 #elif defined(CONFIG_PPC_T2081)
 #define CONFIG_SYS_FSL_PBL_RCW board/freescale/t208xqds/t2081_rcw.cfg
 #endif
+
+#define CONFIG_SPL
+#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 */
 
 #define CONFIG_SRIO_PCIE_BOOT_MASTER
 #ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
 #define CONFIG_MEM_INIT_VALUE          0xdeadbeef
 #endif
 
-#ifdef CONFIG_SYS_NO_FLASH
-#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-#else
+#ifndef CONFIG_SYS_NO_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_OFFSET      (512 * 1658)
+#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                CONFIG_SYS_NAND_BLOCK_SIZE
-#define CONFIG_ENV_OFFSET      (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#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
@@ -140,7 +200,16 @@ unsigned long get_board_ddr_clk(void);
 /*
  * Config the L3 Cache as L3 SRAM
  */
-#define CONFIG_SYS_INIT_L3_ADDR         CONFIG_RAMBOOT_TEXT_BASE
+#define CONFIG_SYS_INIT_L3_ADDR                0xFFFC0000
+#define CONFIG_SYS_L3_SIZE             (512 << 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   (50 << 10)
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SPL_GD_ADDR + 64 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (22 << 10)
 
 #define CONFIG_SYS_DCSRBAR     0xf0000000
 #define CONFIG_SYS_DCSRBAR_PHYS        0xf00000000ull
@@ -298,8 +367,16 @@ unsigned long get_board_ddr_clk(void);
 #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_CSPR2_EXT           CONFIG_SYS_NOR0_CSPR_EXT
-#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR0_CSPR
+#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
@@ -315,6 +392,14 @@ unsigned long get_board_ddr_clk(void);
 #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
@@ -324,20 +409,17 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NAND_FTIM2
 #define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
 #endif
-#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
 
 #if defined(CONFIG_RAMBOOT_PBL)
 #define CONFIG_SYS_RAMBOOT
 #endif
 
-#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
+#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_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
 #define CONFIG_MISC_INIT_R
 #define CONFIG_HWCONFIG
@@ -356,7 +438,7 @@ unsigned long get_board_ddr_clk(void);
 #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         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
 /*
@@ -453,15 +535,14 @@ unsigned long get_board_ddr_clk(void);
  */
 #ifdef CONFIG_SPI_FLASH
 #define CONFIG_FSL_ESPI
-#define CONFIG_SPI_FLASH_SST
 #define CONFIG_SPI_FLASH_STMICRO
-#if defined(CONFIG_T2080QDS)
-#define CONFIG_SPI_FLASH_SPANSION
-#elif defined(CONFIG_T2081QDS)
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_RAMBOOT_PBL)
+#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
 #endif
@@ -552,18 +633,18 @@ unsigned long get_board_ddr_clk(void);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
- * about 825KB (1650 blocks), Env is stored after the image, and the env size is
- * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
+ * 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.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 0x820)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (11 * 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
@@ -573,10 +654,10 @@ unsigned long get_board_ddr_clk(void);
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xFFE00000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xEFF00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
@@ -649,6 +730,23 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_DOS_PARTITION
 #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:1m(uboot)," \
+                       "5m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:" \
+                       "1m(uboot),5m(kernel),128k(dtb),-(user)"
+#endif
+
 /*
  * Environment
  */
index 743eee3161c60c4ed2add576c0cf7c52a25dacb5..73d82edb80f39c8ace493737051e6f2cf174ed94 100644 (file)
 #define CONFIG_ENV_OVERWRITE
 
 #ifdef CONFIG_RAMBOOT_PBL
-#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
-#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
 #define CONFIG_SYS_FSL_PBL_PBI board/freescale/t208xrdb/t2080_pbi.cfg
 #define CONFIG_SYS_FSL_PBL_RCW board/freescale/t208xrdb/t2080_rcw.cfg
+
+#define CONFIG_SPL
+#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 */
 
 #define CONFIG_SRIO_PCIE_BOOT_MASTER
 #ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
 #define CONFIG_MEM_INIT_VALUE          0xdeadbeef
 #endif
 
-#ifdef CONFIG_SYS_NO_FLASH
-#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-#else
+#ifndef CONFIG_SYS_NO_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_OFFSET      (512 * 1658)
+#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                CONFIG_SYS_NAND_BLOCK_SIZE
+#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
@@ -129,7 +189,16 @@ unsigned long get_board_ddr_clk(void);
 /*
  * Config the L3 Cache as L3 SRAM
  */
-#define CONFIG_SYS_INIT_L3_ADDR         CONFIG_RAMBOOT_TEXT_BASE
+#define CONFIG_SYS_INIT_L3_ADDR                0xFFFC0000
+#define CONFIG_SYS_L3_SIZE             (512 << 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   (50 << 10)
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SPL_GD_ADDR + 64 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (22 << 10)
 
 #define CONFIG_SYS_DCSRBAR     0xf0000000
 #define CONFIG_SYS_DCSRBAR_PHYS        0xf00000000ull
@@ -139,7 +208,7 @@ unsigned long get_board_ddr_clk(void);
 #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 1
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
 
 /*
  * DDR Setup
@@ -301,7 +370,12 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_RAMBOOT
 #endif
 
-#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
+#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_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
 #define CONFIG_MISC_INIT_R
 #define CONFIG_HWCONFIG
@@ -320,7 +394,7 @@ unsigned long get_board_ddr_clk(void);
 #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         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
 /*
@@ -510,23 +584,26 @@ unsigned long get_board_ddr_clk(void);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_CORTINA_FW_IN_SPIFLASH
+#define CONFIG_SYS_FMAN_FW_ADDR                0x110000
 #define CONFIG_CORTINA_FW_ADDR         0x120000
 
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
- * about 825KB (1650 blocks), Env is stored after the image, and the env size is
- * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
+ * 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.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
-#define CONFIG_CORTINA_FW_ADDR         (512 * 1808)
+#define CONFIG_SYS_CORTINA_FW_IN_MMC
+#define CONFIG_SYS_FMAN_FW_ADDR                (512 * 0x820)
+#define CONFIG_CORTINA_FW_ADDR         (512 * 0x8a0)
 
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (6 * CONFIG_SYS_NAND_BLOCK_SIZE)
-#define CONFIG_CORTINA_FW_ADDR         (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_CORTINA_FW_IN_NAND
+#define CONFIG_SYS_FMAN_FW_ADDR                (3 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_CORTINA_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
@@ -536,11 +613,13 @@ unsigned long get_board_ddr_clk(void);
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#define CONFIG_SYS_CORTINA_FW_IN_REMOTE
+#define CONFIG_SYS_FMAN_FW_ADDR                0xFFE00000
 #define CONFIG_CORTINA_FW_ADDR         0xFFE10000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xEFF00000
+#define CONFIG_SYS_CORTINA_FW_IN_NOR
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
 #define CONFIG_CORTINA_FW_ADDR         0xEFE00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
@@ -615,6 +694,22 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_DOS_PARTITION
 #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.1:" \
+                       "1m(uboot),5m(kernel),128k(dtb),-(user)"
+#endif
+
 /*
  * Environment
  */
index c81c4577e3aba68dbb427102ce9cf383c119cef9..ad5a9a6f0c8533c4374d22e118e5cf50da10f0c9 100644 (file)
@@ -98,7 +98,7 @@
 #define CONFIG_SYS_INTERLAKEN
 
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
 
index 56e1293720c4f1e85dd3e30819a85f8f25e98c3a..e4eb30fbeb5d217d1fc19f53f2a4d9a8fa12a283 100644 (file)
 #define CONFIG_ICS307_REFCLK_HZ                25000000  /* ICS307 ref clk freq */
 
 #ifdef CONFIG_RAMBOOT_PBL
-#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
-#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
 #define CONFIG_SYS_FSL_PBL_PBI board/freescale/t4qds/t4_pbi.cfg
 #define CONFIG_SYS_FSL_PBL_RCW board/freescale/t4qds/t4_rcw.cfg
+#if !defined(CONFIG_NAND) && !defined(CONFIG_SDCARD)
+#define CONFIG_RAMBOOT_TEXT_BASE        CONFIG_SYS_TEXT_BASE
+#define CONFIG_RESET_VECTOR_ADDRESS     0xfffffffc
+#else
+#define CONFIG_SPL
+#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_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_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)
+#ifndef CONFIG_SPL_BUILD
+#define        CONFIG_SYS_MPC85XX_NO_RESETVEC
+#endif
+#define CONFIG_SYS_LDSCRIPT    "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#define CONFIG_SPL_MMC_BOOT
+#endif
+
+#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
+
 #endif
+#endif /* CONFIG_RAMBOOT_PBL */
 
 #ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
 /* Set 1M boot space */
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
-#define CONFIG_ENV_OFFSET              (512 * 1658)
+#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                        CONFIG_SYS_NAND_BLOCK_SIZE
-#define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#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
@@ -244,8 +297,16 @@ unsigned long get_board_ddr_clk(void);
 #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_CSPR2_EXT           CONFIG_SYS_NOR0_CSPR_EXT
-#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR0_CSPR
+#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
@@ -261,6 +322,14 @@ unsigned long get_board_ddr_clk(void);
 #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
@@ -270,14 +339,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NAND_FTIM2
 #define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
 #endif
-#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
 
 #if defined(CONFIG_RAMBOOT_PBL)
 #define CONFIG_SYS_RAMBOOT
@@ -375,18 +436,18 @@ unsigned long get_board_ddr_clk(void);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
- * about 825KB (1650 blocks), Env is stored after the image, and the env size is
- * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
+ * 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.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 0x820)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (11 * 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
@@ -396,10 +457,10 @@ unsigned long get_board_ddr_clk(void);
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xFFE00000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
index 036c609582aaf6788227edc494070341f9a97b8e..762f6d2e4b19ded847b71e2662494cea3f949665 100644 (file)
 #endif
 
 /* USB Device Firmware Update support */
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_DFU_FUNCTION
 #define CONFIG_DFU_MMC
 #define CONFIG_CMD_DFU
        "boot part 0 1;" \
        "rootfs part 0 2;" \
        "MLO fat 0 1;" \
-       "MLO.raw mmc 100 100;" \
-       "u-boot.img.raw mmc 300 400;" \
-       "spl-os-args.raw mmc 80 80;" \
-       "spl-os-image.raw mmc 900 2000;" \
+       "MLO.raw mmc 0x100 0x100;" \
+       "u-boot.img.raw mmc 0x300 0x400;" \
+       "spl-os-args.raw mmc 0x80 0x80;" \
+       "spl-os-image.raw mmc 0x900 0x2000;" \
        "spl-os-args fat 0 1;" \
        "spl-os-image fat 0 1;" \
        "u-boot.img fat 0 1;" \
        DFU_ALT_INFO_MMC \
        DFU_ALT_INFO_RAM \
        DFU_ALT_INFO_NAND
+#endif
 
 /*
  * Default to using SPI for environment, etc.
index f6b569abfdd1684734505916aa8102368f78cd27..c22d6d0c758fd1ae6fe200943c0784777b0f3776 100644 (file)
@@ -16,7 +16,7 @@
 #define CONFIG_SYS_CLK_FREQ            750000000
 #define CONFIG_SYS_TIMER_RATE          CONFIG_SYS_CLK_FREQ
 
-/* dwgmac doesn't work with D$ enabled now */
+/* NAND controller DMA doesn't work correctly with D$ enabled */
 #define CONFIG_SYS_DCACHE_OFF
 
 /*
@@ -40,7 +40,7 @@
 
 #define CONFIG_SYS_DDR_SDRAM_BASE      0x80000000
 #define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
-#define CONFIG_SYS_SDRAM_SIZE          0x10000000      /* 256 Mb */
+#define CONFIG_SYS_SDRAM_SIZE          0x20000000      /* 512 Mb */
 
 #define CONFIG_SYS_INIT_SP_ADDR                \
        (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         1
 #define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    1
 #define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  32
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  64
 
 /*
  * SD/MMC configuration
index 1e4bfc49fc92b3875cb5354cdf3ec0d5f91e78c2..db6b9be73c657bf837ee6d6f1c94c18556e8b360 100644 (file)
 #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         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc */
 
 /* Serial Port - controlled on board with jumper J8
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x110000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x110000
 #elif defined(CONFIG_SDCARD)
 /*
  * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
  * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (512 * 1680)
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 1680)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#define CONFIG_SYS_FMAN_FW_ADDR        (8 * 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
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#define CONFIG_SYS_FMAN_FW_ADDR        0xFFE00000
 #else
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF00000
+#define CONFIG_SYS_FMAN_FW_ADDR                0xEFF00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
index 2040bf7784d2255f1b804d365d4ce49609a43c59..cbd2d204cf98d3551029c6e4cd9137094149ebc4 100644 (file)
 #define CONFIG_USB_GADGET_S3C_UDC_OTG
 #define CONFIG_USB_GADGET_DUALSPEED
 #define CONFIG_USB_GADGET_VBUS_DRAW    2
-#define CONFIG_USB_CABLE_CHECK
 
 #define CONFIG_CMD_USB_MASS_STORAGE
 #define CONFIG_USB_GADGET_MASS_STORAGE
index 2437b4b6133add2629b82c3ed71669c9791dad63..854807d486846ee9f0525e8209e4998bd88899a6 100644 (file)
@@ -19,8 +19,6 @@
  * (easy to change)
  */
 
-#define CONFIG_LEON3           /* This is an LEON3 CPU */
-#define CONFIG_LEON            1       /* This is an LEON CPU */
 #define CONFIG_CPCI_AX2000     1       /* ... on GR-CPCI-AX2000 board */
 
 #define CONFIG_LEON_RAM_SRAM 1
index 2cd6eaedcc36ed235c0d8f778fcc5adaa2ea3edd..ed2dd2a847be9e231d43c47f67ab770ee2af9132 100644 (file)
@@ -20,8 +20,6 @@
  * (easy to change)
  */
 
-#define CONFIG_LEON3           /* This is an LEON3 CPU */
-#define CONFIG_LEON            1       /* This is an LEON CPU */
 /* Altera NIOS Development board, Stratix II board */
 #define CONFIG_GR_EP2S60       1
 
index 39036cdf7e3ece4cc81fd5663595be89f6828978..e3cbb6f5965af7fa89eff870caac14a020092d6c 100644 (file)
@@ -18,8 +18,6 @@
  * (easy to change)
  */
 
-#define CONFIG_LEON3           /* This is an LEON3 CPU */
-#define CONFIG_LEON            1       /* This is an LEON CPU */
 #define CONFIG_GRXC3S1500      1       /* ... on GR-XC3S-1500 board */
 
 /* CPU / AMBA BUS configuration */
index 2d977ceeb6851b5fadf0409b991022c7af15c5dd..556c749f92060c1c44c2bf674c8e7f91b039c4f8 100644 (file)
@@ -24,8 +24,6 @@
  *
  */
 
-#define CONFIG_LEON3                   /* This is an LEON3 CPU */
-#define CONFIG_LEON            1       /* This is an LEON CPU */
 #define CONFIG_GRSIM           0       /* ... not running on GRSIM */
 #define CONFIG_TSIM            1       /* ... running on TSIM */
 
index 36ebaf7ff7ca0f372de49a77ac814a679eadb186..8be98983c9f6a6667b58d1c18fedbeee273fbcfc 100644 (file)
@@ -23,8 +23,6 @@
  *
  */
 
-#define CONFIG_LEON2           /* This is an LEON2 CPU */
-#define CONFIG_LEON            1       /* This is an LEON CPU */
 #define CONFIG_GRSIM           0       /* ... not running on GRSIM */
 #define CONFIG_TSIM            1       /* ... running on TSIM */
 
diff --git a/include/configs/ids8313.h b/include/configs/ids8313.h
new file mode 100644 (file)
index 0000000..613f7e1
--- /dev/null
@@ -0,0 +1,587 @@
+/*
+ * (C) Copyright 2013
+ * Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * Based on:
+ * Copyright (c) 2011 IDS GmbH, Germany
+ * Sergej Stepanov <ste@ids.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_MPC831x
+#define CONFIG_MPC8313
+#define CONFIG_IDS8313
+
+#define CONFIG_FSL_ELBC
+
+#define CONFIG_MISC_INIT_R
+
+#define CONFIG_AUTOBOOT_KEYED
+#define CONFIG_AUTOBOOT_PROMPT \
+       "\nEnter password - autoboot in %d seconds...\n", CONFIG_BOOTDELAY
+#define CONFIG_AUTOBOOT_DELAY_STR      "ids"
+#define CONFIG_BOOT_RETRY_TIME         900
+#define CONFIG_BOOT_RETRY_MIN          30
+#define CONFIG_BOOTDELAY               1
+#define CONFIG_RESET_TO_RETRY
+
+#define CONFIG_83XX_CLKIN              66000000        /* in Hz */
+#define CONFIG_SYS_CLK_FREQ            CONFIG_83XX_CLKIN
+
+#define CONFIG_SYS_IMMR                0xF0000000
+
+#define CONFIG_SYS_ACR_PIPE_DEP        3       /* Arbiter pipeline depth (0-3) */
+#define CONFIG_SYS_ACR_RPTCNT          3       /* Arbiter repeat count (0-7) */
+
+/*
+ * Hardware Reset Configuration Word
+ * if CLKIN is 66.000MHz, then
+ * CSB = 132MHz, CORE = 264MHz, DDRC = 264MHz, LBC = 132MHz
+ */
+#define CONFIG_SYS_HRCW_LOW (0x20000000 /* reserved, must be set */ |\
+                            HRCWL_DDR_TO_SCB_CLK_2X1 |\
+                            HRCWL_CSB_TO_CLKIN_2X1 |\
+                            HRCWL_CORE_TO_CSB_2X1)
+
+#define CONFIG_SYS_HRCW_HIGH   (HRCWH_PCI_HOST |\
+                                HRCWH_CORE_ENABLE |\
+                                HRCWH_FROM_0XFFF00100 |\
+                                HRCWH_BOOTSEQ_DISABLE |\
+                                HRCWH_SW_WATCHDOG_DISABLE |\
+                                HRCWH_ROM_LOC_LOCAL_8BIT |\
+                                HRCWH_RL_EXT_LEGACY |\
+                                HRCWH_TSEC1M_IN_MII |\
+                                HRCWH_TSEC2M_IN_MII |\
+                                HRCWH_BIG_ENDIAN)
+
+#define CONFIG_SYS_SICRH       0x00000000
+#define CONFIG_SYS_SICRL       (SICRL_LBC | SICRL_SPI_D)
+
+#define CONFIG_HWCONFIG
+
+#define CONFIG_SYS_HID0_INIT   0x000000000
+#define CONFIG_SYS_HID0_FINAL  (HID0_ENABLE_MACHINE_CHECK |\
+                                HID0_ENABLE_INSTRUCTION_CACHE |\
+                                HID0_DISABLE_DYNAMIC_POWER_MANAGMENT)
+
+#define CONFIG_SYS_HID2        (HID2_HBE | 0x00020000)
+
+/*
+ * Definitions for initial stack pointer and data area (in DCACHE )
+ */
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0xFD000000
+#define CONFIG_SYS_INIT_RAM_SIZE       0x1000  /* End of used area in DPRAM */
+#define CONFIG_SYS_GBL_DATA_SIZE       0x100
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE \
+                                        - CONFIG_SYS_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+
+/*
+ * Local Bus LCRR and LBCR regs
+ */
+#define CONFIG_SYS_LCRR_EADC           LCRR_EADC_1
+#define CONFIG_SYS_LCRR_CLKDIV         LCRR_CLKDIV_2
+#define CONFIG_SYS_LBC_LBCR            (0x00040000 |\
+                                        (0xFF << LBCR_BMT_SHIFT) |\
+                                        0xF)
+
+#define CONFIG_SYS_LBC_MRTPR           0x20000000
+
+/*
+ * Internal Definitions
+ */
+/*
+ * DDR Setup
+ */
+#define CONFIG_SYS_DDR_BASE            0x00000000
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_BASE
+#define CONFIG_SYS_DDR_SDRAM_BASE      CONFIG_SYS_DDR_BASE
+
+/*
+ * Manually set up DDR parameters,
+ * as this board has not the SPD connected to I2C.
+ */
+#define CONFIG_SYS_DDR_SIZE            256             /* MB */
+#define CONFIG_SYS_DDR_CONFIG          (CSCONFIG_EN |\
+                                        0x00010000 |\
+                                        CSCONFIG_ROW_BIT_13 |\
+                                        CSCONFIG_COL_BIT_10)
+
+#define CONFIG_SYS_DDR_CONFIG_256      (CONFIG_SYS_DDR_CONFIG | \
+                                        CSCONFIG_BANK_BIT_3)
+
+#define CONFIG_SYS_DDR_TIMING_3        (1 << 16)       /* ext refrec */
+#define CONFIG_SYS_DDR_TIMING_0        ((3 << TIMING_CFG0_RWT_SHIFT) |\
+                               (3 << TIMING_CFG0_WRT_SHIFT) |\
+                               (3 << TIMING_CFG0_RRT_SHIFT) |\
+                               (3 << TIMING_CFG0_WWT_SHIFT) |\
+                               (6 << TIMING_CFG0_ACT_PD_EXIT_SHIFT) |\
+                               (2 << TIMING_CFG0_PRE_PD_EXIT_SHIFT) |\
+                               (8 << TIMING_CFG0_ODT_PD_EXIT_SHIFT) | \
+                               (2 << TIMING_CFG0_MRS_CYC_SHIFT))
+#define CONFIG_SYS_DDR_TIMING_1        ((4 << TIMING_CFG1_PRETOACT_SHIFT) |\
+                               (12 << TIMING_CFG1_ACTTOPRE_SHIFT) |\
+                               (4 << TIMING_CFG1_ACTTORW_SHIFT) |\
+                               (7 << TIMING_CFG1_CASLAT_SHIFT) |\
+                               (4 << TIMING_CFG1_REFREC_SHIFT) |\
+                               (4 << TIMING_CFG1_WRREC_SHIFT) |\
+                               (2 << TIMING_CFG1_ACTTOACT_SHIFT) |\
+                               (2 << TIMING_CFG1_WRTORD_SHIFT))
+#define CONFIG_SYS_DDR_TIMING_2        ((1 << TIMING_CFG2_ADD_LAT_SHIFT) |\
+                               (5 << TIMING_CFG2_CPO_SHIFT) |\
+                               (4 << TIMING_CFG2_WR_LAT_DELAY_SHIFT) |\
+                               (2 << TIMING_CFG2_RD_TO_PRE_SHIFT) |\
+                               (0 << TIMING_CFG2_WR_DATA_DELAY_SHIFT) |\
+                               (1 << TIMING_CFG2_CKE_PLS_SHIFT) |\
+                               (6 << TIMING_CFG2_FOUR_ACT_SHIFT))
+
+#define CONFIG_SYS_DDR_INTERVAL        ((0x800 << SDRAM_INTERVAL_REFINT_SHIFT) |\
+                               (0x800 << SDRAM_INTERVAL_BSTOPRE_SHIFT))
+
+#define CONFIG_SYS_SDRAM_CFG           (SDRAM_CFG_SREN |\
+                                        SDRAM_CFG_2T_EN | SDRAM_CFG_HSE |\
+                                        SDRAM_CFG_DBW_32 |\
+                                        SDRAM_CFG_SDRAM_TYPE_DDR2)
+
+#define CONFIG_SYS_SDRAM_CFG2          0x00401000
+#define CONFIG_SYS_DDR_MODE            ((0x0448 << SDRAM_MODE_ESD_SHIFT) |\
+                                        (0x0242 << SDRAM_MODE_SD_SHIFT))
+#define CONFIG_SYS_DDR_MODE_2          0x00000000
+#define CONFIG_SYS_DDR_CLK_CNTL        DDR_SDRAM_CLK_CNTL_CLK_ADJUST_075
+#define CONFIG_SYS_DDRCDR_VALUE        (DDRCDR_EN |\
+                                        DDRCDR_PZ_NOMZ |\
+                                        DDRCDR_NZ_NOMZ |\
+                                        DDRCDR_ODT |\
+                                        DDRCDR_M_ODR |\
+                                        DDRCDR_Q_DRN)
+
+/*
+ * on-board devices
+ */
+#define CONFIG_TSEC1
+#define CONFIG_TSEC2
+#define CONFIG_TSEC_ENET
+#define CONFIG_NET_MULTI
+#define CONFIG_HARD_SPI
+#define CONFIG_HARD_I2C
+
+/*
+ * NOR FLASH setup
+ */
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_8BIT
+#define CONFIG_FLASH_SHOW_PROGRESS     50
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+
+#define CONFIG_SYS_FLASH_BASE          0xFF800000
+#define CONFIG_SYS_FLASH_SIZE          8
+#define CONFIG_SYS_FLASH_PROTECTION
+
+#define CONFIG_SYS_LBLAWBAR0_PRELIM    CONFIG_SYS_FLASH_BASE
+#define CONFIG_SYS_LBLAWAR0_PRELIM     0x80000016
+
+#define CONFIG_SYS_BR0_PRELIM          (CONFIG_SYS_FLASH_BASE |\
+                                        BR_PS_8 |\
+                                        BR_MS_GPCM |\
+                                        BR_V)
+
+#define CONFIG_SYS_OR0_PRELIM          (MEG_TO_AM(CONFIG_SYS_FLASH_SIZE) |\
+                                        OR_GPCM_SCY_10 |\
+                                        OR_GPCM_EHTR |\
+                                        OR_GPCM_TRLX |\
+                                        OR_GPCM_CSNT |\
+                                        OR_GPCM_EAD)
+#define CONFIG_SYS_MAX_FLASH_BANKS     1
+#define CONFIG_SYS_MAX_FLASH_SECT      128
+
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500
+
+/*
+ * NAND FLASH setup
+ */
+#define CONFIG_SYS_NAND_BASE           0xE1000000
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_MAX_CHIPS      1
+#define CONFIG_MTD_NAND_VERIFY_WRITE
+#define CONFIG_NAND_FSL_ELBC
+#define CONFIG_SYS_NAND_PAGE_SIZE      (2048)
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 << 10)
+#define NAND_CACHE_PAGES               64
+
+#define CONFIG_SYS_LBLAWBAR1_PRELIM    CONFIG_SYS_NAND_BASE
+#define CONFIG_SYS_LBLAWAR1_PRELIM     0x8000000E
+#define CONFIG_SYS_NAND_LBLAWBAR_PRELIM CONFIG_SYS_LBLAWBAR1_PRELIM
+#define CONFIG_SYS_NAND_LBLAWAR_PRELIM CONFIG_SYS_LBLAWAR1_PRELIM
+
+#define CONFIG_SYS_BR1_PRELIM  ((CONFIG_SYS_NAND_BASE) |\
+                                (2<<BR_DECC_SHIFT) |\
+                                BR_PS_8 |\
+                                BR_MS_FCM |\
+                                BR_V)
+
+#define CONFIG_SYS_OR1_PRELIM  (0xFFFF8000 |\
+                                OR_FCM_PGS |\
+                                OR_FCM_CSCT |\
+                                OR_FCM_CST |\
+                                OR_FCM_CHT |\
+                                OR_FCM_SCY_4 |\
+                                OR_FCM_TRLX |\
+                                OR_FCM_EHTR |\
+                                OR_FCM_RST)
+
+/*
+ * MRAM setup
+ */
+#define CONFIG_SYS_MRAM_BASE           0xE2000000
+#define CONFIG_SYS_MRAM_SIZE           0x20000 /* 128 Kb */
+#define CONFIG_SYS_LBLAWBAR2_PRELIM    CONFIG_SYS_MRAM_BASE
+#define CONFIG_SYS_LBLAWAR2_PRELIM     0x80000010      /* 128 Kb  */
+
+#define CONFIG_SYS_OR_TIMING_MRAM
+
+#define CONFIG_SYS_BR2_PRELIM          (CONFIG_SYS_MRAM_BASE |\
+                                        BR_PS_8 |\
+                                        BR_MS_GPCM |\
+                                        BR_V)
+
+#define CONFIG_SYS_OR2_PRELIM          0xFFFE0C74
+
+/*
+ * CPLD setup
+ */
+#define CONFIG_SYS_CPLD_BASE           0xE3000000
+#define CONFIG_SYS_CPLD_SIZE           0x8000
+#define CONFIG_SYS_LBLAWBAR3_PRELIM    CONFIG_SYS_CPLD_BASE
+#define CONFIG_SYS_LBLAWAR3_PRELIM     0x8000000E
+
+#define CONFIG_SYS_OR_TIMING_MRAM
+
+#define CONFIG_SYS_BR3_PRELIM          (CONFIG_SYS_CPLD_BASE |\
+                                        BR_PS_8 |\
+                                        BR_MS_GPCM |\
+                                        BR_V)
+
+#define CONFIG_SYS_OR3_PRELIM          0xFFFF8814
+
+/*
+ * HW-Watchdog
+ */
+#define CONFIG_WATCHDOG                1
+#define CONFIG_SYS_WATCHDOG_VALUE      0xFFFF
+
+/*
+ * I2C setup
+ */
+#define CONFIG_CMD_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      0x3100
+#define CONFIG_RTC_PCF8563
+#define CONFIG_SYS_I2C_RTC_ADDR        0x51
+
+/*
+ * SPI setup
+ */
+#ifdef CONFIG_HARD_SPI
+#define CONFIG_MPC8XXX_SPI
+#define CONFIG_CMD_SPI
+#define CONFIG_SYS_GPIO1_PRELIM
+#define CONFIG_SYS_GPIO1_DIR           0x00000001
+#define CONFIG_SYS_GPIO1_DAT           0x00000001
+#endif
+
+/*
+ * Ethernet setup
+ */
+#ifdef CONFIG_TSEC1
+#define CONFIG_HAS_ETH0
+#define CONFIG_TSEC1_NAME              "TSEC0"
+#define CONFIG_SYS_TSEC1_OFFSET        0x24000
+#define TSEC1_PHY_ADDR                 0x1
+#define TSEC1_FLAGS                    TSEC_GIGABIT
+#define TSEC1_PHYIDX                   0
+#endif
+
+#ifdef CONFIG_TSEC2
+#define CONFIG_HAS_ETH1
+#define CONFIG_TSEC2_NAME              "TSEC1"
+#define CONFIG_SYS_TSEC2_OFFSET        0x25000
+#define TSEC2_PHY_ADDR                 0x3
+#define TSEC2_FLAGS                    TSEC_GIGABIT
+#define TSEC2_PHYIDX                   0
+#endif
+#define CONFIG_ETHPRIME                "TSEC1"
+
+/*
+ * 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_BAUDRATE_TABLE      \
+       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 115200}
+#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_IMMR + 0x4500)
+#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_IMMR + 0x4600)
+#define CONFIG_SYS_NS16550_CLK         (CONFIG_83XX_CLKIN * 2)
+
+#define CONFIG_HAS_FSL_DR_USB
+#define CONFIG_SYS_SCCR_USBDRCM        3
+
+/*
+ * BAT's
+ */
+#define CONFIG_HIGH_BATS
+
+/* DDR @ 0x00000000 */
+#define CONFIG_SYS_IBAT0L              (CONFIG_SYS_SDRAM_BASE |\
+                                        BATL_PP_10)
+#define CONFIG_SYS_IBAT0U              (CONFIG_SYS_SDRAM_BASE |\
+                                        BATU_BL_256M |\
+                                        BATU_VS |\
+                                        BATU_VP)
+#define CONFIG_SYS_DBAT0L              CONFIG_SYS_IBAT0L
+#define CONFIG_SYS_DBAT0U              CONFIG_SYS_IBAT0U
+
+/* Initial RAM @ 0xFD000000 */
+#define CONFIG_SYS_IBAT1L              (CONFIG_SYS_INIT_RAM_ADDR |\
+                                        BATL_PP_10 |\
+                                        BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_IBAT1U              (CONFIG_SYS_INIT_RAM_ADDR |\
+                                        BATU_BL_256K |\
+                                        BATU_VS |\
+                                        BATU_VP)
+#define CONFIG_SYS_DBAT1L              CONFIG_SYS_IBAT1L
+#define CONFIG_SYS_DBAT1U              CONFIG_SYS_IBAT1U
+
+/* FLASH @ 0xFF800000 */
+#define CONFIG_SYS_IBAT2L              (CONFIG_SYS_FLASH_BASE |\
+                                        BATL_PP_10 |\
+                                        BATL_GUARDEDSTORAGE)
+#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_10 |\
+                                        BATL_CACHEINHIBIT |\
+                                        BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_DBAT2U              CONFIG_SYS_IBAT2U
+
+#define CONFIG_SYS_IBAT3L              (0)
+#define CONFIG_SYS_IBAT3U              (0)
+#define CONFIG_SYS_DBAT3L              CONFIG_SYS_IBAT3L
+#define CONFIG_SYS_DBAT3U              CONFIG_SYS_IBAT3U
+
+#define CONFIG_SYS_IBAT4L              (0)
+#define CONFIG_SYS_IBAT4U              (0)
+#define CONFIG_SYS_DBAT4L              CONFIG_SYS_IBAT4L
+#define CONFIG_SYS_DBAT4U              CONFIG_SYS_IBAT4U
+
+/* IMMRBAR @ 0xF0000000 */
+#define CONFIG_SYS_IBAT5L              (CONFIG_SYS_IMMR |\
+                                        BATL_PP_10 |\
+                                        BATL_CACHEINHIBIT |\
+                                        BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_IBAT5U              (CONFIG_SYS_IMMR |\
+                                        BATU_BL_128M |\
+                                        BATU_VS |\
+                                        BATU_VP)
+#define CONFIG_SYS_DBAT5L              CONFIG_SYS_IBAT5L
+#define CONFIG_SYS_DBAT5U              CONFIG_SYS_IBAT5U
+
+/* NAND-Flash @ 0xE1000000, MRAM @ 0xE2000000, CPLD @ 0xE3000000 */
+#define CONFIG_SYS_IBAT6L              (0xE0000000 |\
+                                        BATL_PP_10 |\
+                                        BATL_GUARDEDSTORAGE)
+#define CONFIG_SYS_IBAT6U              (0xE0000000 |\
+                                        BATU_BL_256M |\
+                                        BATU_VS |\
+                                        BATU_VP)
+#define CONFIG_SYS_DBAT6L              CONFIG_SYS_IBAT6L
+#define CONFIG_SYS_DBAT6U              CONFIG_SYS_IBAT6U
+
+#define CONFIG_SYS_IBAT7L              (0)
+#define CONFIG_SYS_IBAT7U              (0)
+#define CONFIG_SYS_DBAT7L              CONFIG_SYS_IBAT7L
+#define CONFIG_SYS_DBAT7U              CONFIG_SYS_IBAT7U
+
+/*
+ * U-Boot environment setup
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_SNTP
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_DATE
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_CMD_EDITENV
+#define CONFIG_CMD_JFFS2
+#define CONFIG_BOOTP_SUBNETMASK
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_BOOTFILESIZE
+/* pass open firmware flat tree */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+#define CONFIG_OF_STDOUT_VIA_ALIAS
+
+/*
+ * The reserved memory
+ */
+#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (8 * 1024 * 1024)
+
+/*
+ * Environment Configuration
+ */
+#define CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE \
+                               + CONFIG_SYS_MONITOR_LEN)
+#define CONFIG_ENV_SIZE                0x20000
+#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE)
+#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
+
+
+#define CONFIG_NETDEV                  eth1
+#define CONFIG_HOSTNAME                ids8313
+#define CONFIG_ROOTPATH                "/opt/eldk-4.2/ppc_6xx"
+#define CONFIG_BOOTFILE                "ids8313/uImage"
+#define CONFIG_UBOOTPATH               "ids8313/u-boot.bin"
+#define CONFIG_FDTFILE                 "ids8313/ids8313.dtb"
+#define CONFIG_LOADADDR                0x400000
+#define CONFIG_CMD_ENV_FLAGS
+#define CONFIG_ENV_FLAGS_LIST_STATIC "ethaddr:mo,eth1addr:mo"
+
+#define CONFIG_BAUDRATE                115200
+#define CONFIG_SYS_HZ                  1000
+
+/* Initial Memory map for Linux*/
+#define CONFIG_SYS_BOOTMAPSZ           (256 << 20)
+
+/*
+ * 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)
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
+#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser    */
+#define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
+
+#define CONFIG_SYS_MEMTEST_START       0x00001000
+#define CONFIG_SYS_MEMTEST_END         0x00C00000
+
+#define CONFIG_SYS_LOAD_ADDR           0x100000
+#define CONFIG_MII
+#define CONFIG_LOADS_ECHO
+#define CONFIG_TIMESTAMP
+#define CONFIG_PREBOOT                 "echo;" \
+                                       "echo Type \\\"run nfsboot\\\" " \
+                                       "to mount root filesystem over NFS;echo"
+#undef CONFIG_BOOTARGS
+#define CONFIG_BOOTCOMMAND             "run boot_cramfs"
+#undef CONFIG_SYS_LOADS_BAUD_CHANGE
+
+#define CONFIG_JFFS2_NAND
+#define CONFIG_JFFS2_DEV               "0"
+
+/* mtdparts command line support */
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_FLASH_CFI_MTD
+#define CONFIG_MTD_DEVICE
+#define MTDIDS_DEFAULT         "nor0=ff800000.flash,nand0=e1000000.flash"
+#define MTDPARTS_DEFAULT       "mtdparts=ff800000.flash:7m(dum)," \
+                                       "768k(BOOT-BIN)," \
+                                       "128k(BOOT-ENV),128k(BOOT-REDENV);" \
+                                       "e1000000.flash:-(ubi)"
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "netdev=" __stringify(CONFIG_NETDEV) "\0"                       \
+       "ethprime=TSEC1\0"                                              \
+       "uboot=" __stringify(CONFIG_UBOOTPATH) "\0"                     \
+       "tftpflash=tftpboot ${loadaddr} ${uboot}; "                     \
+               "protect off " __stringify(CONFIG_SYS_TEXT_BASE)        \
+               " +${filesize}; "                                       \
+               "erase " __stringify(CONFIG_SYS_TEXT_BASE)              \
+               " +${filesize}; "                                       \
+               "cp.b ${loadaddr} " __stringify(CONFIG_SYS_TEXT_BASE)   \
+               " ${filesize}; "                                        \
+               "protect on " __stringify(CONFIG_SYS_TEXT_BASE)         \
+               " +${filesize}; "                                       \
+               "cmp.b ${loadaddr} " __stringify(CONFIG_SYS_TEXT_BASE)  \
+               " ${filesize}\0"                                        \
+       "console=ttyS0\0"                                               \
+       "fdtaddr=0x780000\0"                                            \
+       "kernel_addr=ff800000\0"                                        \
+       "fdtfile=" __stringify(CONFIG_FDTFILE) "\0"                     \
+       "setbootargs=setenv bootargs "                                  \
+               "root=${rootdev} rw console=${console},"                \
+                       "${baudrate} ${othbootargs}\0"                  \
+       "setipargs=setenv bootargs root=${rootdev} rw "                 \
+                       "nfsroot=${serverip}:${rootpath} "              \
+                       "ip=${ipaddr}:${serverip}:${gatewayip}:"        \
+                       "${netmask}:${hostname}:${netdev}:off "         \
+                       "console=${console},${baudrate} ${othbootargs}\0" \
+       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"              \
+       "mtdids=" MTDIDS_DEFAULT "\0"                                   \
+       "mtdparts=" MTDPARTS_DEFAULT "\0"                               \
+       "\0"
+
+#define CONFIG_NFSBOOTCOMMAND                                          \
+       "setenv rootdev /dev/nfs;"                                      \
+       "run setipargs;run addmtd;"                                     \
+       "tftp ${loadaddr} ${bootfile};"                         \
+       "tftp ${fdtaddr} ${fdtfile};"                                   \
+       "fdt addr ${fdtaddr};"                                          \
+       "bootm ${loadaddr} - ${fdtaddr}"
+
+/* UBI Support */
+#define CONFIG_CMD_NAND_TRIMFFS
+#define CONFIG_CMD_UBI
+#define CONFIG_CMD_UBIFS
+#define CONFIG_RBTREE
+#define CONFIG_LZO
+#define CONFIG_MTD_PARTITIONS
+
+/* bootcount support */
+#define CONFIG_BOOTCOUNT_LIMIT
+#define CONFIG_BOOTCOUNT_I2C
+#define CONFIG_BOOTCOUNT_ALEN  1
+#define CONFIG_SYS_BOOTCOUNT_ADDR      0x9
+
+#define CONFIG_VERSION_VARIABLE
+
+#define CONFIG_FIT
+#define CONFIG_FIT_SIGNATURE
+#define CONFIG_CMD_FDT
+#define CONFIG_CMD_HASH
+#define CONFIG_RSA
+#define CONFIG_SHA1
+#define CONFIG_SHA256
+#define CONFIG_OF_CONTROL
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/incaip.h b/include/configs/incaip.h
deleted file mode 100644 (file)
index e11d184..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * (C) Copyright 2003-2005
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * This file contains the configuration parameters for the INCA-IP board.
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define CONFIG_INCA_IP         1       /* on a INCA-IP Board   */
-
-#define CONFIG_XWAY_SWAP_BYTES
-
-/*
- * Clock for the MIPS core (MHz)
- * allowed values: 100000000, 133000000, and 150000000 (default)
- */
-#ifndef CONFIG_CPU_CLOCK_RATE
-#define CONFIG_CPU_CLOCK_RATE  150000000
-#endif
-
-#define CONFIG_SYS_XWAY_EBU_BOOTCFG    0x40C4  /* CMULT = 8 */
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BAUDRATE                115200
-
-#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#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} "                            \
-               "ethaddr=${ethaddr} "                                   \
-               "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 80500000 ${bootfile};"                            \
-               "run nfsargs addip addmisc;bootm\0"                     \
-       "rootpath=/opt/eldk/mips_4KC\0"                                 \
-       "bootfile=/tftpboot/INCA/uImage\0"                              \
-       "kernel_addr=B0040000\0"                                        \
-       "ramdisk_addr=B0100000\0"                                       \
-       "u-boot=/tftpboot/INCA/u-boot.bin\0"                            \
-       "load=tftp 80500000 ${u-boot}\0"                                \
-       "update=protect off 1:0-2;era 1:0-2;"                           \
-               "cp.b 80500000 B0000000 ${filesize}\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_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_NFS
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SNTP
-
-
-/*
- * Miscellaneous configurable options
- */
-#define        CONFIG_SYS_LONGHELP                             /* undef to save memory      */
-#define        CONFIG_SYS_PROMPT               "INCA-IP # "    /* 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              16              /* max number of command args*/
-
-#define CONFIG_SYS_MALLOC_LEN          128*1024
-
-#define CONFIG_SYS_BOOTPARAMS_LEN      128*1024
-
-#define CONFIG_SYS_MIPS_TIMER_FREQ     (incaip_get_cpuclk() / 2)
-
-#define CONFIG_SYS_SDRAM_BASE          0x80000000
-
-#define        CONFIG_SYS_LOAD_ADDR            0x80100000      /* default load address */
-
-#define CONFIG_SYS_MEMTEST_START       0x80100000
-#define CONFIG_SYS_MEMTEST_END         0x80800000
-
-/*-----------------------------------------------------------------------
- * FLASH and environment 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 PHYS_FLASH_1           0xb0000000 /* Flash Bank #1 */
-#define PHYS_FLASH_2           0xb0800000 /* Flash Bank #2 */
-
-/* The following #defines are needed to get flash environment right */
-#define        CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)
-
-#define CONFIG_SYS_INIT_SP_OFFSET      0x400000
-
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Timeout for Flash Erase */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Timeout for Flash Write */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-
-/* Address and size of Primary Environment Sector      */
-#define CONFIG_ENV_ADDR                0xB0030000
-#define CONFIG_ENV_SIZE                0x10000
-
-#define CONFIG_FLASH_16BIT
-
-#define CONFIG_NR_DRAM_BANKS   1
-
-#define CONFIG_INCA_IP_SWITCH
-#define CONFIG_INCA_IP_SWITCH_AMDIX
-
-/*
- * JFFS2 partitions
- */
-/* No command line, one static partition, use all space on the device */
-#undef CONFIG_CMD_MTDPARTS
-#define CONFIG_JFFS2_DEV               "nor1"
-#define CONFIG_JFFS2_PART_SIZE         0xFFFFFFFF
-#define CONFIG_JFFS2_PART_OFFSET       0x00000000
-
-/* mtdparts command line support */
-/*
-#define CONFIG_CMD_MTDPARTS
-#define MTDIDS_DEFAULT         "nor0=INCA-IP Bank 0"
-#define MTDPARTS_DEFAULT       "mtdparts=INCA-IP Bank 0:192k(uboot)," \
-                                                       "64k(env)," \
-                                                       "768k(linux)," \
-                                                       "1m@3m(rootfs)," \
-                                                       "768k(linux2)," \
-                                                       "3m@5m(rootfs2)"
-*/
-
-/*-----------------------------------------------------------------------
- * Cache Configuration
- */
-#define CONFIG_SYS_DCACHE_SIZE         4096
-#define CONFIG_SYS_ICACHE_SIZE         4096
-#define CONFIG_SYS_CACHELINE_SIZE      16
-
-#endif /* __CONFIG_H */
index 29c6f60971aa0776d0e841aacaf19f061bc8484f..c8df23b534ec32db750a8c18320243c7dbdabcc7 100644 (file)
@@ -27,7 +27,7 @@
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
 /* at end of uboot partition, before env */
-#define CONFIG_SYS_QE_FMAN_FW_ADDR   0xF00B0000
+#define CONFIG_SYS_QE_FW_ADDR   0xF00B0000
 
 /*
  * System IO Config
index 582978afe206b645c43aaa9e297390d3317dd82e..418e3d129818f48b6dc8a9f935ef607967ebe6f4 100644 (file)
@@ -350,7 +350,7 @@ int get_scl(void);
  * ucode is stored after env, so we got 0x120000.
  */
 #define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0x120000
+#define CONFIG_SYS_FMAN_FW_ADDR        0x120000
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
 
diff --git a/include/configs/lubbock.h b/include/configs/lubbock.h
deleted file mode 100644 (file)
index 4ffe165..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Configuation settings for the LUBBOCK board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_CPU_PXA25X              1       /* This is an PXA250 CPU    */
-#define CONFIG_LUBBOCK         1       /* on an LUBBOCK Board      */
-#define CONFIG_LCD             1
-#ifdef CONFIG_LCD
-#define CONFIG_PXA_LCD
-#define CONFIG_SHARP_LM8V31
-#endif
-#define CONFIG_MMC
-#define CONFIG_BOARD_LATE_INIT
-#define CONFIG_DOS_PARTITION
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN      (CONFIG_ENV_SIZE + 128*1024)
-
-/*
- * Hardware drivers
- */
-#define CONFIG_LAN91C96
-#define CONFIG_LAN91C96_BASE 0x0C000000
-
-/*
- * select serial console configuration
- */
-#define CONFIG_PXA_SERIAL
-#define CONFIG_FFUART         1       /* we use FFUART on LUBBOCK */
-#define CONFIG_CONS_INDEX      3
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE                115200
-
-
-/*
- * 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_FAT
-
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_ETHADDR         08:00:3e:26:0a:5b
-#define CONFIG_NETMASK         255.255.0.0
-#define CONFIG_IPADDR          192.168.0.21
-#define CONFIG_SERVERIP                192.168.0.250
-#define CONFIG_BOOTCOMMAND     "bootm 80000"
-#define CONFIG_BOOTARGS                "root=/dev/mtdblock2 rootfstype=cramfs console=ttyS0,115200"
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_TIMESTAMP
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400          /* speed to run kgdb serial port */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_HUSH_PARSER         1
-
-#define CONFIG_SYS_LONGHELP                            /* undef to save memory         */
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT              "$ "            /* Monitor Command Prompt */
-#else
-#endif
-#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_DEVICE_NULLDEV      1
-
-#define CONFIG_SYS_MEMTEST_START       0xa0400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0xa0800000      /* 4 ... 8 MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR   (CONFIG_SYS_DRAM_BASE + 0x8000) /* default load address */
-
-#define CONFIG_SYS_CPUSPEED            0x161           /* set core clock to 400/200/100 MHz */
-
-#ifdef CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define CONFIG_CMD_MMC
-#define CONFIG_SYS_MMC_BASE            0xF0000000
-#endif
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   4          /* we have 2 banks of DRAM */
-#define PHYS_SDRAM_1           0xa0000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE      0x04000000 /* 64 MB */
-#define PHYS_SDRAM_2           0xa4000000 /* SDRAM Bank #2 */
-#define PHYS_SDRAM_2_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_3           0xa8000000 /* SDRAM Bank #3 */
-#define PHYS_SDRAM_3_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_4           0xac000000 /* SDRAM Bank #4 */
-#define PHYS_SDRAM_4_SIZE      0x00000000 /* 0 MB */
-
-#define PHYS_FLASH_1           0x00000000 /* Flash Bank #1 */
-#define PHYS_FLASH_2           0x04000000 /* Flash Bank #2 */
-#define PHYS_FLASH_SIZE                0x02000000 /* 32 MB */
-#define PHYS_FLASH_BANK_SIZE   0x02000000 /* 32 MB Banks */
-#define PHYS_FLASH_SECT_SIZE   0x00040000 /* 256 KB sectors (x2) */
-
-#define CONFIG_SYS_DRAM_BASE           0xa0000000
-#define CONFIG_SYS_DRAM_SIZE           0x04000000
-
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         0xfffff800
-
-#define FPGA_REGS_BASE_PHYSICAL 0x08000000
-
-/*
- * GPIO settings
- */
-#define CONFIG_SYS_GPSR0_VAL           0x00008000
-#define CONFIG_SYS_GPSR1_VAL           0x00FC0382
-#define CONFIG_SYS_GPSR2_VAL           0x0001FFFF
-#define CONFIG_SYS_GPCR0_VAL           0x00000000
-#define CONFIG_SYS_GPCR1_VAL           0x00000000
-#define CONFIG_SYS_GPCR2_VAL           0x00000000
-#define CONFIG_SYS_GPDR0_VAL           0x0060A800
-#define CONFIG_SYS_GPDR1_VAL           0x00FF0382
-#define CONFIG_SYS_GPDR2_VAL           0x0001C000
-#define CONFIG_SYS_GAFR0_L_VAL         0x98400000
-#define CONFIG_SYS_GAFR0_U_VAL         0x00002950
-#define CONFIG_SYS_GAFR1_L_VAL         0x000A9558
-#define CONFIG_SYS_GAFR1_U_VAL         0x0005AAAA
-#define CONFIG_SYS_GAFR2_L_VAL         0xA0000000
-#define CONFIG_SYS_GAFR2_U_VAL         0x00000002
-
-#define CONFIG_SYS_PSSR_VAL            0x20
-
-#define        CONFIG_SYS_CCCR                 CCCR_L27|CCCR_M2|CCCR_N10
-#define        CONFIG_SYS_CKEN                 0x0
-
-/*
- * Memory settings
- */
-#define CONFIG_SYS_MSC0_VAL            0x23F223F2
-#define CONFIG_SYS_MSC1_VAL            0x3FF1A441
-#define CONFIG_SYS_MSC2_VAL            0x7FF97FF1
-#define CONFIG_SYS_MDCNFG_VAL          0x00001AC9
-#define CONFIG_SYS_MDREFR_VAL          0x00018018
-#define CONFIG_SYS_MDMRS_VAL           0x00000000
-
-#define        CONFIG_SYS_FLYCNFG_VAL          0x00000000
-#define        CONFIG_SYS_SXCNFG_VAL           0x00000000
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define CONFIG_SYS_MECR_VAL            0x00000000
-#define CONFIG_SYS_MCMEM0_VAL          0x00010504
-#define CONFIG_SYS_MCMEM1_VAL          0x00010504
-#define CONFIG_SYS_MCATT0_VAL          0x00010504
-#define CONFIG_SYS_MCATT1_VAL          0x00010504
-#define CONFIG_SYS_MCIO0_VAL           0x00004715
-#define CONFIG_SYS_MCIO1_VAL           0x00004715
-
-#define _LED                   0x08000010
-#define LED_BLANK              0x08000040
-
-/*
- * FLASH and environment 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    */
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Write */
-
-/* NOTE: many default partitioning schemes assume the kernel starts at the
- * second sector, not an environment.  You have been warned!
- */
-#define        CONFIG_SYS_MONITOR_LEN          PHYS_FLASH_SECT_SIZE
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                (PHYS_FLASH_1 + PHYS_FLASH_SECT_SIZE)
-#define CONFIG_ENV_SECT_SIZE   PHYS_FLASH_SECT_SIZE
-#define CONFIG_ENV_SIZE                (PHYS_FLASH_SECT_SIZE / 16)
-
-
-/*
- * FPGA Offsets
- */
-#define WHOAMI_OFFSET          0x00
-#define HEXLED_OFFSET          0x10
-#define BLANKLED_OFFSET                0x40
-#define DISCRETELED_OFFSET     0x40
-#define CNFG_SWITCHES_OFFSET   0x50
-#define USER_SWITCHES_OFFSET   0x60
-#define MISC_WR_OFFSET         0x80
-#define MISC_RD_OFFSET         0x90
-#define INT_MASK_OFFSET                0xC0
-#define INT_CLEAR_OFFSET       0xD0
-#define GP_OFFSET              0x100
-
-#endif /* __CONFIG_H */
index cc574ed040080bbae84611815ea84f226aaf85a9..a29b86b4f63c95fe5110f901ca52891c315fa4a2 100644 (file)
@@ -14,6 +14,9 @@
  * System configuration
  */
 #define CONFIG_MALTA
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_MEMSIZE_IN_BYTES
 
index 486787e1479694b9c52c94084afc1c71eb3eb449..06b7e94184e74dc7bcea12a461308fa6fcf9bfd2 100644 (file)
@@ -71,7 +71,7 @@
 
 /* ethernet */
 #undef CONFIG_SYS_ENET
-#if defined(XILINX_EMACLITE_BASEADDR)
+#if defined(XILINX_EMACLITE_BASEADDR) || defined(CONFIG_OF_CONTROL)
 # define CONFIG_XILINX_EMACLITE        1
 # define CONFIG_SYS_ENET
 #endif
index 07b61795bb9efa587a0159431e394acef141b7fc..e745945ba73af7d9da9350fdc23f7060344609b6 100644 (file)
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN (256 * 1024)/* Reserve 256 kB for Mon */
+#define CONFIG_SYS_MONITOR_LEN (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN  (1024 * 1024)/* Reserved for malloc */
 
 #define CONFIG_SYS_CPLD_BASE   0xffa00000
 #ifdef CONFIG_QE
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xefec0000
+#define CONFIG_SYS_QE_FW_ADDR  0xefec0000
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #endif /* CONFIG_QE */
 
index c296a0759947f2c1081cd91a931302ae10092805..911203d85c17aad983ab51421cab3ba01b8ab7e7 100644 (file)
@@ -202,7 +202,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN (512 * 1024)/* Reserve 512 kB for Mon */
+#define CONFIG_SYS_MONITOR_LEN (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN  (1024 * 1024)/* Reserved for malloc */
 
 #define CONFIG_SYS_BR0_PRELIM  CONFIG_FLASH_BR_PRELIM  /* NOR Base Address */
@@ -348,7 +348,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #ifdef CONFIG_QE
 /* QE microcode/firmware address */
 #define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xefec0000
+#define CONFIG_SYS_QE_FW_ADDR  0xefec0000
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
 #endif /* CONFIG_QE */
 
diff --git a/include/configs/qemu-ppce500.h b/include/configs/qemu-ppce500.h
new file mode 100644 (file)
index 0000000..10e014d
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+ * Copyright 2011-2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * Corenet DS style board configuration file
+ */
+#ifndef __QEMU_PPCE500_H
+#define __QEMU_PPCE500_H
+
+#define CONFIG_CMD_REGINFO
+
+/* High Level Configuration Options */
+#define CONFIG_BOOKE
+#define CONFIG_E500                    /* BOOKE e500 family */
+#define CONFIG_QEMU_E500
+
+#undef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE   0xf01000 /* 15 MB */
+
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+
+#define CONFIG_SYS_RAMBOOT
+
+#define CONFIG_PCI                     /* Enable PCI/PCIE */
+#define CONFIG_PCI1            1       /* PCI controller 1 */
+#define CONFIG_FSL_PCI_INIT            /* Use common FSL init code */
+#define CONFIG_SYS_PCI_64BIT           /* enable 64-bit PCI resources */
+
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_ENABLE_36BIT_PHYS
+
+#define CONFIG_ADDR_MAP
+#define CONFIG_SYS_NUM_ADDR_MAP                16      /* number of TLB1 entries */
+
+#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 */
+
+/* Needed to fill the ccsrbar pointer */
+#define CONFIG_BOARD_EARLY_INIT_F
+
+/* Virtual address to CCSRBAR */
+#define CONFIG_SYS_CCSRBAR             0xe0000000
+/* Physical address should be a function call */
+#ifndef __ASSEMBLY__
+extern unsigned long long get_phys_ccsrbar_addr_early(void);
+#endif
+#define CONFIG_SYS_CCSR_DO_NOT_RELOCATE
+
+/* Virtual address range for PCI region maps */
+#define CONFIG_SYS_PCI_MAP_START       0x80000000
+#define CONFIG_SYS_PCI_MAP_END         0xe8000000
+
+/* Virtual address to a temporary map if we need it (max 128MB) */
+#define CONFIG_SYS_TMPVIRT             0xe8000000
+
+/*
+ * 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_CHIP_SELECTS_PER_CTRL   0
+
+#define CONFIG_SYS_CLK_FREQ        33000000
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_SYS_BOOT_BLOCK          0x00000000      /* boot TLB */
+
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+
+#define CONFIG_ENV_IS_NOWHERE
+
+#define CONFIG_HWCONFIG
+
+#define CONFIG_SYS_INIT_RAM_ADDR               0x00100000
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0x0
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0x00100000
+/* 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)
+#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         (512 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
+
+#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))
+
+#define CONFIG_SYS_BAUDRATE_TABLE      \
+       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CCSRBAR+0x4500)
+#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_CCSRBAR+0x4600)
+
+/* Use the HUSH parser */
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
+
+/* 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}() */
+
+/*
+ * General PCI
+ * Memory space is mapped 1-1, but I/O space must start from 0.
+ */
+
+#ifdef CONFIG_PCI
+#define CONFIG_PCI_INDIRECT_BRIDGE
+#define CONFIG_NET_MULTI
+#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 */
+
+#define CONFIG_LBA48
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_EXT2
+
+/*
+ * Environment
+ */
+#define CONFIG_ENV_SIZE                0x2000
+
+#define CONFIG_LOADS_ECHO              /* echo on for serial download */
+
+#define CONFIG_LAST_STAGE_INIT
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_PING
+#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_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 */
+
+/*
+ * 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 */
+
+/*
+ * Environment Configuration
+ */
+#define CONFIG_ROOTPATH                "/opt/nfsroot"
+#define CONFIG_BOOTFILE                "uImage"
+#define CONFIG_UBOOTPATH       "u-boot.bin"    /* U-Boot image on TFTP server*/
+
+/* default location for tftp and bootm */
+#define CONFIG_LOADADDR                1000000
+
+#define CONFIG_BAUDRATE        115200
+
+#define CONFIG_BOOTDELAY        1
+#define CONFIG_BOOTCOMMAND             \
+       "test -n \"$qemu_kernel_addr\" && bootm $qemu_kernel_addr - $fdt_addr_r\0"
+
+#endif /* __QEMU_PPCE500_H */
diff --git a/include/configs/rsdproto.h b/include/configs/rsdproto.h
deleted file mode 100644 (file)
index 0621138..0000000
+++ /dev/null
@@ -1,400 +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>
- *
- * Configuation settings for the R&S Protocol Board board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_RSD_PROTO       1       /* on a R&S Protocol Board      */
-#define CONFIG_CPM2            1       /* Has a CPM2 */
-
-#define        CONFIG_SYS_TEXT_BASE    0xff000000
-#define        CONFIG_SYS_LDSCRIPT     "board/rsdproto/u-boot.lds"
-
-#define        CONFIG_MISC_INIT_F      1       /* Use misc_init_f()            */
-
-/*
- * 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.
- */
-#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 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 */
-
-#if (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_INDEX */
-
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-/* enable I2C */
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support */
-#define CONFIG_SYS_I2C_SPEED           50000   /* I2C speed and slave address */
-#define CONFIG_SYS_I2C_SLAVE           0x30
-
-
-/* system clock rate (CLKIN) - equal to the 60x and local bus speed */
-#define CONFIG_8260_CLKIN      50000000        /* in Hz */
-
-#define CONFIG_BAUDRATE                115200
-
-
-/*
- * 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_KGDB
-
-
-/* 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_RSD_BOOT_LOW 1
-
-#define CONFIG_BOOTDELAY       5
-#define CONFIG_BOOTARGS                "devfs=mount root=ramfs"
-#define CONFIG_ETHADDR         08:00:3e:26:0a:5a
-#define CONFIG_NETMASK          255.255.0.0
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400          /* speed to run kgdb serial port */
-#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       0x00400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x01c00000      /* 4 ... 28 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.
- */
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define PHYS_SDRAM_60X         0x00000000 /* SDRAM (60x Bus) */
-#define PHYS_SDRAM_60X_SIZE    0x08000000 /* 128 MB */
-
-#define PHYS_SDRAM_LOCAL       0x40000000 /* SDRAM (Local Bus) */
-#define PHYS_SDRAM_LOCAL_SIZE  0x04000000 /* 64 MB */
-
-#define PHYS_DPRAM_PCI         0xE8000000 /* DPRAM PPC/PCI */
-#define PHYS_DPRAM_PCI_SIZE    0x00020000 /* 128 KB */
-
-/*#define PHYS_DPRAM_PCI_SEM   0x04020000 / * DPRAM PPC/PCI Semaphore */
-/*#define PHYS_DPRAM_PCI_SEM_SIZE      0x00000001 / * 1 Byte */
-
-#define PHYS_DPRAM_SHARC       0xE8100000 /* DPRAM PPC/Sharc */
-#define PHYS_DPRAM_SHARC_SIZE  0x00040000 /* 256 KB */
-
-/*#define PHYS_DPRAM_SHARC_SEM 0x04140000 / * DPRAM PPC/Sharc Semaphore */
-/*#define PHYS_DPRAM_SHARC_SEM_SIZE 0x00000001 / * 1 Byte */
-
-#define PHYS_VIRTEX_REGISTER    0xE8300000 /* FPGA implemented register */
-#define PHYS_VIRTEX_REGISTER_SIZE 0x00000100
-
-#define PHYS_USB               0x04200000 /* USB Controller (60x Bus) */
-#define PHYS_USB_SIZE          0x00000002 /* 2 Bytes */
-
-#define PHYS_IMMR              0xF0000000 /* Internal Memory Mapped Reg. */
-
-#define PHYS_FLASH             0xFF000000 /* Flash (60x Bus) */
-#define PHYS_FLASH_SIZE                0x01000000 /* 16 MB */
-
-#define CONFIG_SYS_IMMR                PHYS_IMMR
-
-/*-----------------------------------------------------------------------
- * Reset Address
- *
- * In order to reset the CPU, U-Boot jumps to a special address which
- * causes a machine check exception. The default address for this is
- * CONFIG_SYS_MONITOR_BASE - sizeof (ulong), which might not always work, eg. when
- * testing the monitor in RAM using a JTAG debugger.
- *
- * Just set CONFIG_SYS_RESET_ADDRESS to an address that you know is sure to
- * cause a bus error on your hardware.
- */
-#define CONFIG_SYS_RESET_ADDRESS       0x20000000
-
-/*-----------------------------------------------------------------------
- * Hard Reset Configuration Words
- */
-
-#if defined(CONFIG_SYS_RSD_BOOT_LOW)
-#  define  CONFIG_SYS_RSD_HRCW_BOOT_FLAGS  (HRCW_CIP | HRCW_BMS)
-#else
-#  define  CONFIG_SYS_RSD_HRCW_BOOT_FLAGS  (0)
-#endif /* defined(CONFIG_SYS_RSD_BOOT_LOW) */
-
-/* get the HRCW ISB field from CONFIG_SYS_IMMR */
-#define CONFIG_SYS_RSD_HRCW_IMMR ( ((CONFIG_SYS_IMMR & 0x10000000) >> 10) |\
-                           ((CONFIG_SYS_IMMR & 0x01000000) >> 7)  |\
-                           ((CONFIG_SYS_IMMR & 0x00100000) >> 4) )
-
-#define CONFIG_SYS_HRCW_MASTER (HRCW_L2CPC10 | \
-                        HRCW_DPPC11 | \
-                        CONFIG_SYS_RSD_HRCW_IMMR |\
-                        HRCW_MMR00 | \
-                        HRCW_APPC10 | \
-                        HRCW_CS10PC00 | \
-                        HRCW_MODCK_H0000 |\
-                        CONFIG_SYS_RSD_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 dependend.
- */
-#define        CONFIG_SYS_SDRAM_BASE           PHYS_SDRAM_60X
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH
-/*#define      CONFIG_SYS_MONITOR_BASE 0x200000 */
-#define        CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
-#if CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_RAMBOOT
-#endif
-#define        CONFIG_SYS_MONITOR_LEN          (160 << 10)     /* Reserve 160 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     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      63      /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    12000   /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    3000    /* Timeout for Flash Write (in ms)      */
-
-/* turn off NVRAM env feature */
-#undef CONFIG_NVRAM_ENV
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_ADDR        (PHYS_FLASH + 0x28000)  /* Addr of Environment Sector   */
-#define CONFIG_ENV_SECT_SIZE   0x8000  /* Total Size of Environment Sector     */
-
-/*-----------------------------------------------------------------------
- * 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         0x100c0000
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration                            4-31
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DPPC11 | SIUMCR_L2CPC10 | SIUMCR_APPC10 | \
-                                        SIUMCR_CS10PC01 | SIUMCR_BCTLC01)
-
-/*-----------------------------------------------------------------------
- * 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        0x00000000
-
-/*-----------------------------------------------------------------------
- * RCCR - RISC Controller Configuration                                13-7
- *-----------------------------------------------------------------------
- */
-#define CONFIG_SYS_RCCR        0
-
-/*
- * Init Memory Controller:
- */
-
-#define CONFIG_SYS_PSDMR       0x494D2452
-#define CONFIG_SYS_LSDMR       0x49492552
-
-/* Flash */
-#define CONFIG_SYS_BR0_PRELIM  (PHYS_FLASH | BRx_V)
-#define CONFIG_SYS_OR0_PRELIM  (P2SZ_TO_AM(PHYS_FLASH_SIZE) | \
-                        ORxG_BCTLD | \
-                        ORxG_SCY_5_CLK)
-
-/* DPRAM to the PCI BUS on the protocol board */
-#define CONFIG_SYS_BR1_PRELIM  (PHYS_DPRAM_PCI | BRx_V)
-#define CONFIG_SYS_OR1_PRELIM  (P2SZ_TO_AM(PHYS_DPRAM_PCI_SIZE) | \
-                        ORxG_ACS_DIV4)
-
-/* 60x Bus SDRAM */
-#define CONFIG_SYS_BR2_PRELIM  (PHYS_SDRAM_60X | BRx_MS_SDRAM_P | BRx_V)
-#define CONFIG_SYS_OR2_PRELIM  (ORxS_SIZE_TO_AM(PHYS_SDRAM_60X_SIZE) | \
-                        ORxS_BPD_4 | \
-                        ORxS_ROWST_PBI1_A2 | \
-                        ORxS_NUMR_13 | \
-                        ORxS_IBID)
-
-/* Virtex-FPGA - Register */
-#define CONFIG_SYS_BR3_PRELIM  (PHYS_VIRTEX_REGISTER | BRx_V)
-#define CONFIG_SYS_OR3_PRELIM  (ORxS_SIZE_TO_AM(PHYS_VIRTEX_REGISTER_SIZE) | \
-                        ORxG_SCY_1_CLK | \
-                        ORxG_ACS_DIV2 | \
-                        ORxG_CSNT )
-
-/* local bus SDRAM */
-#define CONFIG_SYS_BR4_PRELIM  (PHYS_SDRAM_LOCAL | BRx_PS_32 | BRx_MS_SDRAM_L | BRx_V)
-#define CONFIG_SYS_OR4_PRELIM  (ORxS_SIZE_TO_AM(PHYS_SDRAM_LOCAL_SIZE) | \
-                        ORxS_BPD_4 | \
-                        ORxS_ROWST_PBI1_A4 | \
-                        ORxS_NUMR_13)
-
-/* DPRAM to the Sharc-Bus on the protocol board */
-#define CONFIG_SYS_BR5_PRELIM  (PHYS_DPRAM_SHARC | BRx_V)
-#define CONFIG_SYS_OR5_PRELIM  (P2SZ_TO_AM(PHYS_DPRAM_SHARC_SIZE) | \
-                        ORxG_ACS_DIV4)
-
-#endif /* __CONFIG_H */
index bd324ba2fa2f1cde3ad6354794a89ed91828b078..36bc5294ef4df7b107e521100e5721f32db99f70 100644 (file)
 /*
  *  Config the L3 Cache as L3 SRAM
  */
-#define CONFIG_SYS_INIT_L3_ADDR                CONFIG_RAMBOOT_TEXT_BASE
+#define CONFIG_SYS_INIT_L3_ADDR                0xFFFC0000
+#define CONFIG_SYS_L3_SIZE             (512 << 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   (50 << 10)
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SPL_GD_ADDR + 64 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (22 << 10)
 
 #define CONFIG_SYS_DCSRBAR             0xf0000000
 #define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
 #define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
 
 
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+#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_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
 #define CONFIG_MISC_INIT_R
                                        GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
 /* Serial Port - controlled on board with jumper J8
index fc16911686acd4f93892539556da758c29284e6f..90f19626a39e22b5b9f4c42886f7e38a91c4b73c 100644 (file)
        "name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \
 
 #define CONFIG_DFU_ALT \
-       "u-boot mmc 80 400;" \
+       "u-boot raw 0x80 0x400;" \
        "uImage ext4 0 2;" \
        "modem.bin ext4 0 2;" \
        "exynos4210-trats.dtb ext4 0 2;" \
        ""PARTS_ROOT" part 0 5;" \
        ""PARTS_DATA" part 0 6;" \
        ""PARTS_UMS" part 0 7;" \
-       "params.bin mmc 0x38 0x8\0"
+       "params.bin raw 0x38 0x8\0"
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "bootk=" \
index 3d5f21dde07ce7557331046931d0007c9b969154..206975bcae0ec4b88ac543186c1d9d7053394df4 100644 (file)
@@ -91,7 +91,7 @@
        "name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \
 
 #define CONFIG_DFU_ALT \
-       "u-boot mmc 80 800;" \
+       "u-boot raw 0x80 0x800;" \
        "uImage ext4 0 2;" \
        "modem.bin ext4 0 2;" \
        "exynos4412-trats2.dtb ext4 0 2;" \
        ""PARTS_ROOT" part 0 5;" \
        ""PARTS_DATA" part 0 6;" \
        ""PARTS_UMS" part 0 7;" \
-       "params.bin mmc 0x38 0x8\0"
+       "params.bin raw 0x38 0x8\0"
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "bootk=" \
index 15a3e8d35181ddf71a765d32391f55610e7958bd..cf2aac6ae4274735140260e87edf98f105e78f0c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -290,11 +290,220 @@ typedef struct ddr3_spd_eeprom_s {
 
 } ddr3_spd_eeprom_t;
 
+/* From JEEC Standard No. 21-C release 23A */
+struct ddr4_spd_eeprom_s {
+       /* General Section: Bytes 0-127 */
+       uint8_t info_size_crc;          /*  0 # bytes */
+       uint8_t spd_rev;                /*  1 Total # bytes of SPD */
+       uint8_t mem_type;               /*  2 Key Byte / mem type */
+       uint8_t module_type;            /*  3 Key Byte / Module Type */
+       uint8_t density_banks;          /*  4 Density and Banks */
+       uint8_t addressing;             /*  5 Addressing */
+       uint8_t package_type;           /*  6 Package type */
+       uint8_t opt_feature;            /*  7 Optional features */
+       uint8_t thermal_ref;            /*  8 Thermal and refresh */
+       uint8_t oth_opt_features;       /*  9 Other optional features */
+       uint8_t res_10;                 /* 10 Reserved */
+       uint8_t module_vdd;             /* 11 Module nominal voltage */
+       uint8_t organization;           /* 12 Module Organization */
+       uint8_t bus_width;              /* 13 Module Memory Bus Width */
+       uint8_t therm_sensor;           /* 14 Module Thermal Sensor */
+       uint8_t ext_type;               /* 15 Extended module type */
+       uint8_t res_16;
+       uint8_t timebases;              /* 17 MTb and FTB */
+       uint8_t tck_min;                /* 18 tCKAVGmin */
+       uint8_t tck_max;                /* 19 TCKAVGmax */
+       uint8_t caslat_b1;              /* 20 CAS latencies, 1st byte */
+       uint8_t caslat_b2;              /* 21 CAS latencies, 2nd byte */
+       uint8_t caslat_b3;              /* 22 CAS latencies, 3rd byte */
+       uint8_t caslat_b4;              /* 23 CAS latencies, 4th byte */
+       uint8_t taa_min;                /* 24 Min CAS Latency Time */
+       uint8_t trcd_min;               /* 25 Min RAS# to CAS# Delay Time */
+       uint8_t trp_min;                /* 26 Min Row Precharge Delay Time */
+       uint8_t tras_trc_ext;           /* 27 Upper Nibbles for tRAS and tRC */
+       uint8_t tras_min_lsb;           /* 28 tRASmin, lsb */
+       uint8_t trc_min_lsb;            /* 29 tRCmin, lsb */
+       uint8_t trfc1_min_lsb;          /* 30 Min Refresh Recovery Delay Time */
+       uint8_t trfc1_min_msb;          /* 31 Min Refresh Recovery Delay Time */
+       uint8_t trfc2_min_lsb;          /* 32 Min Refresh Recovery Delay Time */
+       uint8_t trfc2_min_msb;          /* 33 Min Refresh Recovery Delay Time */
+       uint8_t trfc4_min_lsb;          /* 34 Min Refresh Recovery Delay Time */
+       uint8_t trfc4_min_msb;          /* 35 Min Refresh Recovery Delay Time */
+       uint8_t tfaw_msb;               /* 36 Upper Nibble for tFAW */
+       uint8_t tfaw_min;               /* 37 tFAW, lsb */
+       uint8_t trrds_min;              /* 38 tRRD_Smin, MTB */
+       uint8_t trrdl_min;              /* 39 tRRD_Lmin, MTB */
+       uint8_t tccdl_min;              /* 40 tCCS_Lmin, MTB */
+       uint8_t res_41[60-41];          /* 41 Rserved */
+       uint8_t mapping[78-60];         /* 60~77 Connector to SDRAM bit map */
+       uint8_t res_78[117-78];         /* 78~116, Reserved */
+       int8_t fine_tccdl_min;          /* 117 Fine offset for tCCD_Lmin */
+       int8_t fine_trrdl_min;          /* 118 Fine offset for tRRD_Lmin */
+       int8_t fine_trrds_min;          /* 119 Fine offset for tRRD_Smin */
+       int8_t fine_trc_min;            /* 120 Fine offset for tRCmin */
+       int8_t fine_trp_min;            /* 121 Fine offset for tRPmin */
+       int8_t fine_trcd_min;           /* 122 Fine offset for tRCDmin */
+       int8_t fine_taa_min;            /* 123 Fine offset for tAAmin */
+       int8_t fine_tck_max;            /* 124 Fine offset for tCKAVGmax */
+       int8_t fine_tck_min;            /* 125 Fine offset for tCKAVGmin */
+       /* CRC: Bytes 126-127 */
+       uint8_t crc[2];                 /* 126-127 SPD CRC */
+
+       /* Module-Specific Section: Bytes 128-255 */
+       union {
+               struct {
+                       /* 128 (Unbuffered) Module Nominal Height */
+                       uint8_t mod_height;
+                       /* 129 (Unbuffered) Module Maximum Thickness */
+                       uint8_t mod_thickness;
+                       /* 130 (Unbuffered) Reference Raw Card Used */
+                       uint8_t ref_raw_card;
+                       /* 131 (Unbuffered) Address Mapping from
+                             Edge Connector to DRAM */
+                       uint8_t addr_mapping;
+                       /* 132~253 (Unbuffered) Reserved */
+                       uint8_t res_132[254-132];
+                       /* 254~255 CRC */
+                       uint8_t crc[2];
+               } unbuffered;
+               struct {
+                       /* 128 (Registered) Module Nominal Height */
+                       uint8_t mod_height;
+                       /* 129 (Registered) Module Maximum Thickness */
+                       uint8_t mod_thickness;
+                       /* 130 (Registered) Reference Raw Card Used */
+                       uint8_t ref_raw_card;
+                       /* 131 DIMM Module Attributes */
+                       uint8_t modu_attr;
+                       /* 132 RDIMM Thermal Heat Spreader Solution */
+                       uint8_t thermal;
+                       /* 133 Register Manufacturer ID Code, LSB */
+                       uint8_t reg_id_lo;
+                       /* 134 Register Manufacturer ID Code, MSB */
+                       uint8_t reg_id_hi;
+                       /* 135 Register Revision Number */
+                       uint8_t reg_rev;
+                       /* 136 Address mapping from register to DRAM */
+                       uint8_t reg_map;
+                       /* 137~253 Reserved */
+                       uint8_t res_137[254-137];
+                       /* 254~255 CRC */
+                       uint8_t crc[2];
+               } registered;
+               struct {
+                       /* 128 (Loadreduced) Module Nominal Height */
+                       uint8_t mod_height;
+                       /* 129 (Loadreduced) Module Maximum Thickness */
+                       uint8_t mod_thickness;
+                       /* 130 (Loadreduced) Reference Raw Card Used */
+                       uint8_t ref_raw_card;
+                       /* 131 DIMM Module Attributes */
+                       uint8_t modu_attr;
+                       /* 132 RDIMM Thermal Heat Spreader Solution */
+                       uint8_t thermal;
+                       /* 133 Register Manufacturer ID Code, LSB */
+                       uint8_t reg_id_lo;
+                       /* 134 Register Manufacturer ID Code, MSB */
+                       uint8_t reg_id_hi;
+                       /* 135 Register Revision Number */
+                       uint8_t reg_rev;
+                       /* 136 Address mapping from register to DRAM */
+                       uint8_t reg_map;
+                       /* 137 Register Output Drive Strength for CMD/Add*/
+                       uint8_t reg_drv;
+                       /* 138 Register Output Drive Strength for CK */
+                       uint8_t reg_drv_ck;
+                       /* 139 Data Buffer Revision Number */
+                       uint8_t data_buf_rev;
+                       /* 140 DRAM VrefDQ for Package Rank 0 */
+                       uint8_t vrefqe_r0;
+                       /* 141 DRAM VrefDQ for Package Rank 1 */
+                       uint8_t vrefqe_r1;
+                       /* 142 DRAM VrefDQ for Package Rank 2 */
+                       uint8_t vrefqe_r2;
+                       /* 143 DRAM VrefDQ for Package Rank 3 */
+                       uint8_t vrefqe_r3;
+                       /* 144 Data Buffer VrefDQ for DRAM Interface */
+                       uint8_t data_intf;
+                       /*
+                        * 145 Data Buffer MDQ Drive Strength and RTT
+                        * for data rate <= 1866
+                        */
+                       uint8_t data_drv_1866;
+                       /*
+                        * 146 Data Buffer MDQ Drive Strength and RTT
+                        * for 1866 < data rate <= 2400
+                        */
+                       uint8_t data_drv_2400;
+                       /*
+                        * 147 Data Buffer MDQ Drive Strength and RTT
+                        * for 2400 < data rate <= 3200
+                        */
+                       uint8_t data_drv_3200;
+                       /* 148 DRAM Drive Strength */
+                       uint8_t dram_drv;
+                       /*
+                        * 149 DRAM ODT (RTT_WR, RTT_NOM)
+                        * for data rate <= 1866
+                        */
+                       uint8_t dram_odt_1866;
+                       /*
+                        * 150 DRAM ODT (RTT_WR, RTT_NOM)
+                        * for 1866 < data rate <= 2400
+                        */
+                       uint8_t dram_odt_2400;
+                       /*
+                        * 151 DRAM ODT (RTT_WR, RTT_NOM)
+                        * for 2400 < data rate <= 3200
+                        */
+                       uint8_t dram_odt_3200;
+                       /*
+                        * 152 DRAM ODT (RTT_PARK)
+                        * for data rate <= 1866
+                        */
+                       uint8_t dram_odt_park_1866;
+                       /*
+                        * 153 DRAM ODT (RTT_PARK)
+                        * for 1866 < data rate <= 2400
+                        */
+                       uint8_t dram_odt_park_2400;
+                       /*
+                        * 154 DRAM ODT (RTT_PARK)
+                        * for 2400 < data rate <= 3200
+                        */
+                       uint8_t dram_odt_park_3200;
+                       uint8_t res_155[254-155];       /* Reserved */
+                       /* 254~255 CRC */
+                       uint8_t crc[2];
+               } loadreduced;
+               uint8_t uc[128]; /* 128-255 Module-Specific Section */
+       } mod_section;
+
+       uint8_t res_256[320-256];       /* 256~319 Reserved */
+
+       /* Module supplier's data: Byte 320~383 */
+       uint8_t mmid_lsb;               /* 320 Module MfgID Code LSB */
+       uint8_t mmid_msb;               /* 321 Module MfgID Code MSB */
+       uint8_t mloc;                   /* 322 Mfg Location */
+       uint8_t mdate[2];               /* 323~324 Mfg Date */
+       uint8_t sernum[4];              /* 325~328 Module Serial Number */
+       uint8_t mpart[20];              /* 329~348 Mfg's Module Part Number */
+       uint8_t mrev;                   /* 349 Module Revision Code */
+       uint8_t dmid_lsb;               /* 350 DRAM MfgID Code LSB */
+       uint8_t dmid_msb;               /* 351 DRAM MfgID Code MSB */
+       uint8_t stepping;               /* 352 DRAM stepping */
+       uint8_t msd[29];                /* 353~381 Mfg's Specific Data */
+       uint8_t res_382[2];             /* 382~383 Reserved */
+
+       uint8_t user[512-384];          /* 384~511 End User Programmable */
+};
+
 extern unsigned int ddr1_spd_check(const ddr1_spd_eeprom_t *spd);
 extern void ddr1_spd_dump(const ddr1_spd_eeprom_t *spd);
 extern unsigned int ddr2_spd_check(const ddr2_spd_eeprom_t *spd);
 extern void ddr2_spd_dump(const ddr2_spd_eeprom_t *spd);
 extern unsigned int ddr3_spd_check(const ddr3_spd_eeprom_t *spd);
+unsigned int ddr4_spd_check(const struct ddr4_spd_eeprom_s *spd);
 
 /*
  * Byte 2 Fundamental Memory Types.
@@ -310,6 +519,7 @@ extern unsigned int ddr3_spd_check(const ddr3_spd_eeprom_t *spd);
 #define SPD_MEMTYPE_DDR2_FBDIMM        (0x09)
 #define SPD_MEMTYPE_DDR2_FBDIMM_PROBE  (0x0A)
 #define SPD_MEMTYPE_DDR3       (0x0B)
+#define SPD_MEMTYPE_DDR4       (0x0C)
 
 /* DIMM Type for DDR2 SPD (according to v1.3) */
 #define DDR2_SPD_DIMMTYPE_UNDEFINED    (0x00)
@@ -338,4 +548,18 @@ extern unsigned int ddr3_spd_check(const ddr3_spd_eeprom_t *spd);
 #define DDR3_SPD_MODULETYPE_16B_SO_DIMM        (0x0C)
 #define DDR3_SPD_MODULETYPE_32B_SO_DIMM        (0x0D)
 
+/* DIMM Type for DDR4 SPD */
+#define DDR4_SPD_MODULETYPE_MASK       (0x0f)
+#define DDR4_SPD_MODULETYPE_EXT                (0x00)
+#define DDR4_SPD_MODULETYPE_RDIMM      (0x01)
+#define DDR4_SPD_MODULETYPE_UDIMM      (0x02)
+#define DDR4_SPD_MODULETYPE_SO_DIMM    (0x03)
+#define DDR4_SPD_MODULETYPE_LRDIMM     (0x04)
+#define DDR4_SPD_MODULETYPE_MINI_RDIMM (0x05)
+#define DDR4_SPD_MODULETYPE_MINI_UDIMM (0x06)
+#define DDR4_SPD_MODULETYPE_72B_SO_UDIMM       (0x08)
+#define DDR4_SPD_MODULETYPE_72B_SO_RDIMM       (0x09)
+#define DDR4_SPD_MODULETYPE_16B_SO_DIMM        (0x0C)
+#define DDR4_SPD_MODULETYPE_32B_SO_DIMM        (0x0D)
+
 #endif /* _DDR_SPD_H_ */
index 6c71ecbe3555377fd83eefc2f0fdd3a7a173646b..240916854a12a7ce8745b0ef843f6c0e4d03a325 100644 (file)
@@ -64,11 +64,6 @@ struct ram_internal_data {
        unsigned int    size;
 };
 
-static inline unsigned int get_mmc_blk_size(int dev)
-{
-       return find_mmc_device(dev)->read_bl_len;
-}
-
 #define DFU_NAME_SIZE                  32
 #define DFU_CMD_BUF_SIZE               128
 #ifndef CONFIG_SYS_DFU_DATA_BUF_SIZE
@@ -173,12 +168,5 @@ static inline int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s)
 }
 #endif
 
-#ifdef CONFIG_DFU_FUNCTION
 int dfu_add(struct usb_configuration *c);
-#else
-int dfu_add(struct usb_configuration *c)
-{
-       return 0;
-}
-#endif
 #endif /* __DFU_ENTITY_H_ */
index 0c2432657be189546c20032204af0dd1ab0b83db..5884a224d2416c75bd8d9d024067b6f178b7f14b 100644 (file)
@@ -24,6 +24,9 @@ typedef struct
 #ifdef CONFIG_SYS_DPAA_PME
        unsigned long freq_pme;
 #endif
+#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+       unsigned char diff_sysclk;
+#endif
 } MPC85xx_SYS_INFO;
 
 #endif  /* _ASMLANGUAGE */
index 46a3554ff9235607e38fc83e8c1b6321d7bb1113..08679aead95cca90fd4f178d2c5b36e61b061b8e 100644 (file)
@@ -146,7 +146,12 @@ extern unsigned long nand_env_oob_offset;
 extern char *env_name_spec;
 #endif
 
+#ifdef CONFIG_ENV_AES
+/* Make sure the payload is multiple of AES block size */
+#define ENV_SIZE ((CONFIG_ENV_SIZE - ENV_HEADER_SIZE) & ~(16 - 1))
+#else
 #define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
+#endif
 
 typedef struct environment_s {
        uint32_t        crc;            /* CRC32 over data bytes        */
@@ -154,7 +159,12 @@ typedef struct environment_s {
        unsigned char   flags;          /* active/obsolete flags        */
 #endif
        unsigned char   data[ENV_SIZE]; /* Environment data             */
-} env_t;
+} env_t
+#ifdef CONFIG_ENV_AES
+/* Make sure the env is aligned to block size. */
+__attribute__((aligned(16)))
+#endif
+;
 
 #ifdef ENV_IS_EMBEDDED
 extern env_t environment;
@@ -201,6 +211,9 @@ int set_default_vars(int nvars, char * const vars[]);
 /* Import from binary representation into hash table */
 int env_import(const char *buf, int check);
 
+/* Export from hash table into binary representation */
+int env_export(env_t *env_out);
+
 #endif /* DO_DEPS_ONLY */
 
 #endif /* _ENVIRONMENT_H_ */
diff --git a/include/fdc.h b/include/fdc.h
deleted file mode 100644 (file)
index 207b0e2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * (C) Copyright 2002
- * Stäubli Faverges - <www.staubli.com>
- * Pierre AUBERT  p.aubert@staubli.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _FDC_H_
-#define _FDC_H_
-
-/* Functions prototype                                                       */
-int fdc_fdos_init (int drive);
-int fdc_fdos_seek (int where);
-int fdc_fdos_read (void *buffer, int len);
-
-int dos_open(char *name);
-int dos_read (ulong addr);
-int dos_dir (void);
-
-#endif
index 15eba01662bd5d311c681a04200abfc50fb5aad5..ae010bb6248a5bd840166a0d32b9471b7988b1ac 100644 (file)
@@ -12,6 +12,8 @@
 
 #include <libfdt.h>
 
+u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell,
+                               const char *prop, const u32 dflt);
 u32 fdt_getprop_u32_default(const void *fdt, const char *path,
                                const char *prop, const u32 dflt);
 int fdt_chosen(void *fdt, int force);
@@ -92,6 +94,8 @@ int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);
 int fdt_verify_alias_address(void *fdt, int anode, const char *alias,
                              u64 addr);
 u64 fdt_get_base_address(void *fdt, int node);
+int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
+                  uint64_t *addr, uint64_t *len);
 
 enum fdt_status {
        FDT_STATUS_OKAY,
@@ -122,4 +126,9 @@ static inline int fdt_status_disabled_by_alias(void *fdt, const char* alias)
 }
 
 #endif /* ifdef CONFIG_OF_LIBFDT */
+
+#ifdef USE_HOSTCC
+int fdtdec_get_int(const void *blob, int node, const char *prop_name,
+               int default_val);
+#endif
 #endif /* ifndef __FDT_SUPPORT_H */
index 72c0b2e94edc7011280481ea44ac4929bdec4387..5c49b229dafe19b14fe5866187b826385534b549 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2011 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -9,6 +9,7 @@
 #ifndef FSL_DDR_MAIN_H
 #define FSL_DDR_MAIN_H
 
+#include <fsl_ddrc_version.h>
 #include <fsl_ddr_sdram.h>
 #include <fsl_ddr_dimm_params.h>
 
 #define ddr_out32(a, v)        out_be32(a, v)
 #endif
 
+#define _DDR_ADDR CONFIG_SYS_FSL_DDR_ADDR
+
+u32 fsl_ddr_get_version(void);
+
 #if defined(CONFIG_DDR_SPD) || defined(CONFIG_SPD_EEPROM)
 /*
  * Bind the main DDR setup driver's generic names
index 99a72bc6e16d6b88f57692ec3c76a81db564d927..09a67a680297d117ec67c43902fdf11794f0f46d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -13,7 +13,7 @@
 #define EDC_ECC                2
 #define EDC_AC_PARITY  4
 
-/* Parameters for a DDR2 dimm computed from the SPD */
+/* Parameters for a DDR dimm computed from the SPD */
 typedef struct dimm_params_s {
 
        /* DIMM organization parameters */
@@ -32,7 +32,12 @@ typedef struct dimm_params_s {
        unsigned int n_row_addr;
        unsigned int n_col_addr;
        unsigned int edc_config;        /* 0 = none, 1 = parity, 2 = ECC */
+#ifdef CONFIG_SYS_FSL_DDR4
+       unsigned int bank_addr_bits;
+       unsigned int bank_group_bits;
+#else
        unsigned int n_banks_per_sdram_device;
+#endif
        unsigned int burst_lengths_bitmask;     /* BL=4 bit 2, BL=8 = bit 3 */
        unsigned int row_density;
 
@@ -43,19 +48,19 @@ typedef struct dimm_params_s {
 
        /* DIMM timing parameters */
 
-       unsigned int mtb_ps;    /* medium timebase ps, only for ddr3 */
-       unsigned int ftb_10th_ps; /* fine timebase, in 1/10 ps, only for ddr3 */
-       unsigned int taa_ps;    /* minimum CAS latency time, only for ddr3 */
-       unsigned int tfaw_ps;   /* four active window delay, only for ddr3 */
+       int mtb_ps;     /* medium timebase ps */
+       int ftb_10th_ps; /* fine timebase, in 1/10 ps */
+       int taa_ps;     /* minimum CAS latency time */
+       int tfaw_ps;    /* four active window delay */
 
        /*
         * SDRAM clock periods
         * The range for these are 1000-10000 so a short should be sufficient
         */
-       unsigned int tckmin_x_ps;
-       unsigned int tckmin_x_minus_1_ps;
-       unsigned int tckmin_x_minus_2_ps;
-       unsigned int tckmax_ps;
+       int tckmin_x_ps;
+       int tckmin_x_minus_1_ps;
+       int tckmin_x_minus_2_ps;
+       int tckmax_ps;
 
        /* SPD-defined CAS latencies */
        unsigned int caslat_x;
@@ -65,32 +70,46 @@ typedef struct dimm_params_s {
        unsigned int caslat_lowest_derated;     /* Derated CAS latency */
 
        /* basic timing parameters */
-       unsigned int trcd_ps;
-       unsigned int trp_ps;
-       unsigned int tras_ps;
-
-       unsigned int twr_ps;    /* maximum = 63750 ps */
-       unsigned int twtr_ps;   /* maximum = 63750 ps */
-       unsigned int trfc_ps;   /* max = 255 ns + 256 ns + .75 ns
+       int trcd_ps;
+       int trp_ps;
+       int tras_ps;
+
+#ifdef CONFIG_SYS_FSL_DDR4
+       int trfc1_ps;
+       int trfc2_ps;
+       int trfc4_ps;
+       int trrds_ps;
+       int trrdl_ps;
+       int tccdl_ps;
+#else
+       int twr_ps;     /* maximum = 63750 ps */
+       int trfc_ps;    /* max = 255 ns + 256 ns + .75 ns
                                       = 511750 ps */
+       int trrd_ps;    /* maximum = 63750 ps */
+       int twtr_ps;    /* maximum = 63750 ps */
+       int trtp_ps;    /* byte 38, spd->trtp */
+#endif
 
-       unsigned int trrd_ps;   /* maximum = 63750 ps */
-       unsigned int trc_ps;    /* maximum = 254 ns + .75 ns = 254750 ps */
+       int trc_ps;     /* maximum = 254 ns + .75 ns = 254750 ps */
 
-       unsigned int refresh_rate_ps;
-       unsigned int extended_op_srt;
+       int refresh_rate_ps;
+       int extended_op_srt;
 
-       /* DDR3 doesn't need these as below */
-       unsigned int tis_ps;    /* byte 32, spd->ca_setup */
-       unsigned int tih_ps;    /* byte 33, spd->ca_hold */
-       unsigned int tds_ps;    /* byte 34, spd->data_setup */
-       unsigned int tdh_ps;    /* byte 35, spd->data_hold */
-       unsigned int trtp_ps;   /* byte 38, spd->trtp */
-       unsigned int tdqsq_max_ps;      /* byte 44, spd->tdqsq */
-       unsigned int tqhs_ps;   /* byte 45, spd->tqhs */
+#if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2)
+       int tis_ps;     /* byte 32, spd->ca_setup */
+       int tih_ps;     /* byte 33, spd->ca_hold */
+       int tds_ps;     /* byte 34, spd->data_setup */
+       int tdh_ps;     /* byte 35, spd->data_hold */
+       int tdqsq_max_ps;       /* byte 44, spd->tdqsq */
+       int tqhs_ps;    /* byte 45, spd->tqhs */
+#endif
 
        /* DDR3 RDIMM */
        unsigned char rcw[16];  /* Register Control Word 0-15 */
+#ifdef CONFIG_SYS_FSL_DDR4
+       unsigned int dq_mapping[18];
+       unsigned int dq_mapping_ors;
+#endif
 } dimm_params_t;
 
 extern unsigned int ddr_compute_dimm_parameters(
index 2a36431146d76a2b2ccfc33adfab17d90873122f..e8a2db91cb7e115275ae13c70a498de4ee518239 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2011 Freescale Semiconductor, Inc.
+ * Copyright 2008-2014 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * Pick a basic DDR Technology.
  */
 #include <ddr_spd.h>
+#include <fsl_ddrc_version.h>
 
-#define SDRAM_TYPE_DDR1    2
-#define SDRAM_TYPE_DDR2    3
-#define SDRAM_TYPE_LPDDR1  6
-#define SDRAM_TYPE_DDR3    7
+#define SDRAM_TYPE_DDR1                2
+#define SDRAM_TYPE_DDR2                3
+#define SDRAM_TYPE_LPDDR1      6
+#define SDRAM_TYPE_DDR3                7
+#define SDRAM_TYPE_DDR4                5
 
 #define DDR_BL4                4       /* burst length 4 */
 #define DDR_BC4                DDR_BL4 /* burst chop for ddr3 */
@@ -54,6 +56,12 @@ typedef ddr3_spd_eeprom_t generic_spd_eeprom_t;
 #ifndef CONFIG_FSL_SDRAM_TYPE
 #define CONFIG_FSL_SDRAM_TYPE  SDRAM_TYPE_DDR3
 #endif
+#elif defined(CONFIG_SYS_FSL_DDR4)
+#define FSL_DDR_MIN_TCKE_PULSE_WIDTH_DDR       (3)     /* FIXME */
+typedef struct ddr4_spd_eeprom_s generic_spd_eeprom_t;
+#ifndef CONFIG_FSL_SDRAM_TYPE
+#define CONFIG_FSL_SDRAM_TYPE  SDRAM_TYPE_DDR4
+#endif
 #endif /* #if defined(CONFIG_SYS_FSL_DDR1) */
 
 #define FSL_DDR_ODT_NEVER              0x0
@@ -116,7 +124,8 @@ typedef ddr3_spd_eeprom_t generic_spd_eeprom_t;
 
 #define TIMING_CFG_2_CPO_MASK  0x0F800000
 
-#if defined(CONFIG_P4080)
+#if defined(CONFIG_SYS_FSL_DDR_VER) && \
+       (CONFIG_SYS_FSL_DDR_VER > FSL_DDR_VER_4_4)
 #define RD_TO_PRE_MASK         0xf
 #define RD_TO_PRE_SHIFT                13
 #define WR_DATA_DELAY_MASK     0xf
@@ -154,9 +163,27 @@ typedef ddr3_spd_eeprom_t generic_spd_eeprom_t;
 #define DDR_CDR2_ODT_MASK      0x1
 #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))
 
 #if (defined(CONFIG_SYS_FSL_DDR_VER) && \
        (CONFIG_SYS_FSL_DDR_VER >= FSL_DDR_VER_4_7))
+#ifdef CONFIG_SYS_FSL_DDR3L
+#define DDR_CDR_ODT_OFF                0x0
+#define DDR_CDR_ODT_120ohm     0x1
+#define DDR_CDR_ODT_200ohm     0x2
+#define DDR_CDR_ODT_75ohm      0x3
+#define DDR_CDR_ODT_60ohm      0x5
+#define DDR_CDR_ODT_46ohm      0x7
+#elif defined(CONFIG_SYS_FSL_DDR4)
+#define DDR_CDR_ODT_OFF                0x0
+#define DDR_CDR_ODT_100ohm     0x1
+#define DDR_CDR_ODT_120OHM     0x2
+#define DDR_CDR_ODT_80ohm      0x3
+#define DDR_CDR_ODT_60ohm      0x4
+#define DDR_CDR_ODT_40ohm      0x5
+#define DDR_CDR_ODT_50ohm      0x6
+#define DDR_CDR_ODT_30ohm      0x7
+#else
 #define DDR_CDR_ODT_OFF                0x0
 #define DDR_CDR_ODT_120ohm     0x1
 #define DDR_CDR_ODT_180ohm     0x2
@@ -165,6 +192,7 @@ typedef ddr3_spd_eeprom_t generic_spd_eeprom_t;
 #define DDR_CDR_ODT_60hm       0x5
 #define DDR_CDR_ODT_70ohm      0x6
 #define DDR_CDR_ODT_47ohm      0x7
+#endif /* DDR3L */
 #else
 #define DDR_CDR_ODT_75ohm      0x0
 #define DDR_CDR_ODT_55ohm      0x1
@@ -188,6 +216,7 @@ typedef struct fsl_ddr_cfg_regs_s {
        unsigned int timing_cfg_2;
        unsigned int ddr_sdram_cfg;
        unsigned int ddr_sdram_cfg_2;
+       unsigned int ddr_sdram_cfg_3;
        unsigned int ddr_sdram_mode;
        unsigned int ddr_sdram_mode_2;
        unsigned int ddr_sdram_mode_3;
@@ -196,6 +225,14 @@ typedef struct fsl_ddr_cfg_regs_s {
        unsigned int ddr_sdram_mode_6;
        unsigned int ddr_sdram_mode_7;
        unsigned int ddr_sdram_mode_8;
+       unsigned int ddr_sdram_mode_9;
+       unsigned int ddr_sdram_mode_10;
+       unsigned int ddr_sdram_mode_11;
+       unsigned int ddr_sdram_mode_12;
+       unsigned int ddr_sdram_mode_13;
+       unsigned int ddr_sdram_mode_14;
+       unsigned int ddr_sdram_mode_15;
+       unsigned int ddr_sdram_mode_16;
        unsigned int ddr_sdram_md_cntl;
        unsigned int ddr_sdram_interval;
        unsigned int ddr_data_init;
@@ -204,6 +241,10 @@ typedef struct fsl_ddr_cfg_regs_s {
        unsigned int ddr_init_ext_addr;
        unsigned int timing_cfg_4;
        unsigned int timing_cfg_5;
+       unsigned int timing_cfg_6;
+       unsigned int timing_cfg_7;
+       unsigned int timing_cfg_8;
+       unsigned int timing_cfg_9;
        unsigned int ddr_zq_cntl;
        unsigned int ddr_wrlvl_cntl;
        unsigned int ddr_wrlvl_cntl_2;
@@ -211,6 +252,14 @@ typedef struct fsl_ddr_cfg_regs_s {
        unsigned int ddr_sr_cntr;
        unsigned int ddr_sdram_rcw_1;
        unsigned int ddr_sdram_rcw_2;
+       unsigned int ddr_sdram_rcw_3;
+       unsigned int ddr_sdram_rcw_4;
+       unsigned int ddr_sdram_rcw_5;
+       unsigned int ddr_sdram_rcw_6;
+       unsigned int dq_map_0;
+       unsigned int dq_map_1;
+       unsigned int dq_map_2;
+       unsigned int dq_map_3;
        unsigned int ddr_eor;
        unsigned int ddr_cdr1;
        unsigned int ddr_cdr2;
@@ -225,7 +274,7 @@ typedef struct memctl_options_partial_s {
        unsigned int all_dimms_burst_lengths_bitmask;
        unsigned int all_dimms_registered;
        unsigned int all_dimms_unbuffered;
-       /*      unsigned int lowest_common_SPD_caslat; */
+       /*      unsigned int lowest_common_spd_caslat; */
        unsigned int all_dimms_minimum_trcd_ps;
 } memctl_options_partial_t;
 
@@ -357,6 +406,10 @@ 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)
+{
+}
+
 /*
  * The 85xx boards have a common prototype for fixed_sdram so put the
  * declaration here.
diff --git a/include/fsl_ddrc_version.h b/include/fsl_ddrc_version.h
new file mode 100644 (file)
index 0000000..60ba98b
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __FSL_DDRC_VER_H
+#define __FSL_DDRC_VER_H
+
+/*
+ * Only the versions with distinct features or registers are listed here.
+ */
+#define FSL_DDR_VER_4_4 44
+#define FSL_DDR_VER_4_6 46
+#define FSL_DDR_VER_4_7        47
+#define FSL_DDR_VER_5_0        50
+
+#endif /* __FSL_DDRC_VER_H */
index a6e3a5dc9af395c364d95698315042d5bccd9d9a..9814964937d83295c6e74c5936e75cc61b64d418 100644 (file)
@@ -187,5 +187,6 @@ static inline int fsl_esdhc_mmc_init(bd_t *bis) { return -ENOSYS; }
 static inline void fdt_fixup_esdhc(void *blob, bd_t *bd) {}
 #endif /* CONFIG_FSL_ESDHC */
 void __noreturn mmc_boot(void);
+void mmc_spl_load_image(uint32_t offs, unsigned int size, void *vdst);
 
 #endif  /* __FSL_ESDHC_H__ */
index 58a6efdfe058dca0dc5cfd915366e9c3c094e8c2..630e4b4999b1ea1458b0de06d6c858718622c178 100644 (file)
@@ -784,6 +784,7 @@ enum ifc_nand_fir_opcodes {
 
 extern void print_ifc_regs(void);
 extern void init_early_memctl_regs(void);
+void init_final_memctl_regs(void);
 
 #define IFC_BASE_ADDR ((struct fsl_ifc *)CONFIG_SYS_IFC_ADDR)
 
index 00902cae0804d1df97c5618f9fa89ee4ce21118f..d63cc19fa159d0efcdc9cbf81c5f9b9a4537c77c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Common internal memory map for some Freescale SoCs
  *
- * Copyright 2013 Freescale Semiconductor, Inc.
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -50,7 +50,8 @@ struct ccsr_ddr {
        u8      res_150[16];
        u32     timing_cfg_4;           /* SDRAM Timing Configuration 4 */
        u32     timing_cfg_5;           /* SDRAM Timing Configuration 5 */
-       u8      reg_168[8];
+       u32     timing_cfg_6;           /* SDRAM Timing Configuration 6 */
+       u32     timing_cfg_7;           /* SDRAM Timing Configuration 7 */
        u32     ddr_zq_cntl;            /* ZQ calibration control*/
        u32     ddr_wrlvl_cntl;         /* write leveling control*/
        u8      reg_178[4];
@@ -60,14 +61,40 @@ struct ccsr_ddr {
        u8      reg_188[8];
        u32     ddr_wrlvl_cntl_2;       /* write leveling control 2 */
        u32     ddr_wrlvl_cntl_3;       /* write leveling control 3 */
-       u8      res_198[104];
+       u8      res_198[0x1a0-0x198];
+       u32     ddr_sdram_rcw_3;
+       u32     ddr_sdram_rcw_4;
+       u32     ddr_sdram_rcw_5;
+       u32     ddr_sdram_rcw_6;
+       u8      res_1b0[0x200-0x1b0];
        u32     sdram_mode_3;           /* SDRAM Mode Configuration 3 */
        u32     sdram_mode_4;           /* SDRAM Mode Configuration 4 */
        u32     sdram_mode_5;           /* SDRAM Mode Configuration 5 */
        u32     sdram_mode_6;           /* SDRAM Mode Configuration 6 */
        u32     sdram_mode_7;           /* SDRAM Mode Configuration 7 */
        u32     sdram_mode_8;           /* SDRAM Mode Configuration 8 */
-       u8      res_218[0x908];
+       u8      res_218[0x220-0x218];
+       u32     sdram_mode_9;           /* SDRAM Mode Configuration 9 */
+       u32     sdram_mode_10;          /* SDRAM Mode Configuration 10 */
+       u32     sdram_mode_11;          /* SDRAM Mode Configuration 11 */
+       u32     sdram_mode_12;          /* SDRAM Mode Configuration 12 */
+       u32     sdram_mode_13;          /* SDRAM Mode Configuration 13 */
+       u32     sdram_mode_14;          /* SDRAM Mode Configuration 14 */
+       u32     sdram_mode_15;          /* SDRAM Mode Configuration 15 */
+       u32     sdram_mode_16;          /* SDRAM Mode Configuration 16 */
+       u8      res_240[0x250-0x240];
+       u32     timing_cfg_8;           /* SDRAM Timing Configuration 8 */
+       u32     timing_cfg_9;           /* SDRAM Timing Configuration 9 */
+       u8      res_258[0x260-0x258];
+       u32     sdram_cfg_3;
+       u8      res_264[0x2a0-0x264];
+       u32     deskew_cntl;
+       u8      res_2a4[0x400-0x2a4];
+       u32     dq_map_0;
+       u32     dq_map_1;
+       u32     dq_map_2;
+       u32     dq_map_3;
+       u8      res_410[0xb20-0x410];
        u32     ddr_dsr1;               /* Debug Status 1 */
        u32     ddr_dsr2;               /* Debug Status 2 */
        u32     ddr_cdr1;               /* Control Driver 1 */
index 8b63cdd88c03416d043521a758d8f983a4eb63c2..1a6c9c1636638f3977db5f3dfbc77bc01392f03a 100644 (file)
@@ -48,6 +48,11 @@ struct ccsr_usb_phy {
 #define CONFIG_SYS_FSL_USB_PLLPRG2_PHY2_CLK_EN (1 << 0)
 #define CONFIG_SYS_FSL_USB_PLLPRG2_PHY1_CLK_EN (1 << 1)
 #define CONFIG_SYS_FSL_USB_PLLPRG2_FRAC_LPF_EN (1 << 13)
+#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK
+#define CONFIG_SYS_FSL_USB_PLLPRG2_REF_DIV_INTERNAL_CLK (5 << 4)
+#define CONFIG_SYS_FSL_USB_PLLPRG2_MFI_INTERNAL_CLK (6 << 16)
+#define CONFIG_SYS_FSL_USB_INTERNAL_SOC_CLK_EN (1 << 20)
+#endif
 #define CONFIG_SYS_FSL_USB_PLLPRG2_REF_DIV (1 << 4)
 #define CONFIG_SYS_FSL_USB_PLLPRG2_MFI (5 << 16)
 #define CONFIG_SYS_FSL_USB_PLLPRG2_PLL_EN (1 << 21)
index 8f813c21ee6ace1cdec6e55bcd18b75051dca15a..1b1b35e0e1c5e0813994fa84a77a0462a6b8c053 100644 (file)
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
+#include <linux/usb/composite.h>
+#include <linker_lists.h>
+
+/*
+ * @usb_fname: unescaped USB function name
+ * @callback_ptr: bind callback, one per function name
+ */
+#define DECLARE_GADGET_BIND_CALLBACK(usb_fname, callback_ptr) \
+       ll_entry_declare(struct g_dnl_bind_callback, \
+                       __usb_function_name_##usb_fname, \
+                       g_dnl_bind_callbacks) = { \
+                               .usb_function_name = #usb_fname, \
+                               .fptr = callback_ptr \
+                       }
+
+typedef int (*g_dnl_bind_callback_f)(struct usb_configuration *);
+
+/* used in Gadget downloader callback linker list */
+struct g_dnl_bind_callback {
+       const char *usb_function_name;
+       g_dnl_bind_callback_f fptr;
+};
+
 int g_dnl_bind_fixup(struct usb_device_descriptor *, const char *);
+int g_dnl_board_usb_cable_connected(void);
 int g_dnl_register(const char *s);
 void g_dnl_unregister(void);
 void g_dnl_set_serialnumber(char *);
index e92d27218c486f1dca86368bbca8a788d63e6584..dc21678045e8df71eb30fbb01d72a28c8c92e17e 100644 (file)
@@ -27,6 +27,42 @@ struct hash_algo {
        void (*hash_func_ws)(const unsigned char *input, unsigned int ilen,
                unsigned char *output, unsigned int chunk_sz);
        int chunk_size;                         /* Watchdog chunk size */
+       /*
+        * hash_init: Create the context for progressive hashing
+        *
+        * @algo: Pointer to the hash_algo struct
+        * @ctxp: Pointer to the pointer of the context for hashing
+        * @return 0 if ok, -1 on error
+        */
+       int (*hash_init)(struct hash_algo *algo, void **ctxp);
+       /*
+        * hash_update: Perform hashing on the given buffer
+        *
+        * The context is freed by this function if an error occurs.
+        *
+        * @algo: Pointer to the hash_algo struct
+        * @ctx: Pointer to the context for hashing
+        * @buf: Pointer to the buffer being hashed
+        * @size: Size of the buffer being hashed
+        * @is_last: 1 if this is the last update; 0 otherwise
+        * @return 0 if ok, -1 on error
+        */
+       int (*hash_update)(struct hash_algo *algo, void *ctx, const void *buf,
+                          unsigned int size, int is_last);
+       /*
+        * hash_finish: Write the hash result to the given buffer
+        *
+        * The context is freed by this function.
+        *
+        * @algo: Pointer to the hash_algo struct
+        * @ctx: Pointer to the context for hashing
+        * @dest_buf: Pointer to the buffer for the result
+        * @size: Size of the buffer for the result
+        * @return 0 if ok, -ENOSPC if size of the result buffer is too small
+        *   or -1 on other errors
+        */
+       int (*hash_finish)(struct hash_algo *algo, void *ctx, void *dest_buf,
+                          int size);
 };
 
 /*
@@ -77,4 +113,16 @@ int hash_command(const char *algo_name, int flags, cmd_tbl_t *cmdtp, int flag,
 int hash_block(const char *algo_name, const void *data, unsigned int len,
               uint8_t *output, int *output_size);
 
+/**
+ * hash_lookup_algo() - Look up the hash_algo struct for an algorithm
+ *
+ * The function returns the pointer to the struct or -EPROTONOSUPPORT if the
+ * algorithm is not available.
+ *
+ * @algo_name: Hash algorithm to look up
+ * @algop: Pointer to the hash_algo struct if found
+ *
+ * @return 0 if ok, -EPROTONOSUPPORT for an unknown algorithm.
+ */
+int hash_lookup_algo(const char *algo_name, struct hash_algo **algop);
 #endif
index 8095bc8914356524cd085e99077d0768e36a9721..b27877870beb89e3c21699749117810fa12a696b 100644 (file)
@@ -57,13 +57,18 @@ struct lmb;
 #  ifdef CONFIG_SPL_SHA1_SUPPORT
 #   define IMAGE_ENABLE_SHA1   1
 #  endif
+#  ifdef CONFIG_SPL_SHA256_SUPPORT
+#   define IMAGE_ENABLE_SHA256 1
+#  endif
 # else
 #  define CONFIG_CRC32         /* FIT images need CRC32 support */
 #  define CONFIG_MD5           /* and MD5 */
 #  define CONFIG_SHA1          /* and SHA1 */
+#  define CONFIG_SHA256                /* and SHA256 */
 #  define IMAGE_ENABLE_CRC32   1
 #  define IMAGE_ENABLE_MD5     1
 #  define IMAGE_ENABLE_SHA1    1
+#  define IMAGE_ENABLE_SHA256  1
 # endif
 
 #ifndef IMAGE_ENABLE_CRC32
@@ -78,6 +83,10 @@ struct lmb;
 #define IMAGE_ENABLE_SHA1      0
 #endif
 
+#ifndef IMAGE_ENABLE_SHA256
+#define IMAGE_ENABLE_SHA256    0
+#endif
+
 #endif /* CONFIG_FIT */
 
 #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
@@ -824,7 +833,8 @@ int calculate_hash(const void *data, int data_len, const char *algo,
 #if defined(CONFIG_FIT_SIGNATURE)
 # ifdef USE_HOSTCC
 #  define IMAGE_ENABLE_SIGN    1
-#  define IMAGE_ENABLE_VERIFY  0
+#  define IMAGE_ENABLE_VERIFY  1
+# include  <openssl/evp.h>
 #else
 #  define IMAGE_ENABLE_SIGN    0
 #  define IMAGE_ENABLE_VERIFY  1
@@ -835,7 +845,9 @@ int calculate_hash(const void *data, int data_len, const char *algo,
 #endif
 
 #ifdef USE_HOSTCC
-# define gd_fdt_blob()         NULL
+void *image_get_host_blob(void);
+void image_set_host_blob(void *host_blob);
+# define gd_fdt_blob()         image_get_host_blob()
 #else
 # define gd_fdt_blob()         (gd->fdt_blob)
 #endif
@@ -864,6 +876,21 @@ struct image_region {
        int size;
 };
 
+#if IMAGE_ENABLE_VERIFY
+# include <rsa-checksum.h>
+#endif
+struct checksum_algo {
+       const char *name;
+       const int checksum_len;
+       const int pad_len;
+#if IMAGE_ENABLE_SIGN
+       const EVP_MD *(*calculate_sign)(void);
+#endif
+       void (*calculate)(const struct image_region region[],
+                         int region_count, uint8_t *checksum);
+       const uint8_t *rsa_padding;
+};
+
 struct image_sig_algo {
        const char *name;               /* Name of algorithm */
 
@@ -914,6 +941,9 @@ struct image_sig_algo {
        int (*verify)(struct image_sign_info *info,
                      const struct image_region region[], int region_count,
                      uint8_t *sig, uint sig_len);
+
+       /* pointer to checksum algorithm */
+       struct checksum_algo *checksum;
 };
 
 /**
@@ -979,7 +1009,11 @@ struct image_region *fit_region_make_list(const void *fit,
 
 static inline int fit_image_check_target_arch(const void *fdt, int node)
 {
+#ifndef USE_HOSTCC
        return fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT);
+#else
+       return 0;
+#endif
 }
 
 #ifdef CONFIG_FIT_VERBOSE
index 997d149b71de2eee294d0595bff34a02dd23fdce..557e6273adb391133d2cd5dc06695f69060ca732 100644 (file)
  * and it's name.
  *
  * Example:
- * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub) = {
  *         .x = 3,
  *         .y = 4,
  * };
diff --git a/include/linux/mtd/blktrans.h b/include/linux/mtd/blktrans.h
deleted file mode 100644 (file)
index 32acb6c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * (C) 2003 David Woodhouse <dwmw2@infradead.org>
- *
- * Interface to Linux block layer for MTD 'translation layers'.
- *
- */
-
-#ifndef __MTD_TRANS_H__
-#define __MTD_TRANS_H__
-
-/* XXX U-BOOT XXX */
-#if 0
-#include <linux/mutex.h>
-#else
-#include <linux/list.h>
-#endif
-
-struct hd_geometry;
-struct mtd_info;
-struct mtd_blktrans_ops;
-struct file;
-struct inode;
-
-struct mtd_blktrans_dev {
-       struct mtd_blktrans_ops *tr;
-       struct list_head list;
-       struct mtd_info *mtd;
-/* XXX U-BOOT XXX */
-#if 0
-       struct mutex lock;
-#endif
-       int devnum;
-       unsigned long size;
-       int readonly;
-       void *blkcore_priv; /* gendisk in 2.5, devfs_handle in 2.4 */
-};
-
-struct blkcore_priv; /* Differs for 2.4 and 2.5 kernels; private */
-
-struct mtd_blktrans_ops {
-       char *name;
-       int major;
-       int part_bits;
-       int blksize;
-       int blkshift;
-
-       /* Access functions */
-       int (*readsect)(struct mtd_blktrans_dev *dev,
-                   unsigned long block, char *buffer);
-       int (*writesect)(struct mtd_blktrans_dev *dev,
-                    unsigned long block, char *buffer);
-
-       /* Block layer ioctls */
-       int (*getgeo)(struct mtd_blktrans_dev *dev, struct hd_geometry *geo);
-       int (*flush)(struct mtd_blktrans_dev *dev);
-
-       /* Called with mtd_table_mutex held; no race with add/remove */
-       int (*open)(struct mtd_blktrans_dev *dev);
-       int (*release)(struct mtd_blktrans_dev *dev);
-
-       /* Called on {de,}registration and on subsequent addition/removal
-          of devices, with mtd_table_mutex held. */
-       void (*add_mtd)(struct mtd_blktrans_ops *tr, struct mtd_info *mtd);
-       void (*remove_dev)(struct mtd_blktrans_dev *dev);
-
-       struct list_head devs;
-       struct list_head list;
-       struct module *owner;
-
-       struct mtd_blkcore_priv *blkcore_priv;
-};
-
-extern int register_mtd_blktrans(struct mtd_blktrans_ops *tr);
-extern int deregister_mtd_blktrans(struct mtd_blktrans_ops *tr);
-extern int add_mtd_blktrans_dev(struct mtd_blktrans_dev *dev);
-extern int del_mtd_blktrans_dev(struct mtd_blktrans_dev *dev);
-
-
-#endif /* __MTD_TRANS_H__ */
diff --git a/include/linux/mtd/nftl-user.h b/include/linux/mtd/nftl-user.h
deleted file mode 100644 (file)
index 22b8b70..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Id: nftl-user.h,v 1.2 2005/11/07 11:14:56 gleixner Exp $
- *
- * Parts of NFTL headers shared with userspace
- *
- */
-
-#ifndef __MTD_NFTL_USER_H__
-#define __MTD_NFTL_USER_H__
-
-/* Block Control Information */
-
-struct nftl_bci {
-       unsigned char ECCSig[6];
-       uint8_t Status;
-       uint8_t Status1;
-}__attribute__((packed));
-
-/* Unit Control Information */
-
-struct nftl_uci0 {
-       uint16_t VirtUnitNum;
-       uint16_t ReplUnitNum;
-       uint16_t SpareVirtUnitNum;
-       uint16_t SpareReplUnitNum;
-} __attribute__((packed));
-
-struct nftl_uci1 {
-       uint32_t WearInfo;
-       uint16_t EraseMark;
-       uint16_t EraseMark1;
-} __attribute__((packed));
-
-struct nftl_uci2 {
-       uint16_t FoldMark;
-       uint16_t FoldMark1;
-       uint32_t unused;
-} __attribute__((packed));
-
-union nftl_uci {
-       struct nftl_uci0 a;
-       struct nftl_uci1 b;
-       struct nftl_uci2 c;
-};
-
-struct nftl_oob {
-       struct nftl_bci b;
-       union nftl_uci u;
-};
-
-/* NFTL Media Header */
-
-struct NFTLMediaHeader {
-       char DataOrgID[6];
-       uint16_t NumEraseUnits;
-       uint16_t FirstPhysicalEUN;
-       uint32_t FormattedSize;
-       unsigned char UnitSizeFactor;
-} __attribute__((packed));
-
-#define MAX_ERASE_ZONES (8192 - 512)
-
-#define ERASE_MARK 0x3c69
-#define SECTOR_FREE 0xff
-#define SECTOR_USED 0x55
-#define SECTOR_IGNORE 0x11
-#define SECTOR_DELETED 0x00
-
-#define FOLD_MARK_IN_PROGRESS 0x5555
-
-#define ZONE_GOOD 0xff
-#define ZONE_BAD_ORIGINAL 0
-#define ZONE_BAD_MARKED 7
-
-
-#endif /* __MTD_NFTL_USER_H__ */
diff --git a/include/linux/mtd/nftl.h b/include/linux/mtd/nftl.h
deleted file mode 100644 (file)
index fe22e0d..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) 1999-2003 David Woodhouse <dwmw2@infradead.org>
- */
-
-#ifndef __MTD_NFTL_H__
-#define __MTD_NFTL_H__
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/blktrans.h>
-
-#include <linux/mtd/nftl-user.h>
-
-/* these info are used in ReplUnitTable */
-#define BLOCK_NIL         0xffff /* last block of a chain */
-#define BLOCK_FREE        0xfffe /* free block */
-#define BLOCK_NOTEXPLORED  0xfffd /* non explored block, only used during mounting */
-#define BLOCK_RESERVED    0xfffc /* bios block or bad block */
-
-struct NFTLrecord {
-       struct mtd_blktrans_dev mbd;
-       __u16 MediaUnit, SpareMediaUnit;
-       __u32 EraseSize;
-       struct NFTLMediaHeader MediaHdr;
-       int usecount;
-       unsigned char heads;
-       unsigned char sectors;
-       unsigned short cylinders;
-       __u16 numvunits;
-       __u16 lastEUN;                  /* should be suppressed */
-       __u16 numfreeEUNs;
-       __u16 LastFreeEUN;              /* To speed up finding a free EUN */
-       int head,sect,cyl;
-       __u16 *EUNtable;                /* [numvunits]: First EUN for each virtual unit  */
-       __u16 *ReplUnitTable;           /* [numEUNs]: ReplUnitNumber for each */
-       unsigned int nb_blocks;         /* number of physical blocks */
-       unsigned int nb_boot_blocks;    /* number of blocks used by the bios */
-       struct erase_info instr;
-       struct nand_ecclayout oobinfo;
-};
-
-int NFTL_mount(struct NFTLrecord *s);
-int NFTL_formatblock(struct NFTLrecord *s, int block);
-
-int nftl_read_oob(struct mtd_info *mtd, loff_t offs, size_t len,
-                 size_t *retlen, uint8_t *buf);
-int nftl_write_oob(struct mtd_info *mtd, loff_t offs, size_t len,
-                  size_t *retlen, uint8_t *buf);
-
-#ifndef NFTL_MAJOR
-#define NFTL_MAJOR 93
-#endif
-
-#define MAX_NFTLS 16
-#define MAX_SECTORS_PER_UNIT 64
-#define NFTL_PARTN_BITS 4
-
-#endif /* __MTD_NFTL_H__ */
index 42d01251b59bc8d5316e829d931b15d3eb66b11a..bc11f45a6fca691bcc8ecb873af5a0bbafb76def 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <linux/list.h>
 #include <linux/compiler.h>
+#include <part.h>
 
 #define SD_VERSION_SD  0x20000
 #define SD_VERSION_3   (SD_VERSION_SD | 0x300)
index 32b5073ef025bb3e8d5e8b2bac0c3558236d0a25..e211f1841f60d7dac07d43d4dd9297a720854ac2 100644 (file)
@@ -54,7 +54,6 @@ int ftmac100_initialize(bd_t *bits);
 int ftmac110_initialize(bd_t *bits);
 int greth_initialize(bd_t *bis);
 void gt6426x_eth_initialize(bd_t *bis);
-int inca_switch_initialize(bd_t *bis);
 int ks8695_eth_initialize(void);
 int ks8851_mll_initialize(u8 dev_num, int base_addr);
 int lan91c96_initialize(u8 dev_num, int base_addr);
index 4beb6db89b104aa2096ef25b02695af7ba2be46f..53532dcd6120a5959ddcc5f133f5f3f0a6466df6 100644 (file)
@@ -8,6 +8,7 @@
 #define _PART_H
 
 #include <ide.h>
+#include <common.h>
 
 typedef struct block_dev_desc {
        int             if_type;        /* type of the interface */
index ce8c8ed5e91857b013f9d65c4bfb94340127dced..952a67c17c279535a7a62e4d92b651d8be5d0c0a 100644 (file)
 #if !defined(CONFIG_PCMCIA_SLOT_A) && !defined(CONFIG_PCMCIA_SLOT_B)
 
                                        /* The RPX series use SLOT_B    */
-#if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE)
+#if defined(CONFIG_RPXLITE)
 # define CONFIG_PCMCIA_SLOT_B
-#elif defined(CONFIG_ADS)              /* The ADS  board uses SLOT_A   */
-# define CONFIG_PCMCIA_SLOT_A
 #elif defined(CONFIG_FADS)             /* The FADS series are a mess   */
 # if defined(CONFIG_MPC86x) || defined(CONFIG_MPC821)
 #  define CONFIG_PCMCIA_SLOT_A
diff --git a/include/rsa-checksum.h b/include/rsa-checksum.h
new file mode 100644 (file)
index 0000000..612db85
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2013, Andreas Oetken.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+*/
+
+#ifndef _RSA_CHECKSUM_H
+#define _RSA_CHECKSUM_H
+
+#include <errno.h>
+#include <image.h>
+#include <sha1.h>
+#include <sha256.h>
+
+extern const uint8_t padding_sha256_rsa4096[];
+extern const uint8_t padding_sha256_rsa2048[];
+extern const uint8_t padding_sha1_rsa2048[];
+
+void sha256_calculate(const struct image_region region[], int region_count,
+                     uint8_t *checksum);
+void sha1_calculate(const struct image_region region[], int region_count,
+                   uint8_t *checksum);
+
+#endif
index add4c789f335488f3ed5442365acf9a95dc49d84..a5680ab88c134ded0f3c4814d7d645fc0b0de3bd 100644 (file)
 #include <errno.h>
 #include <image.h>
 
+/**
+ * struct rsa_public_key - holder for a public key
+ *
+ * An RSA public key consists of a modulus (typically called N), the inverse
+ * and R^2, where R is 2^(# key bits).
+ */
+
+struct rsa_public_key {
+       uint len;               /* len of modulus[] in number of uint32_t */
+       uint32_t n0inv;         /* -1 / modulus[0] mod 2^32 */
+       uint32_t *modulus;      /* modulus as little endian array */
+       uint32_t *rr;           /* R^2 as little endian array */
+};
+
 #if IMAGE_ENABLE_SIGN
 /**
  * sign() - calculate and return signature for given input data
@@ -89,4 +103,14 @@ static inline int rsa_verify(struct image_sign_info *info,
 }
 #endif
 
+#define RSA2048_BYTES  (2048 / 8)
+#define RSA4096_BYTES  (4096 / 8)
+
+/* This is the minimum/maximum key size we support, in bits */
+#define RSA_MIN_KEY_BITS       2048
+#define RSA_MAX_KEY_BITS       4096
+
+/* This is the maximum signature length that we support, in bits */
+#define RSA_MAX_SIG_BITS       4096
+
 #endif
index 1a112862240c966668199988ddab739277afd5f8..2db53c74c88efa794eeacab10220d49d56bd0a31 100644 (file)
@@ -158,5 +158,6 @@ static inline int spi_flash_erase(struct spi_flash *flash, u32 offset,
 }
 
 void spi_boot(void) __noreturn;
+void spi_spl_load_image(uint32_t offs, unsigned int size, void *vdst);
 
 #endif /* _SPI_FLASH_H_ */
index afeade45646bff851519cdbf58364d9ee944fc08..5051be714bdf0c98b15a7d2ce709f9957477d701 100644 (file)
 
 int thor_handle(void);
 int thor_init(void);
-
-#ifdef CONFIG_THOR_FUNCTION
 int thor_add(struct usb_configuration *c);
-#else
-int thor_add(struct usb_configuration *c)
-{
-       return 0;
-}
-#endif
 #endif /* __THOR_H_ */
index 736730e8964258470939f218c32853b3571328b8..d9fedeeff7de98bcc192fc2b76e561db067010ab 100644 (file)
@@ -197,16 +197,6 @@ int board_usb_init(int index, enum usb_init_type init);
  */
 int board_usb_cleanup(int index, enum usb_init_type init);
 
-/*
- * If CONFIG_USB_CABLE_CHECK is set then this function
- * should be defined in board file.
- *
- * @return 1 if cable is connected and 0 otherwise.
- */
-#ifdef CONFIG_USB_CABLE_CHECK
-int usb_cable_connected(void);
-#endif
-
 #ifdef CONFIG_USB_STORAGE
 
 #define USB_MAX_STOR_DEV 5
index 734305b9dba25fd1e1809e96db81781da0ea1659..c9ee1d5bf6264b257f6042b348c20fa2f6de7606 100644 (file)
 #define CONFIG_SYS_FSL_USB2_ADDR       0
 #endif
 
+/*
+ * Increasing TX FIFO threshold value from 2 to 4 decreases
+ * data burst rate with which data packets are posted from the TX
+ * latency FIFO to compensate for latencies in DDR pipeline during DMA
+ */
+#define TXFIFOTHRESH           4
+
 /*
  * USB Registers
  */
index 058dcf11740423569c13a4cd8e5957aa09afb0fd..ed460644c1fe9152243ad97ddd516aaa9ef6e87a 100644 (file)
@@ -40,13 +40,5 @@ int fsg_init(struct ums *);
 void fsg_cleanup(void);
 struct ums *ums_init(unsigned int);
 int fsg_main_thread(void *);
-
-#ifdef CONFIG_USB_GADGET_MASS_STORAGE
 int fsg_add(struct usb_configuration *c);
-#else
-int fsg_add(struct usb_configuration *c)
-{
-       return 0;
-}
-#endif
 #endif /* __USB_MASS_STORAGE_H__ */
index e996b273ac8633adfaea3d8ee3e2eb63e81c06b8..9d7a0a1c11850ac76eda5e66715bbc18f534d87b 100644 (file)
--- a/lib/aes.c
+++ b/lib/aes.c
  * REDISTRIBUTION OF THIS SOFTWARE.
 */
 
+#ifndef USE_HOSTCC
 #include <common.h>
+#else
+#include <string.h>
+#endif
 #include "aes.h"
 
 /* forward s-box */
@@ -580,3 +584,74 @@ void aes_decrypt(u8 *in, u8 *expkey, u8 *out)
 
        memcpy(out, state, sizeof(state));
 }
+
+static void debug_print_vector(char *name, u32 num_bytes, u8 *data)
+{
+#ifdef DEBUG
+       printf("%s [%d] @0x%08x", name, num_bytes, (u32)data);
+       print_buffer(0, data, 1, num_bytes, 16);
+#endif
+}
+
+void aes_apply_cbc_chain_data(u8 *cbc_chain_data, u8 *src, u8 *dst)
+{
+       int i;
+
+       for (i = 0; i < AES_KEY_LENGTH; i++)
+               *dst++ = *src++ ^ *cbc_chain_data++;
+}
+
+void aes_cbc_encrypt_blocks(u8 *key_exp, u8 *src, u8 *dst, u32 num_aes_blocks)
+{
+       u8 zero_key[AES_KEY_LENGTH] = { 0 };
+       u8 tmp_data[AES_KEY_LENGTH];
+       /* Convenient array of 0's for IV */
+       u8 *cbc_chain_data = zero_key;
+       u32 i;
+
+       for (i = 0; i < num_aes_blocks; i++) {
+               debug("encrypt_object: block %d of %d\n", i, num_aes_blocks);
+               debug_print_vector("AES Src", AES_KEY_LENGTH, src);
+
+               /* Apply the chain data */
+               aes_apply_cbc_chain_data(cbc_chain_data, src, tmp_data);
+               debug_print_vector("AES Xor", AES_KEY_LENGTH, tmp_data);
+
+               /* Encrypt the AES block */
+               aes_encrypt(tmp_data, key_exp, dst);
+               debug_print_vector("AES Dst", AES_KEY_LENGTH, dst);
+
+               /* Update pointers for next loop. */
+               cbc_chain_data = dst;
+               src += AES_KEY_LENGTH;
+               dst += AES_KEY_LENGTH;
+       }
+}
+
+void aes_cbc_decrypt_blocks(u8 *key_exp, u8 *src, u8 *dst, u32 num_aes_blocks)
+{
+       u8 tmp_data[AES_KEY_LENGTH], tmp_block[AES_KEY_LENGTH];
+       /* Convenient array of 0's for IV */
+       u8 cbc_chain_data[AES_KEY_LENGTH] = { 0 };
+       u32 i;
+
+       for (i = 0; i < num_aes_blocks; i++) {
+               debug("encrypt_object: block %d of %d\n", i, num_aes_blocks);
+               debug_print_vector("AES Src", AES_KEY_LENGTH, src);
+
+               memcpy(tmp_block, src, AES_KEY_LENGTH);
+
+               /* Decrypt the AES block */
+               aes_decrypt(src, key_exp, tmp_data);
+               debug_print_vector("AES Xor", AES_KEY_LENGTH, tmp_data);
+
+               /* Apply the chain data */
+               aes_apply_cbc_chain_data(cbc_chain_data, tmp_data, dst);
+               debug_print_vector("AES Dst", AES_KEY_LENGTH, dst);
+
+               /* Update pointers for next loop. */
+               memcpy(cbc_chain_data, tmp_block, AES_KEY_LENGTH);
+               src += AES_KEY_LENGTH;
+               dst += AES_KEY_LENGTH;
+       }
+}
index 33265ecfb26cb3d378dc78141f1fd4680b0efe0b..8ecb80f1623bfb95ca02ee8c4be133818be0b87d 100644 (file)
@@ -3,6 +3,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#ifndef USE_HOSTCC
 #include <common.h>
 #include <serial.h>
 #include <libfdt.h>
@@ -645,3 +646,22 @@ int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
 
        return 0;
 }
+#else
+#include "libfdt.h"
+#include "fdt_support.h"
+
+int fdtdec_get_int(const void *blob, int node, const char *prop_name,
+               int default_val)
+{
+       const int *cell;
+       int len;
+
+       cell = fdt_getprop_w((void *)blob, node, prop_name, &len);
+       if (cell && len >= sizeof(int)) {
+               int val = fdt32_to_cpu(cell[0]);
+
+               return val;
+       }
+       return default_val;
+}
+#endif
index 164ab3996455fb58f4a590b032327c57f6b11d61..a5a96cb680d16d1cea1f88375f2ca1ec7bfc1776 100644 (file)
@@ -7,4 +7,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_FIT_SIGNATURE) += rsa-verify.o
+obj-$(CONFIG_FIT_SIGNATURE) += rsa-verify.o rsa-checksum.o
diff --git a/lib/rsa/rsa-checksum.c b/lib/rsa/rsa-checksum.c
new file mode 100644 (file)
index 0000000..32d6602
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2013, Andreas Oetken.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef USE_HOSTCC
+#include <common.h>
+#include <fdtdec.h>
+#include <asm/byteorder.h>
+#include <asm/errno.h>
+#include <asm/unaligned.h>
+#else
+#include "fdt_host.h"
+#endif
+#include <rsa.h>
+#include <sha1.h>
+#include <sha256.h>
+
+/* PKCS 1.5 paddings as described in the RSA PKCS#1 v2.1 standard. */
+
+const uint8_t padding_sha256_rsa2048[RSA2048_BYTES - SHA256_SUM_LEN] = {
+0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x31, 0x30,
+0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05,
+0x00, 0x04, 0x20
+};
+
+const uint8_t padding_sha1_rsa2048[RSA2048_BYTES - SHA1_SUM_LEN] = {
+       0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x21, 0x30,
+       0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a,
+       0x05, 0x00, 0x04, 0x14
+};
+
+const uint8_t padding_sha256_rsa4096[RSA4096_BYTES - SHA256_SUM_LEN] = {
+       0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+       0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x31, 0x30,
+       0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65,
+       0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20
+};
+
+void sha1_calculate(const struct image_region region[], int region_count,
+                   uint8_t *checksum)
+{
+       sha1_context ctx;
+       uint32_t i;
+       i = 0;
+
+       sha1_starts(&ctx);
+       for (i = 0; i < region_count; i++)
+               sha1_update(&ctx, region[i].data, region[i].size);
+       sha1_finish(&ctx, checksum);
+}
+
+void sha256_calculate(const struct image_region region[], int region_count,
+                     uint8_t *checksum)
+{
+       sha256_context ctx;
+       uint32_t i;
+       i = 0;
+
+       sha256_starts(&ctx);
+       for (i = 0; i < region_count; i++)
+               sha256_update(&ctx, region[i].data, region[i].size);
+       sha256_finish(&ctx, checksum);
+}
index 549130eda1f3a41759522c1e2b84798061fcf08c..ca8c120d97cf96b0de668674a8d84194139cc9c6 100644 (file)
@@ -159,8 +159,9 @@ static void rsa_remove(void)
        EVP_cleanup();
 }
 
-static int rsa_sign_with_key(RSA *rsa, const struct image_region region[],
-               int region_count, uint8_t **sigp, uint *sig_size)
+static int rsa_sign_with_key(RSA *rsa, struct checksum_algo *checksum_algo,
+               const struct image_region region[], int region_count,
+               uint8_t **sigp, uint *sig_size)
 {
        EVP_PKEY *key;
        EVP_MD_CTX *context;
@@ -192,7 +193,7 @@ static int rsa_sign_with_key(RSA *rsa, const struct image_region region[],
                goto err_create;
        }
        EVP_MD_CTX_init(context);
-       if (!EVP_SignInit(context, EVP_sha1())) {
+       if (!EVP_SignInit(context, checksum_algo->calculate_sign())) {
                ret = rsa_err("Signer setup failed");
                goto err_sign;
        }
@@ -242,7 +243,8 @@ int rsa_sign(struct image_sign_info *info,
        ret = rsa_get_priv_key(info->keydir, info->keyname, &rsa);
        if (ret)
                goto err_priv;
-       ret = rsa_sign_with_key(rsa, region, region_count, sigp, sig_len);
+       ret = rsa_sign_with_key(rsa, info->algo->checksum, region,
+                               region_count, sigp, sig_len);
        if (ret)
                goto err_sign;
 
index 02cc4e335309becf02288fff81167cdca6734bab..587da5b470685de78ebc86bf611c0abf8fd0c387 100644 (file)
@@ -4,70 +4,27 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#ifndef USE_HOSTCC
 #include <common.h>
 #include <fdtdec.h>
-#include <rsa.h>
-#include <sha1.h>
+#include <asm/types.h>
 #include <asm/byteorder.h>
 #include <asm/errno.h>
+#include <asm/types.h>
 #include <asm/unaligned.h>
-
-/**
- * struct rsa_public_key - holder for a public key
- *
- * An RSA public key consists of a modulus (typically called N), the inverse
- * and R^2, where R is 2^(# key bits).
- */
-struct rsa_public_key {
-       uint len;               /* Length of modulus[] in number of uint32_t */
-       uint32_t n0inv;         /* -1 / modulus[0] mod 2^32 */
-       uint32_t *modulus;      /* modulus as little endian array */
-       uint32_t *rr;           /* R^2 as little endian array */
-};
+#else
+#include "fdt_host.h"
+#include "mkimage.h"
+#include <fdt_support.h>
+#endif
+#include <rsa.h>
+#include <sha1.h>
+#include <sha256.h>
 
 #define UINT64_MULT32(v, multby)  (((uint64_t)(v)) * ((uint32_t)(multby)))
 
-#define RSA2048_BYTES  (2048 / 8)
-
-/* This is the minimum/maximum key size we support, in bits */
-#define RSA_MIN_KEY_BITS       2048
-#define RSA_MAX_KEY_BITS       2048
-
-/* This is the maximum signature length that we support, in bits */
-#define RSA_MAX_SIG_BITS       2048
-
-static const uint8_t padding_sha1_rsa2048[RSA2048_BYTES - SHA1_SUM_LEN] = {
-       0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x21, 0x30,
-       0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a,
-       0x05, 0x00, 0x04, 0x14
-};
+#define get_unaligned_be32(a) fdt32_to_cpu(*(uint32_t *)a)
+#define put_unaligned_be32(a, b) (*(uint32_t *)(b) = cpu_to_fdt32(a))
 
 /**
  * subtract_modulus() - subtract modulus from the given value
@@ -204,18 +161,18 @@ static int pow_mod(const struct rsa_public_key *key, uint32_t *inout)
        /* Convert to bigendian byte array */
        for (i = key->len - 1, ptr = inout; (int)i >= 0; i--, ptr++)
                put_unaligned_be32(result[i], ptr);
-
        return 0;
 }
 
 static int rsa_verify_key(const struct rsa_public_key *key, const uint8_t *sig,
-               const uint32_t sig_len, const uint8_t *hash)
+                         const uint32_t sig_len, const uint8_t *hash,
+                         struct checksum_algo *algo)
 {
        const uint8_t *padding;
        int pad_len;
        int ret;
 
-       if (!key || !sig || !hash)
+       if (!key || !sig || !hash || !algo)
                return -EIO;
 
        if (sig_len != (key->len * sizeof(uint32_t))) {
@@ -223,6 +180,8 @@ static int rsa_verify_key(const struct rsa_public_key *key, const uint8_t *sig,
                return -EINVAL;
        }
 
+       debug("Checksum algorithm: %s", algo->name);
+
        /* Sanity check for stack size */
        if (sig_len > RSA_MAX_SIG_BITS / 8) {
                debug("Signature length %u exceeds maximum %d\n", sig_len,
@@ -238,9 +197,8 @@ static int rsa_verify_key(const struct rsa_public_key *key, const uint8_t *sig,
        if (ret)
                return ret;
 
-       /* Determine padding to use depending on the signature type. */
-       padding = padding_sha1_rsa2048;
-       pad_len = RSA2048_BYTES - SHA1_SUM_LEN;
+       padding = algo->rsa_padding;
+       pad_len = algo->pad_len - algo->checksum_len;
 
        /* Check pkcs1.5 padding bytes. */
        if (memcmp(buf, padding, pad_len)) {
@@ -309,7 +267,7 @@ static int rsa_verify_with_keynode(struct image_sign_info *info,
        }
 
        debug("key length %d\n", key.len);
-       ret = rsa_verify_key(&key, sig, sig_len, hash);
+       ret = rsa_verify_key(&key, sig, sig_len, hash, info->algo->checksum);
        if (ret) {
                printf("%s: RSA failed to verify: %d\n", __func__, ret);
                return ret;
@@ -323,12 +281,23 @@ int rsa_verify(struct image_sign_info *info,
               uint8_t *sig, uint sig_len)
 {
        const void *blob = info->fdt_blob;
-       uint8_t hash[SHA1_SUM_LEN];
+       /* Reserve memory for maximum checksum-length */
+       uint8_t hash[info->algo->checksum->pad_len];
        int ndepth, noffset;
        int sig_node, node;
        char name[100];
-       sha1_context ctx;
-       int ret, i;
+       int ret;
+
+       /*
+        * Verify that the checksum-length does not exceed the
+        * rsa-signature-length
+        */
+       if (info->algo->checksum->checksum_len >
+           info->algo->checksum->pad_len) {
+               debug("%s: invlaid checksum-algorithm %s for %s\n",
+                     __func__, info->algo->checksum->name, info->algo->name);
+               return -EINVAL;
+       }
 
        sig_node = fdt_subnode_offset(blob, 0, FIT_SIG_NODENAME);
        if (sig_node < 0) {
@@ -336,10 +305,8 @@ int rsa_verify(struct image_sign_info *info,
                return -ENOENT;
        }
 
-       sha1_starts(&ctx);
-       for (i = 0; i < region_count; i++)
-               sha1_update(&ctx, region[i].data, region[i].size);
-       sha1_finish(&ctx, hash);
+       /* Calculate checksum with checksum-algorithm */
+       info->algo->checksum->calculate(region, region_count, hash);
 
        /* See if we must use a particular key */
        if (info->required_keynode != -1) {
index 7348162575ceaccda1fa0100298e47e2f0e25af9..3212baba5f6c253f635220bd55b0c31707ae9341 100644 (file)
@@ -258,14 +258,15 @@ void sha256_csum_wd(const unsigned char *input, unsigned int ilen,
 {
        sha256_context ctx;
 #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
-       unsigned char *end, *curr;
+       const unsigned char *end;
+       unsigned char *curr;
        int chunk;
 #endif
 
        sha256_starts(&ctx);
 
 #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
-       curr = input;
+       curr = (unsigned char *)input;
        end = input + ilen;
        while (curr < end) {
                chunk = end - curr;
index c639b126fdf44274b22da445672d9a3a7a042824..9f338024ea2afe50d42ed8f159a0e3e659524c10 100644 (file)
@@ -78,11 +78,7 @@ $(obj)/resetvec.S:
        @rm -f $@
        ln -s $(srctree)/$(CPUDIR)/resetvec.S $@
 
-$(obj)/fixed_ivor.S:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@
-
-$(obj)/start.S: $(obj)/fixed_ivor.S
+$(obj)/start.S:
        @rm -f $@
        ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/start.S $@
 
index c639b126fdf44274b22da445672d9a3a7a042824..9f338024ea2afe50d42ed8f159a0e3e659524c10 100644 (file)
@@ -78,11 +78,7 @@ $(obj)/resetvec.S:
        @rm -f $@
        ln -s $(srctree)/$(CPUDIR)/resetvec.S $@
 
-$(obj)/fixed_ivor.S:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@
-
-$(obj)/start.S: $(obj)/fixed_ivor.S
+$(obj)/start.S:
        @rm -f $@
        ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/start.S $@
 
index c639b126fdf44274b22da445672d9a3a7a042824..9f338024ea2afe50d42ed8f159a0e3e659524c10 100644 (file)
@@ -78,11 +78,7 @@ $(obj)/resetvec.S:
        @rm -f $@
        ln -s $(srctree)/$(CPUDIR)/resetvec.S $@
 
-$(obj)/fixed_ivor.S:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@
-
-$(obj)/start.S: $(obj)/fixed_ivor.S
+$(obj)/start.S:
        @rm -f $@
        ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/start.S $@
 
index 38f67264498d2e15cd9a6c5073f7364917917fcc..fba9f9350b70038e7ba0bf6d7a87a255047cd652 100644 (file)
@@ -74,11 +74,7 @@ $(obj)/resetvec.S:
        @rm -f $@
        ln -s $(srctree)/$(CPUDIR)/resetvec.S $@
 
-$(obj)/fixed_ivor.S:
-       @rm -f $@
-       ln -sf $(srctree)/$(CPUDIR)/fixed_ivor.S $@
-
-$(obj)/start.S: $(obj)/fixed_ivor.S
+$(obj)/start.S:
        @rm -f $@
        ln -sf $(srctree)/$(CPUDIR)/start.S $@
 
index c639b126fdf44274b22da445672d9a3a7a042824..9f338024ea2afe50d42ed8f159a0e3e659524c10 100644 (file)
@@ -78,11 +78,7 @@ $(obj)/resetvec.S:
        @rm -f $@
        ln -s $(srctree)/$(CPUDIR)/resetvec.S $@
 
-$(obj)/fixed_ivor.S:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/fixed_ivor.S $@
-
-$(obj)/start.S: $(obj)/fixed_ivor.S
+$(obj)/start.S:
        @rm -f $@
        ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/start.S $@
 
index 91505475e85ebbffcbbdd902762513840ca252dc..d12250018ae7b33b58f7df8322f652ba1f9aa2ee 100644 (file)
@@ -365,19 +365,10 @@ static void scc_init (int scc_index)
        immr->im_cpm.cp_scc[scc_index].scc_psmr = SCC_PSMR_ENCRC |
                        SCC_PSMR_NIB22 | SCC_PSMR_LPB;
 
-#ifdef CONFIG_RPXCLASSIC
-       *((uchar *) BCSR0) &= ~BCSR0_ETHLPBK;
-       *((uchar *) BCSR0) |= (BCSR0_ETHEN | BCSR0_COLTEST | BCSR0_FULLDPLX);
-#endif
-
 #ifdef CONFIG_RPXLITE
        *((uchar *) BCSR0) |= BCSR0_ETHEN;
 #endif
 
-#ifdef CONFIG_MBX
-       board_ether_init ();
-#endif
-
        /*
         * Set the ENT/ENR bits in the GSMR Low -- Enable Transmit/Receive
         */
@@ -390,8 +381,6 @@ static void scc_init (int scc_index)
         */
 #if defined (CONFIG_FADS)
        udelay (10000);                         /* wait 10 ms */
-#elif defined(CONFIG_RPXCLASSIC)
-       udelay (100000);                        /* wait 100 ms */
 #endif
 }
 
index 106a9b87d2cfd43c888683fa2b075701954176a6..5214c71b085cd394cc975bda57e39f03ac06524a 100644 (file)
@@ -106,7 +106,7 @@ static void smc_init (int smc_index)
                        ~(smc_index == 1 ? BCSR1_RS232EN_1 : BCSR1_RS232EN_2);
 #endif
 
-#if defined(CONFIG_RPXLITE) || defined(CONFIG_RPXCLASSIC)
+#if defined(CONFIG_RPXLITE)
        /* Enable Monitor Port Transceiver */
        *((uchar *) BCSR0) |= BCSR0_ENMONXCVR;
 #endif
@@ -141,10 +141,6 @@ static void smc_init (int smc_index)
        up->smc_rfcr = SMC_EB;
        up->smc_tfcr = SMC_EB;
 
-#if defined(CONFIG_MBX)
-       board_serial_init ();
-#endif
-
        /* Set UART mode, 8 bit, no parity, one stop.
         * Enable receive and transmit.
         * Set local loopback mode.
index 650457191a237a50e95271bff67a69ef12295ebb..c664e39be6a6a193ca9b6448c6c01e28b18099b8 100644 (file)
@@ -3,6 +3,7 @@
 
 # Convenient variables
 comma   := ,
+quote   := "
 squote  := '
 empty   :=
 space   := $(empty) $(empty)
@@ -161,6 +162,15 @@ ld-option = $(call try-run,\
 # Important: no spaces around options
 ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2))
 
+# ld-version
+# Usage: $(call ld-version)
+# Note this is mainly for HJ Lu's 3 number binutil versions
+ld-version = $(shell $(LD) --version | $(srctree)/scripts/ld-version.sh)
+
+# ld-ifversion
+# Usage:  $(call ld-ifversion, -ge, 22252, y)
+ld-ifversion = $(shell [ $(call ld-version) $(1) $(2) ] && echo $(3))
+
 ######
 
 ###
index 242e3a06fc4ce5752c4ac67ca81c63ff6d37c635..68c998e588e0d334e52af9529a613a88ebcb35b9 100644 (file)
@@ -9,7 +9,7 @@ hostprogs-y += docproc
 
 # These targets are used internally to avoid "is up to date" messages
 PHONY += build_docproc
-build_docproc: scripts/docproc
+build_docproc: $(obj)/docproc
        @:
 
 # Let clean descend into subdirs
index 36346fd161fc2692737c553de0b2239de4c0fb54..6416c1a8bc9ab9a67c0bada6fd7274e60392560b 100644 (file)
@@ -90,12 +90,22 @@ warning-  := $(empty)
 warning-1 := -Wextra -Wunused -Wno-unused-parameter
 warning-1 += -Wmissing-declarations
 warning-1 += -Wmissing-format-attribute
-warning-1 += -Wmissing-prototypes
+warning-1 += $(call cc-option, -Wmissing-prototypes)
 warning-1 += -Wold-style-definition
 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
@@ -225,7 +235,7 @@ $(multi-objs-y:.o=.s)   : modname = $(modname-multi)
 $(multi-objs-y:.o=.lst) : modname = $(modname-multi)
 
 quiet_cmd_cc_s_c = CC $(quiet_modtag)  $@
-cmd_cc_s_c       = $(CC) $(c_flags) -fverbose-asm -S -o $@ $<
+cmd_cc_s_c       = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -S -o $@ $<
 
 $(obj)/%.s: $(src)/%.c FORCE
        $(call if_changed_dep,cc_s_c)
index d568fde2cc34db92e4ccf7157ad7dfc53288bb76..a04439dcc92335ce6e53cb31c29c2958753a63ea 100644 (file)
@@ -273,6 +273,18 @@ $(obj)/%.dtb: $(src)/%.dts FORCE
 
 dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
 
+# Helper targets for Installing DTBs into the boot directory
+quiet_cmd_dtb_install =        INSTALL $<
+      cmd_dtb_install =        cp $< $(2)
+
+_dtbinst_pre_:
+       $(Q)if [ -d $(INSTALL_DTBS_PATH).old ]; then rm -rf $(INSTALL_DTBS_PATH).old; fi
+       $(Q)if [ -d $(INSTALL_DTBS_PATH) ]; then mv $(INSTALL_DTBS_PATH) $(INSTALL_DTBS_PATH).old; fi
+       $(Q)mkdir -p $(INSTALL_DTBS_PATH)
+
+%.dtb_dtbinst_: $(obj)/%.dtb _dtbinst_pre_
+       $(call cmd,dtb_install,$(INSTALL_DTBS_PATH))
+
 # Bzip2
 # ---------------------------------------------------------------------------
 
@@ -367,7 +379,3 @@ quiet_cmd_xzmisc = XZMISC  $@
 cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
        xz --check=crc32 --lzma2=dict=1MiB) > $@ || \
        (rm -f $@ ; false)
-
-# misc stuff
-# ---------------------------------------------------------------------------
-quote:="
diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh
new file mode 100755 (executable)
index 0000000..198580d
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/awk -f
+# extract linker version number from stdin and turn into single number
+       {
+       gsub(".*)", "");
+       split($1,a, ".");
+       print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
+       exit
+       }
diff --git a/scripts/objdiff b/scripts/objdiff
new file mode 100755 (executable)
index 0000000..b3e4f10
--- /dev/null
@@ -0,0 +1,141 @@
+#!/bin/bash
+
+# objdiff - a small script for validating that a commit or series of commits
+# didn't change object code.
+#
+# Copyright 2014, Jason Cooper <jason@lakedaemon.net>
+#
+# Licensed under the terms of the GNU GPL version 2
+
+# usage example:
+#
+# $ git checkout COMMIT_A
+# $ <your fancy build command here>
+# $ ./scripts/objdiff record path/to/*.o
+#
+# $ git checkout COMMIT_B
+# $ <your fancy build command here>
+# $ ./scripts/objdiff record path/to/*.o
+#
+# $ ./scripts/objdiff diff COMMIT_A COMMIT_B
+# $
+
+# And to clean up (everything is in .tmp_objdiff/*)
+# $ ./scripts/objdiff clean all
+#
+# Note: 'make mrproper' will also remove .tmp_objdiff
+
+GIT_DIR="`git rev-parse --git-dir`"
+
+if [ -d "$GIT_DIR" ]; then
+       TMPD="${GIT_DIR%git}tmp_objdiff"
+
+       [ -d "$TMPD" ] || mkdir "$TMPD"
+else
+       echo "ERROR: git directory not found."
+       exit 1
+fi
+
+usage() {
+       echo "Usage: $0 <command> <args>"
+       echo "  record    <list of object files>"
+       echo "  diff      <commitA> <commitB>"
+       echo "  clean     all | <commit>"
+       exit 1
+}
+
+dorecord() {
+       [ $# -eq 0 ] && usage
+
+       FILES="$*"
+
+       CMT="`git rev-parse --short HEAD`"
+
+       OBJDUMP="${CROSS_COMPILE}objdump"
+       OBJDIFFD="$TMPD/$CMT"
+
+       [ ! -d "$OBJDIFFD" ] && mkdir -p "$OBJDIFFD"
+
+       for f in $FILES; do
+               dn="${f%/*}"
+               bn="${f##*/}"
+
+               [ ! -d "$OBJDIFFD/$dn" ] && mkdir -p "$OBJDIFFD/$dn"
+
+               # remove addresses for a more clear diff
+               # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and
+               $OBJDUMP -D "$f" | sed "s/^[[:space:]]\+[0-9a-f]\+//" \
+                       >"$OBJDIFFD/$dn/$bn"
+       done
+}
+
+dodiff() {
+       [ $# -ne 2 ] && [ $# -ne 0 ] && usage
+
+       if [ $# -eq 0 ]; then
+               SRC="`git rev-parse --short HEAD^`"
+               DST="`git rev-parse --short HEAD`"
+       else
+               SRC="`git rev-parse --short $1`"
+               DST="`git rev-parse --short $2`"
+       fi
+
+       DIFF="`which colordiff`"
+
+       if [ ${#DIFF} -eq 0 ] || [ ! -x "$DIFF" ]; then
+               DIFF="`which diff`"
+       fi
+
+       SRCD="$TMPD/$SRC"
+       DSTD="$TMPD/$DST"
+
+       if [ ! -d "$SRCD" ]; then
+               echo "ERROR: $SRCD doesn't exist"
+               exit 1
+       fi
+
+       if [ ! -d "$DSTD" ]; then
+               echo "ERROR: $DSTD doesn't exist"
+               exit 1
+       fi
+
+       $DIFF -Nurd $SRCD $DSTD
+}
+
+doclean() {
+       [ $# -eq 0 ] && usage
+       [ $# -gt 1 ] && usage
+
+       if [ "x$1" = "xall" ]; then
+               rm -rf $TMPD/*
+       else
+               CMT="`git rev-parse --short $1`"
+
+               if [ -d "$TMPD/$CMT" ]; then
+                       rm -rf $TMPD/$CMT
+               else
+                       echo "$CMT not found"
+               fi
+       fi
+}
+
+[ $# -eq 0 ] &&        usage
+
+case "$1" in
+       record)
+               shift
+               dorecord $*
+               ;;
+       diff)
+               shift
+               dodiff $*
+               ;;
+       clean)
+               shift
+               doclean $*
+               ;;
+       *)
+               echo "Unrecognized command '$1'"
+               exit 1
+               ;;
+esac
diff --git a/test/vboot/sign-configs-sha256.its b/test/vboot/sign-configs-sha256.its
new file mode 100644 (file)
index 0000000..1b3432e
--- /dev/null
@@ -0,0 +1,45 @@
+/dts-v1/;
+
+/ {
+       description = "Chrome OS kernel image with one or more FDT blobs";
+       #address-cells = <1>;
+
+       images {
+               kernel@1 {
+                       data = /incbin/("test-kernel.bin");
+                       type = "kernel_noload";
+                       arch = "sandbox";
+                       os = "linux";
+                       compression = "none";
+                       load = <0x4>;
+                       entry = <0x8>;
+                       kernel-version = <1>;
+                       hash@1 {
+                               algo = "sha256";
+                       };
+               };
+               fdt@1 {
+                       description = "snow";
+                       data = /incbin/("sandbox-kernel.dtb");
+                       type = "flat_dt";
+                       arch = "sandbox";
+                       compression = "none";
+                       fdt-version = <1>;
+                       hash@1 {
+                               algo = "sha256";
+                       };
+               };
+       };
+       configurations {
+               default = "conf@1";
+               conf@1 {
+                       kernel = "kernel@1";
+                       fdt = "fdt@1";
+                       signature@1 {
+                               algo = "sha256,rsa2048";
+                               key-name-hint = "dev";
+                               sign-images = "fdt", "kernel";
+                       };
+               };
+       };
+};
diff --git a/test/vboot/sign-images-sha256.its b/test/vboot/sign-images-sha256.its
new file mode 100644 (file)
index 0000000..e6aa9fc
--- /dev/null
@@ -0,0 +1,42 @@
+/dts-v1/;
+
+/ {
+       description = "Chrome OS kernel image with one or more FDT blobs";
+       #address-cells = <1>;
+
+       images {
+               kernel@1 {
+                       data = /incbin/("test-kernel.bin");
+                       type = "kernel_noload";
+                       arch = "sandbox";
+                       os = "linux";
+                       compression = "none";
+                       load = <0x4>;
+                       entry = <0x8>;
+                       kernel-version = <1>;
+                       signature@1 {
+                               algo = "sha256,rsa2048";
+                               key-name-hint = "dev";
+                       };
+               };
+               fdt@1 {
+                       description = "snow";
+                       data = /incbin/("sandbox-kernel.dtb");
+                       type = "flat_dt";
+                       arch = "sandbox";
+                       compression = "none";
+                       fdt-version = <1>;
+                       signature@1 {
+                               algo = "sha256,rsa2048";
+                               key-name-hint = "dev";
+                       };
+               };
+       };
+       configurations {
+               default = "conf@1";
+               conf@1 {
+                       kernel = "kernel@1";
+                       fdt = "fdt@1";
+               };
+       };
+};
index bb2c6051c8a41bb7d82214dad884d27d6c2570f9..3c6efa774ec72c3dbd790b31e2946a063eabcfb1 100755 (executable)
@@ -47,6 +47,7 @@ O=$(readlink -f ${O})
 dtc="-I dts -O dtb -p 2000"
 uboot="${O}/u-boot"
 mkimage="${O}/tools/mkimage"
+fit_check_sign="${O}/tools/fit_check_sign"
 keys="${dir}/dev-keys"
 echo ${mkimage} -D "${dtc}"
 
@@ -61,47 +62,76 @@ openssl req -batch -new -x509 -key ${keys}/dev.key -out ${keys}/dev.crt
 
 pushd ${dir} >/dev/null
 
-# Compile our device tree files for kernel and U-Boot (CONFIG_OF_CONTROL)
-dtc -p 0x1000 sandbox-kernel.dts -O dtb -o sandbox-kernel.dtb
-dtc -p 0x1000 sandbox-u-boot.dts -O dtb -o sandbox-u-boot.dtb
+function do_test {
+       echo do $sha test
+       # Compile our device tree files for kernel and U-Boot
+       dtc -p 0x1000 sandbox-kernel.dts -O dtb -o sandbox-kernel.dtb
+       dtc -p 0x1000 sandbox-u-boot.dts -O dtb -o sandbox-u-boot.dtb
 
-# Create a number kernel image with zeroes
-head -c 5000 /dev/zero >test-kernel.bin
+       # Create a number kernel image with zeroes
+       head -c 5000 /dev/zero >test-kernel.bin
 
-# Build the FIT, but don't sign anything yet
-echo Build FIT with signed images
-${mkimage} -D "${dtc}" -f sign-images.its test.fit >${tmp}
+       # Build the FIT, but don't sign anything yet
+       echo Build FIT with signed images
+       ${mkimage} -D "${dtc}" -f sign-images-$sha.its test.fit >${tmp}
 
-run_uboot "unsigned signatures:" "dev-"
+       run_uboot "unsigned signatures:" "dev-"
 
-# Sign images with our dev keys
-echo Sign images
-${mkimage} -D "${dtc}" -F -k dev-keys -K sandbox-u-boot.dtb -r test.fit >${tmp}
+       # Sign images with our dev keys
+       echo Sign images
+       ${mkimage} -D "${dtc}" -F -k dev-keys -K sandbox-u-boot.dtb \
+               -r test.fit >${tmp}
 
-run_uboot "signed images" "dev+"
+       run_uboot "signed images" "dev+"
 
 
-# Create a fresh .dtb without the public keys
-dtc -p 0x1000 sandbox-u-boot.dts -O dtb -o sandbox-u-boot.dtb
+       # Create a fresh .dtb without the public keys
+       dtc -p 0x1000 sandbox-u-boot.dts -O dtb -o sandbox-u-boot.dtb
 
-echo Build FIT with signed configuration
-${mkimage} -D "${dtc}" -f sign-configs.its test.fit >${tmp}
+       echo Build FIT with signed configuration
+       ${mkimage} -D "${dtc}" -f sign-configs-$sha.its test.fit >${tmp}
 
-run_uboot "unsigned config" "sha1+ OK"
+       run_uboot "unsigned config" $sha"+ OK"
 
-# Sign images with our dev keys
-echo Sign images
-${mkimage} -D "${dtc}" -F -k dev-keys -K sandbox-u-boot.dtb -r test.fit >${tmp}
+       # Sign images with our dev keys
+       echo Sign images
+       ${mkimage} -D "${dtc}" -F -k dev-keys -K sandbox-u-boot.dtb \
+               -r test.fit >${tmp}
 
-run_uboot "signed config" "dev+"
+       run_uboot "signed config" "dev+"
 
-# Increment the first byte of the signature, which should cause failure
-sig=$(fdtget -t bx test.fit /configurations/conf@1/signature@1 value)
-newbyte=$(printf %x $((0x${sig:0:2} + 1)))
-sig="${newbyte} ${sig:2}"
-fdtput -t bx test.fit /configurations/conf@1/signature@1 value ${sig}
+       echo check signed config on the host
+       if ! ${fit_check_sign} -f test.fit -k sandbox-u-boot.dtb >${tmp}; then
+               echo
+               echo "Verified boot key check on host failed, output follows:"
+               cat ${tmp}
+               false
+       else
+               if ! grep -q "dev+" ${tmp}; then
+                       echo
+                       echo "Verified boot key check failed, output follows:"
+                       cat ${tmp}
+                       false
+               else
+                       echo "OK"
+               fi
+       fi
+
+       run_uboot "signed config" "dev+"
+
+       # Increment the first byte of the signature, which should cause failure
+       sig=$(fdtget -t bx test.fit /configurations/conf@1/signature@1 value)
+       newbyte=$(printf %x $((0x${sig:0:2} + 1)))
+       sig="${newbyte} ${sig:2}"
+       fdtput -t bx test.fit /configurations/conf@1/signature@1 value ${sig}
+
+       run_uboot "signed config with bad hash" "Bad Data Hash"
+}
 
-run_uboot "signed config with bad hash" "Bad Data Hash"
+sha=sha1
+do_test
+sha=sha256
+do_test
 
 popd >/dev/null
 
index 2a90dfe83a52339e2434207f192e475bdaa245d0..b1e997fc3ee0018efb954ad858201e01ca3c3d82 100644 (file)
@@ -1,5 +1,7 @@
 /bmp_logo
 /envcrc
+/fit_check_sign
+/fit_info
 /gen_eth_addr
 /img2srec
 /kwboot
index 911ad435900d2c24f5ac7a93f2cfa32b221df369..6e43a0150d41d200bdd4097bcdc2c5a3af792277 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
 
 # TODO: CONFIG_CMD_LICENSE does not work
 hostprogs-$(CONFIG_CMD_LICENSE) += bin2header$(SFX)
-
 hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
 hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX)
 HOSTCFLAGS_bmp_logo$(SFX).o := -pedantic
@@ -61,17 +60,20 @@ hostprogs-y += mkenvimage$(SFX)
 mkenvimage$(SFX)-objs := crc32.o mkenvimage.o os_support.o
 
 hostprogs-y += dumpimage$(SFX) mkimage$(SFX)
+hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info$(SFX) fit_check_sign$(SFX)
 
 FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := image-sig.o
 # Flattened device tree objects
 LIBFDT_OBJS := fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_wip.o
-RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := rsa-sign.o
+RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := rsa-sign.o rsa-verify.o rsa-checksum.o
 
 # common objs for dumpimage and mkimage
 dumpimage-mkimage-objs := aisimage.o \
                        $(FIT_SIG_OBJS-y) \
                        crc32.o \
                        default_image.o \
+                       fdtdec.o \
+                       fit_common.o \
                        fit_image.o \
                        gpimage.o \
                        gpimage-common.o \
@@ -87,12 +89,15 @@ dumpimage-mkimage-objs := aisimage.o \
                        os_support.o \
                        pblimage.o \
                        sha1.o \
+                       sha256.o \
                        ublimage.o \
                        $(LIBFDT_OBJS) \
                        $(RSA_OBJS-y)
 
 dumpimage$(SFX)-objs := $(dumpimage-mkimage-objs) dumpimage.o
 mkimage$(SFX)-objs   := $(dumpimage-mkimage-objs) mkimage.o
+fit_info$(SFX)-objs   := $(dumpimage-mkimage-objs) fit_info.o
+fit_check_sign$(SFX)-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
 
 # TODO(sjg@chromium.org): Is this correct on Mac OS?
 
@@ -100,6 +105,8 @@ mkimage$(SFX)-objs   := $(dumpimage-mkimage-objs) mkimage.o
 ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
 HOSTLOADLIBES_dumpimage$(SFX) := -lssl -lcrypto
 HOSTLOADLIBES_mkimage$(SFX) := -lssl -lcrypto
+HOSTLOADLIBES_fit_info$(SFX) := -lssl -lcrypto
+HOSTLOADLIBES_fit_check_sign$(SFX) := -lssl -lcrypto
 # Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
 # the mxsimage support within tools/mxsimage.c .
 HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS
@@ -108,6 +115,8 @@ endif
 ifdef CONFIG_FIT_SIGNATURE
 HOSTLOADLIBES_dumpimage$(SFX) := -lssl -lcrypto
 HOSTLOADLIBES_mkimage$(SFX) := -lssl -lcrypto
+HOSTLOADLIBES_fit_info$(SFX) := -lssl -lcrypto
+HOSTLOADLIBES_fit_check_sign$(SFX) := -lssl -lcrypto
 
 # This affects include/image.h, but including the board config file
 # is tricky, so manually define this options here.
@@ -139,6 +148,7 @@ hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela$(SFX)
 HOSTCFLAGS_crc32.o := -pedantic
 HOSTCFLAGS_md5.o := -pedantic
 HOSTCFLAGS_sha1.o := -pedantic
+HOSTCFLAGS_sha256.o := -pedantic
 
 # Don't build by default
 #hostprogs-$(CONFIG_PPC) += mpc86x_clk$(SFX)
index 8822efefa58b985a1ee4fe3c592308c7ecab4c8f..73a5483d46b4da9178cd974779d17556d921bf10 100755 (executable)
@@ -101,6 +101,9 @@ parser.add_option('-T', '--threads', type='int',
        default=None, help='Number of builder threads to use')
 parser.add_option('-u', '--show_unknown', action='store_true',
        default=False, help='Show boards with unknown build result')
+parser.add_option('-o', '--output-dir', type='string',
+       dest='output_dir', default='..',
+       help='Directory where all builds happen and buildman has its workspace (default is ../)')
 
 parser.usage = """buildman -b <branch> [options]
 
index 8e6a08f78e27dbb30b7a29213ad5f6008ec2fead..d2f4102ba729c92e8b4c356cd4d3bb76c1688216 100644 (file)
@@ -145,7 +145,7 @@ def DoBuildman(options, args):
         options.step = len(series.commits) - 1
 
     # Create a new builder with the selected options
-    output_dir = os.path.join('..', options.branch)
+    output_dir = os.path.join(options.output_dir, options.branch)
     builder = Builder(toolchains, output_dir, options.git_dir,
             options.threads, options.jobs, checkout=True,
             show_unknown=options.show_unknown, step=options.step)
index fcb752ddb44f292eccb6ba09b770c5b35bba1314..f5368bc4d0253286ae4ba08f501f50ea5605ceb0 100644 (file)
@@ -25,7 +25,7 @@ hostprogs-y := fw_printenv_unstripped
 
 fw_printenv_unstripped-objs := fw_env.o fw_env_main.o \
        crc32.o ctype.o linux_string.o \
-       env_attr.o env_flags.o
+       env_attr.o env_flags.o aes.o
 
 quiet_cmd_strip = STRIP   $@
       cmd_strip = $(STRIP) -o $@ $<
index f5cd521491a7408c5104ace6d6aafcc698d9bce2..30d5b037f09b21a252d15ca8fc447c570de43138 100644 (file)
 
 #include "fw_env.h"
 
+#include <aes.h>
+
+#define DIV_ROUND_UP(n, d)     (((n) + (d) - 1) / (d))
+
 #define WHITESPACE(c) ((c == '\t') || (c == ' '))
 
 #define min(x, y) ({                           \
@@ -98,6 +102,11 @@ static struct environment environment = {
        .flag_scheme = FLAG_NONE,
 };
 
+/* Is AES encryption used? */
+static int aes_flag;
+static uint8_t aes_key[AES_KEY_LENGTH] = { 0 };
+static int env_aes_cbc_crypt(char *data, const int enc);
+
 static int HaveRedundEnv = 0;
 
 static unsigned char active_flag = 1;
@@ -120,6 +129,10 @@ static inline ulong getenvsize (void)
 
        if (HaveRedundEnv)
                rc -= sizeof (char);
+
+       if (aes_flag)
+               rc &= ~(AES_KEY_LENGTH - 1);
+
        return rc;
 }
 
@@ -191,6 +204,36 @@ char *fw_getdefenv(char *name)
        return NULL;
 }
 
+static int parse_aes_key(char *key)
+{
+       char tmp[5] = { '0', 'x', 0, 0, 0 };
+       unsigned long ul;
+       int i;
+
+       if (strnlen(key, 64) != 32) {
+               fprintf(stderr,
+                       "## Error: '-a' option requires 16-byte AES key\n");
+               return -1;
+       }
+
+       for (i = 0; i < 16; i++) {
+               tmp[2] = key[0];
+               tmp[3] = key[1];
+               errno = 0;
+               ul = strtoul(tmp, NULL, 16);
+               if (errno) {
+                       fprintf(stderr,
+                               "## Error: '-a' option requires valid AES key\n");
+                       return -1;
+               }
+               aes_key[i] = ul & 0xff;
+               key += 2;
+       }
+       aes_flag = 1;
+
+       return 0;
+}
+
 /*
  * Print the current definition of one, or more, or all
  * environment variables
@@ -201,6 +244,19 @@ int fw_printenv (int argc, char *argv[])
        int i, n_flag;
        int rc = 0;
 
+       if (argc >= 2 && strcmp(argv[1], "-a") == 0) {
+               if (argc < 3) {
+                       fprintf(stderr,
+                               "## Error: '-a' option requires AES key\n");
+                       return -1;
+               }
+               rc = parse_aes_key(argv[2]);
+               if (rc)
+                       return rc;
+               argv += 2;
+               argc -= 2;
+       }
+
        if (fw_env_open())
                return -1;
 
@@ -266,6 +322,16 @@ int fw_printenv (int argc, char *argv[])
 
 int fw_env_close(void)
 {
+       int ret;
+       if (aes_flag) {
+               ret = env_aes_cbc_crypt(environment.data, 1);
+               if (ret) {
+                       fprintf(stderr,
+                               "Error: can't encrypt env for flash\n");
+                       return ret;
+               }
+       }
+
        /*
         * Update CRC
         */
@@ -413,7 +479,7 @@ int fw_env_write(char *name, char *value)
  */
 int fw_setenv(int argc, char *argv[])
 {
-       int i;
+       int i, rc;
        size_t len;
        char *name;
        char *value = NULL;
@@ -423,6 +489,24 @@ int fw_setenv(int argc, char *argv[])
                return -1;
        }
 
+       if (strcmp(argv[1], "-a") == 0) {
+               if (argc < 3) {
+                       fprintf(stderr,
+                               "## Error: '-a' option requires AES key\n");
+                       return -1;
+               }
+               rc = parse_aes_key(argv[2]);
+               if (rc)
+                       return rc;
+               argv += 2;
+               argc -= 2;
+       }
+
+       if (argc < 2) {
+               errno = EINVAL;
+               return -1;
+       }
+
        if (fw_env_open()) {
                fprintf(stderr, "Error: environment not initialized\n");
                return -1;
@@ -900,6 +984,28 @@ static int flash_flag_obsolete (int dev, int fd, off_t offset)
        return rc;
 }
 
+/* Encrypt or decrypt the environment before writing or reading it. */
+static int env_aes_cbc_crypt(char *payload, const int enc)
+{
+       uint8_t *data = (uint8_t *)payload;
+       const int len = getenvsize();
+       uint8_t key_exp[AES_EXPAND_KEY_LENGTH];
+       uint32_t aes_blocks;
+
+       /* First we expand the key. */
+       aes_expand_key(aes_key, key_exp);
+
+       /* Calculate the number of AES blocks to encrypt. */
+       aes_blocks = DIV_ROUND_UP(len, AES_KEY_LENGTH);
+
+       if (enc)
+               aes_cbc_encrypt_blocks(key_exp, data, data, aes_blocks);
+       else
+               aes_cbc_decrypt_blocks(key_exp, data, data, aes_blocks);
+
+       return 0;
+}
+
 static int flash_write (int fd_current, int fd_target, int dev_target)
 {
        int rc;
@@ -923,6 +1029,7 @@ static int flash_write (int fd_current, int fd_target, int dev_target)
        fprintf(stderr, "Writing new environment at 0x%lx on %s\n",
                DEVOFFSET (dev_target), DEVNAME (dev_target));
 #endif
+
        rc = flash_write_buf(dev_target, fd_target, environment.image,
                              CUR_ENVSIZE, DEVOFFSET(dev_target),
                              DEVTYPE(dev_target));
@@ -981,8 +1088,10 @@ static int flash_read (int fd)
 
        rc = flash_read_buf(dev_current, fd, environment.image, CUR_ENVSIZE,
                             DEVOFFSET (dev_current), mtdinfo.type);
+       if (rc != CUR_ENVSIZE)
+               return -1;
 
-       return (rc != CUR_ENVSIZE) ? -1 : 0;
+       return 0;
 }
 
 static int flash_io (int mode)
@@ -1075,6 +1184,8 @@ int fw_env_open(void)
        unsigned char flag1;
        void *addr1;
 
+       int ret;
+
        struct env_image_single *single;
        struct env_image_redundant *redundant;
 
@@ -1109,6 +1220,13 @@ int fw_env_open(void)
                return -1;
 
        crc0 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
+
+       if (aes_flag) {
+               ret = env_aes_cbc_crypt(environment.data, 0);
+               if (ret)
+                       return ret;
+       }
+
        crc0_ok = (crc0 == *environment.crc);
        if (!HaveRedundEnv) {
                if (!crc0_ok) {
@@ -1159,6 +1277,13 @@ int fw_env_open(void)
                }
 
                crc1 = crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
+
+               if (aes_flag) {
+                       ret = env_aes_cbc_crypt(redundant->data, 0);
+                       if (ret)
+                               return ret;
+               }
+
                crc1_ok = (crc1 == redundant->crc);
                flag1 = redundant->flags;
 
index 2b85d78864561d9414e085cfbd8081fa305112b9..ce50d58b64648d853ae79fa697167557d6b8ea75 100644 (file)
@@ -9,18 +9,22 @@
  * Command line user interface to firmware (=U-Boot) environment.
  *
  * Implements:
- *     fw_printenv [[ -n name ] | [ name ... ]]
+ *     fw_printenv [ -a key ] [[ -n name ] | [ name ... ]]
  *              - prints the value of a single environment variable
  *                "name", the ``name=value'' pairs of one or more
  *                environment variables "name", or the whole
  *                environment if no names are specified.
- *     fw_setenv name [ value ... ]
+ *     fw_setenv [ -a key ] name [ value ... ]
  *             - If a name without any values is given, the variable
  *               with this name is deleted from the environment;
  *               otherwise, all "value" arguments are concatenated,
  *               separated by single blank characters, and the
  *               resulting string is assigned to the environment
  *               variable "name"
+ *
+ * If '-a key' is specified, the env block is encrypted with AES 128 CBC.
+ * The 'key' argument is in the format of 32 hexadecimal numbers (16 bytes
+ * of AES key), eg. '-a aabbccddeeff00112233445566778899'.
  */
 
 #include <fcntl.h>
@@ -46,8 +50,8 @@ void usage(void)
 
        fprintf(stderr, "fw_printenv/fw_setenv, "
                "a command line interface to U-Boot environment\n\n"
-               "usage:\tfw_printenv [-n] [variable name]\n"
-               "\tfw_setenv [variable name] [variable value]\n"
+               "usage:\tfw_printenv [-a key] [-n] [variable name]\n"
+               "\tfw_setenv [-a key] [variable name] [variable value]\n"
                "\tfw_setenv -s [ file ]\n"
                "\tfw_setenv -s - < [ file ]\n\n"
                "The file passed as argument contains only pairs "
@@ -94,9 +98,12 @@ int main(int argc, char *argv[])
                cmdname = p + 1;
        }
 
-       while ((c = getopt_long (argc, argv, "ns:h",
+       while ((c = getopt_long (argc, argv, "a:ns:h",
                long_options, NULL)) != EOF) {
                switch (c) {
+               case 'a':
+                       /* AES key, handled later */
+                       break;
                case 'n':
                        /* handled in fw_printenv */
                        break;
index c2b23c6217fce0ac39c9c91f758cd2b77dfdc64b..134d9657139b4347257bf34ae644ed08a0fb674d 100644 (file)
@@ -11,4 +11,6 @@
 #include "../include/libfdt.h"
 #include "../include/fdt_support.h"
 
+int fit_check_sign(const void *working_fdt, const void *key);
+
 #endif /* __FDT_HOST_H__ */
diff --git a/tools/fdtdec.c b/tools/fdtdec.c
new file mode 100644 (file)
index 0000000..f1c2256
--- /dev/null
@@ -0,0 +1 @@
+#include "../lib/fdtdec.c"
diff --git a/tools/fit_check_sign.c b/tools/fit_check_sign.c
new file mode 100644 (file)
index 0000000..d6d9340
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * (C) Copyright 2014
+ * DENX Software Engineering
+ * Heiko Schocher <hs@denx.de>
+ *
+ * Based on:
+ * (C) Copyright 2008 Semihalf
+ *
+ * (C) Copyright 2000-2004
+ * DENX Software Engineering
+ * Wolfgang Denk, wd@denx.de
+ *
+ * Updated-by: Prafulla Wadaskar <prafulla@marvell.com>
+ *             FIT image specific code abstracted from mkimage.c
+ *             some functions added to address abstraction
+ *
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "mkimage.h"
+#include "fit_common.h"
+#include <image.h>
+#include <u-boot/crc.h>
+
+void usage(char *cmdname)
+{
+       fprintf(stderr, "Usage: %s -f fit file -k key file\n"
+                        "          -f ==> set fit file which should be checked'\n"
+                        "          -k ==> set key file which contains the key'\n",
+               cmdname);
+       exit(EXIT_FAILURE);
+}
+
+int main(int argc, char **argv)
+{
+       int ffd = -1;
+       int kfd = -1;
+       struct stat fsbuf;
+       struct stat ksbuf;
+       void *fit_blob;
+       char *fdtfile = NULL;
+       char *keyfile = NULL;
+       char cmdname[50];
+       int ret;
+       void *key_blob;
+       int c;
+
+       strcpy(cmdname, *argv);
+       while ((c = getopt(argc, argv, "f:k:")) != -1)
+               switch (c) {
+               case 'f':
+                       fdtfile = optarg;
+                       break;
+               case 'k':
+                       keyfile = optarg;
+                       break;
+               default:
+                       usage(cmdname);
+                       break;
+       }
+
+       ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, 0);
+       if (ffd < 0)
+               return EXIT_FAILURE;
+       kfd = mmap_fdt(cmdname, keyfile, &key_blob, &ksbuf, 0);
+       if (ffd < 0)
+               return EXIT_FAILURE;
+
+       image_set_host_blob(key_blob);
+       ret = fit_check_sign(fit_blob, key_blob);
+
+       if (ret)
+               ret = EXIT_SUCCESS;
+       else
+               ret = EXIT_FAILURE;
+
+       (void) munmap((void *)fit_blob, fsbuf.st_size);
+       (void) munmap((void *)key_blob, ksbuf.st_size);
+
+       close(ffd);
+       close(kfd);
+       exit(ret);
+}
diff --git a/tools/fit_common.c b/tools/fit_common.c
new file mode 100644 (file)
index 0000000..ee1767b
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * (C) Copyright 2014
+ * DENX Software Engineering
+ * Heiko Schocher <hs@denx.de>
+ *
+ * (C) Copyright 2008 Semihalf
+ *
+ * (C) Copyright 2000-2004
+ * DENX Software Engineering
+ * Wolfgang Denk, wd@denx.de
+ *
+ * Updated-by: Prafulla Wadaskar <prafulla@marvell.com>
+ *             FIT image specific code abstracted from mkimage.c
+ *             some functions added to address abstraction
+ *
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "imagetool.h"
+#include "mkimage.h"
+#include "fit_common.h"
+#include <image.h>
+#include <u-boot/crc.h>
+
+int fit_verify_header(unsigned char *ptr, int image_size,
+                       struct image_tool_params *params)
+{
+       return fdt_check_header(ptr);
+}
+
+int fit_check_image_types(uint8_t type)
+{
+       if (type == IH_TYPE_FLATDT)
+               return EXIT_SUCCESS;
+       else
+               return EXIT_FAILURE;
+}
+
+int mmap_fdt(char *cmdname, const char *fname, void **blobp,
+               struct stat *sbuf, int useunlink)
+{
+       void *ptr;
+       int fd;
+
+       /* Load FIT blob into memory (we need to write hashes/signatures) */
+       fd = open(fname, O_RDWR | O_BINARY);
+
+       if (fd < 0) {
+               fprintf(stderr, "%s: Can't open %s: %s\n",
+                       cmdname, fname, strerror(errno));
+               if (useunlink)
+                       unlink(fname);
+               return -1;
+       }
+
+       if (fstat(fd, sbuf) < 0) {
+               fprintf(stderr, "%s: Can't stat %s: %s\n",
+                       cmdname, fname, strerror(errno));
+               if (useunlink)
+                       unlink(fname);
+               return -1;
+       }
+
+       errno = 0;
+       ptr = mmap(0, sbuf->st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+       if ((ptr == MAP_FAILED) || (errno != 0)) {
+               fprintf(stderr, "%s: Can't read %s: %s\n",
+                       cmdname, fname, strerror(errno));
+               if (useunlink)
+                       unlink(fname);
+               return -1;
+       }
+
+       /* check if ptr has a valid blob */
+       if (fdt_check_header(ptr)) {
+               fprintf(stderr, "%s: Invalid FIT blob\n", cmdname);
+               if (useunlink)
+                       unlink(fname);
+               return -1;
+       }
+
+       *blobp = ptr;
+       return fd;
+}
diff --git a/tools/fit_common.h b/tools/fit_common.h
new file mode 100644 (file)
index 0000000..adf4404
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * (C) Copyright 2014
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _FIT_COMMON_H_
+#define _FIT_COMMON_H_
+
+#include "imagetool.h"
+#include "mkimage.h"
+#include <image.h>
+
+int fit_verify_header(unsigned char *ptr, int image_size,
+                       struct image_tool_params *params);
+
+int fit_check_image_types(uint8_t type);
+
+int mmap_fdt(char *cmdname, const char *fname, void **blobp,
+               struct stat *sbuf, int useunlink);
+
+#endif /* _FIT_COMMON_H_ */
index 1466164f0ae067e643e5cddf54d6da26a32dc12e..eeee484cdec096eecda45ad9942fc8354f38f4f3 100644 (file)
  */
 
 #include "imagetool.h"
+#include "fit_common.h"
 #include "mkimage.h"
 #include <image.h>
 #include <u-boot/crc.h>
 
 static image_header_t header;
 
-static int fit_verify_header (unsigned char *ptr, int image_size,
-                       struct image_tool_params *params)
-{
-       return fdt_check_header(ptr);
-}
-
-static int fit_check_image_types (uint8_t type)
-{
-       if (type == IH_TYPE_FLATDT)
-               return EXIT_SUCCESS;
-       else
-               return EXIT_FAILURE;
-}
-
-int mmap_fdt(struct image_tool_params *params, const char *fname, void **blobp,
-               struct stat *sbuf)
-{
-       void *ptr;
-       int fd;
-
-       /* Load FIT blob into memory (we need to write hashes/signatures) */
-       fd = open(fname, O_RDWR | O_BINARY);
-
-       if (fd < 0) {
-               fprintf(stderr, "%s: Can't open %s: %s\n",
-                       params->cmdname, fname, strerror(errno));
-               unlink(fname);
-               return -1;
-       }
-
-       if (fstat(fd, sbuf) < 0) {
-               fprintf(stderr, "%s: Can't stat %s: %s\n",
-                       params->cmdname, fname, strerror(errno));
-               unlink(fname);
-               return -1;
-       }
-
-       ptr = mmap(0, sbuf->st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
-       if (ptr == MAP_FAILED) {
-               fprintf(stderr, "%s: Can't read %s: %s\n",
-                       params->cmdname, fname, strerror(errno));
-               unlink(fname);
-               return -1;
-       }
-
-       /* check if ptr has a valid blob */
-       if (fdt_check_header(ptr)) {
-               fprintf(stderr, "%s: Invalid FIT blob\n", params->cmdname);
-               unlink(fname);
-               return -1;
-       }
-
-       *blobp = ptr;
-       return fd;
-}
-
 /**
  * fit_handle_file - main FIT file processing function
  *
@@ -129,13 +74,14 @@ static int fit_handle_file(struct image_tool_params *params)
        }
 
        if (params->keydest) {
-               destfd = mmap_fdt(params, params->keydest, &dest_blob, &sbuf);
+               destfd = mmap_fdt(params->cmdname, params->keydest,
+                                 &dest_blob, &sbuf, 1);
                if (destfd < 0)
                        goto err_keydest;
                destfd_size = sbuf.st_size;
        }
 
-       tfd = mmap_fdt(params, tmpfile, &ptr, &sbuf);
+       tfd = mmap_fdt(params->cmdname, tmpfile, &ptr, &sbuf, 1);
        if (tfd < 0)
                goto err_mmap;
 
diff --git a/tools/fit_info.c b/tools/fit_info.c
new file mode 100644 (file)
index 0000000..50f3c8e
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * (C) Copyright 2014
+ * DENX Software Engineering
+ * Heiko Schocher <hs@denx.de>
+ *
+ * fit_info: print the offset and the len of a property from
+ *          node in a fit file.
+ *
+ * Based on:
+ * (C) Copyright 2008 Semihalf
+ *
+ * (C) Copyright 2000-2004
+ * DENX Software Engineering
+ * Wolfgang Denk, wd@denx.de
+ *
+ * Updated-by: Prafulla Wadaskar <prafulla@marvell.com>
+ *             FIT image specific code abstracted from mkimage.c
+ *             some functions added to address abstraction
+ *
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "mkimage.h"
+#include "fit_common.h"
+#include <image.h>
+#include <u-boot/crc.h>
+
+void usage(char *cmdname)
+{
+       fprintf(stderr, "Usage: %s -f fit file -n node -p property\n"
+                        "          -f ==> set fit file which is used'\n"
+                        "          -n ==> set node name'\n"
+                        "          -p ==> set property name'\n",
+               cmdname);
+       exit(EXIT_FAILURE);
+}
+
+int main(int argc, char **argv)
+{
+       int ffd = -1;
+       struct stat fsbuf;
+       void *fit_blob;
+       int len;
+       int  nodeoffset;        /* node offset from libfdt */
+       const void *nodep;      /* property node pointer */
+       char *fdtfile = NULL;
+       char *nodename = NULL;
+       char *propertyname = NULL;
+       char cmdname[50];
+       int c;
+
+       strcpy(cmdname, *argv);
+       while ((c = getopt(argc, argv, "f:n:p:")) != -1)
+               switch (c) {
+               case 'f':
+                       fdtfile = optarg;
+                       break;
+               case 'n':
+                       nodename = optarg;
+                       break;
+               case 'p':
+                       propertyname = optarg;
+                       break;
+               default:
+                       usage(cmdname);
+                       break;
+               }
+
+       ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, 0);
+
+       if (ffd < 0) {
+               printf("Could not open %s\n", fdtfile);
+               exit(EXIT_FAILURE);
+       }
+
+       nodeoffset = fdt_path_offset(fit_blob, nodename);
+       if (nodeoffset < 0) {
+               printf("%s not found.", nodename);
+               exit(EXIT_FAILURE);
+       }
+       nodep = fdt_getprop(fit_blob, nodeoffset, propertyname, &len);
+       if (len == 0) {
+               printf("len == 0 %s\n", propertyname);
+               exit(EXIT_FAILURE);
+       }
+
+       printf("NAME: %s\n", fit_get_name(fit_blob, nodeoffset, NULL));
+       printf("LEN: %d\n", len);
+       printf("OFF: %d\n", (int)(nodep - fit_blob));
+       (void) munmap((void *)fit_blob, fsbuf.st_size);
+
+       close(ffd);
+       exit(EXIT_SUCCESS);
+}
index 0d5c88ca73c6894fded23b5c4e0359c5cb63acdf..651f1c2f8b46727eb6aa9dffc470452b3e641026 100644 (file)
@@ -403,7 +403,7 @@ static int fit_config_get_hash_list(void *fit, int conf_noffset,
                goto err_mem;
 
        /* Get a list of images that we intend to sign */
-       prop = fit_config_get_image_list(fit, conf_noffset, &len,
+       prop = fit_config_get_image_list(fit, sig_offset, &len,
                                        &allow_missing);
        if (!prop)
                return 0;
@@ -695,3 +695,18 @@ int fit_add_verification_data(const char *keydir, void *keydest, void *fit,
 
        return 0;
 }
+
+#ifdef CONFIG_FIT_SIGNATURE
+int fit_check_sign(const void *working_fdt, const void *key)
+{
+       int cfg_noffset;
+       int ret;
+
+       cfg_noffset = fit_conf_get_node(working_fdt, NULL);
+       if (!cfg_noffset)
+               return -1;
+
+       ret = fit_config_verify(working_fdt, cfg_noffset);
+       return ret;
+}
+#endif
diff --git a/tools/rsa-checksum.c b/tools/rsa-checksum.c
new file mode 100644 (file)
index 0000000..09033e6
--- /dev/null
@@ -0,0 +1 @@
+#include "../lib/rsa/rsa-checksum.c"
diff --git a/tools/rsa-verify.c b/tools/rsa-verify.c
new file mode 100644 (file)
index 0000000..bb662a1
--- /dev/null
@@ -0,0 +1 @@
+#include "../lib/rsa/rsa-verify.c"
diff --git a/tools/sha256.c b/tools/sha256.c
new file mode 100644 (file)
index 0000000..8ca931f
--- /dev/null
@@ -0,0 +1 @@
+#include "../lib/sha256.c"