]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'u-boot-atmel/master' into 'u-boot-arm/master'
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>
Wed, 4 Sep 2013 09:50:25 +0000 (11:50 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Wed, 4 Sep 2013 09:50:25 +0000 (11:50 +0200)
542 files changed:
.gitignore
Licenses/README
Licenses/bsd-2-clause.txt [new file with mode: 0644]
Licenses/bsd-3-clause.txt [new file with mode: 0644]
Licenses/ibm-pibs.txt [new file with mode: 0644]
MAINTAINERS
Makefile
README
arch/arm/cpu/armv7/mx5/clock.c
arch/arm/cpu/armv7/tegra114/config.mk [deleted file]
arch/arm/cpu/armv7/tegra20/config.mk [deleted file]
arch/arm/cpu/armv7/tegra30/config.mk [deleted file]
arch/arm/cpu/armv7/zynq/Makefile
arch/arm/cpu/armv7/zynq/ddrc.c [new file with mode: 0644]
arch/arm/cpu/armv7/zynq/slcr.c
arch/arm/include/asm/arch-am33xx/hardware.h
arch/arm/include/asm/arch-exynos/mipi_dsim.h
arch/arm/include/asm/arch-mx5/clock.h
arch/arm/include/asm/arch-omap3/gpio.h
arch/arm/include/asm/arch-omap4/gpio.h
arch/arm/include/asm/arch-omap5/clock.h
arch/arm/include/asm/arch-omap5/ehci.h [new file with mode: 0644]
arch/arm/include/asm/arch-omap5/gpio.h
arch/arm/include/asm/arch-zynq/hardware.h
arch/arm/include/asm/arch-zynq/sys_proto.h
arch/arm/include/asm/ehci-omap.h
arch/arm/include/asm/imx-common/dma.h
arch/arm/include/asm/omap_gpio.h
arch/blackfin/cpu/gpio.c
arch/blackfin/lib/board.c
arch/microblaze/config.mk
arch/microblaze/lib/board.c
arch/mips/include/asm/config.h
arch/mips/lib/Makefile
arch/mips/lib/bootm.c
arch/mips/lib/bootm_qemu_mips.c [deleted file]
arch/nds32/include/asm/dma-mapping.h [new file with mode: 0644]
arch/powerpc/cpu/mpc824x/cpu.c
arch/powerpc/cpu/mpc83xx/pcie.c
arch/powerpc/cpu/mpc85xx/Makefile
arch/powerpc/cpu/mpc85xx/b4860_ids.c
arch/powerpc/cpu/mpc85xx/c29x_serdes.c [new file with mode: 0644]
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/cpu/mpc85xx/cpu.c
arch/powerpc/cpu/mpc85xx/cpu_init.c
arch/powerpc/cpu/mpc85xx/ddr-gen1.c
arch/powerpc/cpu/mpc85xx/ddr-gen2.c
arch/powerpc/cpu/mpc85xx/ddr-gen3.c
arch/powerpc/cpu/mpc85xx/fdt.c
arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.h
arch/powerpc/cpu/mpc85xx/release.S
arch/powerpc/cpu/mpc85xx/speed.c
arch/powerpc/cpu/mpc85xx/start.S
arch/powerpc/cpu/mpc85xx/t4240_ids.c
arch/powerpc/cpu/mpc85xx/t4240_serdes.c
arch/powerpc/cpu/mpc85xx/tlb.c
arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
arch/powerpc/cpu/mpc86xx/cpu.c
arch/powerpc/cpu/mpc86xx/ddr-8641.c
arch/powerpc/cpu/mpc86xx/speed.c
arch/powerpc/cpu/mpc8xx/cpu.c
arch/powerpc/cpu/mpc8xx/video.c
arch/powerpc/cpu/mpc8xxx/cpu.c
arch/powerpc/cpu/mpc8xxx/ddr/ctrl_regs.c
arch/powerpc/cpu/mpc8xxx/ddr/ddr.h
arch/powerpc/cpu/mpc8xxx/ddr/ddr3_dimm_params.c
arch/powerpc/cpu/mpc8xxx/ddr/interactive.c
arch/powerpc/cpu/mpc8xxx/ddr/lc_common_dimm_params.c
arch/powerpc/cpu/mpc8xxx/ddr/main.c
arch/powerpc/cpu/mpc8xxx/ddr/options.c
arch/powerpc/cpu/mpc8xxx/fdt.c
arch/powerpc/cpu/mpc8xxx/law.c
arch/powerpc/cpu/ppc4xx/4xx_pci.c
arch/powerpc/cpu/ppc4xx/4xx_uart.c
arch/powerpc/cpu/ppc4xx/cpu.c
arch/powerpc/cpu/ppc4xx/cpu_init.c
arch/powerpc/cpu/ppc4xx/miiphy.c
arch/powerpc/cpu/ppc4xx/speed.c
arch/powerpc/cpu/ppc4xx/start.S
arch/powerpc/include/asm/config_mpc85xx.h
arch/powerpc/include/asm/fsl_ddr_dimm_params.h
arch/powerpc/include/asm/fsl_ddr_sdram.h
arch/powerpc/include/asm/fsl_i2c.h
arch/powerpc/include/asm/fsl_law.h
arch/powerpc/include/asm/fsl_liodn.h
arch/powerpc/include/asm/fsl_pci.h
arch/powerpc/include/asm/fsl_serdes.h
arch/powerpc/include/asm/immap_85xx.h
arch/powerpc/include/asm/ppc405.h
arch/powerpc/include/asm/ppc405cr.h [deleted file]
arch/powerpc/include/asm/ppc440.h
arch/powerpc/include/asm/ppc4xx-ebc.h
arch/powerpc/include/asm/ppc4xx-emac.h
arch/powerpc/include/asm/ppc4xx-mal.h
arch/powerpc/include/asm/ppc4xx.h
arch/powerpc/include/asm/processor.h
arch/powerpc/include/asm/u-boot.h
arch/x86/cpu/coreboot/config.mk [deleted file]
arch/x86/cpu/coreboot/tables.c
arch/x86/include/asm/arch-coreboot/sysinfo.h
arch/x86/include/asm/arch-coreboot/tables.h
board/AndesTech/adp-ag102/Makefile
board/a3m071/README
board/chromebook-x86/coreboot/config.mk
board/chromebook-x86/dts/link.dts
board/cray/L1/init.S
board/csb272/init.S
board/csb472/init.S
board/davinci/ea20/ea20.c
board/esd/canbt/canbt.c [deleted file]
board/esd/canbt/canbt.h [deleted file]
board/esd/canbt/flash.c [deleted file]
board/esd/canbt/fpgadata.c [deleted file]
board/esd/cpci750/mv_eth.c
board/esd/pci405/writeibm.S
board/freescale/b4860qds/b4860qds.c
board/freescale/b4860qds/b4860qds_crossbar_con.h
board/freescale/b4860qds/eth_b4860qds.c
board/freescale/bsc9131rdb/ddr.c
board/freescale/bsc9132qds/bsc9132qds.c
board/freescale/bsc9132qds/ddr.c
board/freescale/bsc9132qds/law.c
board/freescale/bsc9132qds/tlb.c
board/freescale/c29xpcie/Makefile [moved from board/esd/canbt/Makefile with 57% similarity]
board/freescale/c29xpcie/README [new file with mode: 0644]
board/freescale/c29xpcie/c29xpcie.c [new file with mode: 0644]
board/freescale/c29xpcie/cpld.c [new file with mode: 0644]
board/freescale/c29xpcie/cpld.h [new file with mode: 0644]
board/freescale/c29xpcie/ddr.c [new file with mode: 0644]
board/freescale/c29xpcie/law.c [new file with mode: 0644]
board/freescale/c29xpcie/tlb.c [new file with mode: 0644]
board/freescale/common/Makefile
board/freescale/common/idt8t49n222a_serdes_clk.c [new file with mode: 0644]
board/freescale/common/idt8t49n222a_serdes_clk.h [new file with mode: 0644]
board/freescale/common/qixis.c
board/freescale/common/vsc3316_3308.c
board/freescale/common/vsc3316_3308.h
board/freescale/corenet_ds/corenet_ds.c
board/freescale/corenet_ds/ddr.c
board/freescale/mpc8540ads/mpc8540ads.c
board/freescale/mpc8541cds/mpc8541cds.c
board/freescale/mpc8555cds/mpc8555cds.c
board/freescale/mpc8560ads/mpc8560ads.c
board/freescale/p1010rdb/ddr.c
board/freescale/p1010rdb/spl_minimal.c
board/freescale/p1022ds/Makefile
board/freescale/p1022ds/spl.c [new file with mode: 0644]
board/freescale/p1022ds/spl_minimal.c
board/freescale/p1022ds/tlb.c
board/freescale/p1_p2_rdb/ddr.c
board/freescale/p1_p2_rdb_pc/README
board/freescale/p1_p2_rdb_pc/ddr.c
board/freescale/p1_p2_rdb_pc/tlb.c
board/freescale/p1_twr/Makefile [new file with mode: 0644]
board/freescale/p1_twr/ddr.c [new file with mode: 0644]
board/freescale/p1_twr/law.c [new file with mode: 0644]
board/freescale/p1_twr/p1_twr.c [new file with mode: 0644]
board/freescale/p1_twr/tlb.c [new file with mode: 0644]
board/freescale/p2041rdb/p2041rdb.c
board/freescale/t4qds/Makefile
board/freescale/t4qds/ddr.c
board/freescale/t4qds/ddr.h [new file with mode: 0644]
board/freescale/t4qds/eth.c
board/freescale/t4qds/law.c
board/freescale/t4qds/t4240emu.c [new file with mode: 0644]
board/freescale/t4qds/t4240qds.c [moved from board/freescale/t4qds/t4qds.c with 88% similarity]
board/freescale/t4qds/tlb.c
board/gdsys/405ep/405ep.c
board/gdsys/405ep/dlvision-10g.c
board/gdsys/405ep/io.c
board/gdsys/405ep/iocon.c
board/gdsys/405ep/neo.c
board/gdsys/405ex/405ex.c
board/gdsys/405ex/io64.c
board/gdsys/common/Makefile
board/gdsys/common/dp501.c
board/gdsys/common/fpga.c [new file with mode: 0644]
board/gdsys/common/mclink.c [new file with mode: 0644]
board/gdsys/common/mclink.h [new file with mode: 0644]
board/gdsys/common/osd.c
board/jse/init.S
board/mpl/common/pci.c
board/mpl/mip405/init.S
board/mpl/pip405/init.S
board/samsung/common/multi_i2c.c
board/samsung/dts/exynos5250-smdk5250.dts
board/samsung/dts/exynos5250-snow.dts
board/samsung/goni/goni.c
board/samsung/trats/trats.c
board/samsung/universal_c210/universal.c
board/sbc8548/sbc8548.c
board/sc3/init.S
board/scb9328/intel.h
board/socrates/socrates.c
board/ti/omap5_uevm/evm.c
board/ti/omap5_uevm/mux_data.h
board/w7o/init.S
board/xes/xpedite537x/ddr.c
board/xilinx/dts/microblaze-generic.dts [moved from board/xilinx/microblaze-generic/dts/microblaze.dts with 100% similarity]
board/xilinx/dts/microblaze.dts [deleted file]
board/xilinx/zynq/board.c
boards.cfg
common/Makefile
common/cmd_bdinfo.c
common/cmd_bootm.c
common/cmd_dfu.c
common/cmd_fpgad.c [new file with mode: 0644]
common/cmd_i2c.c
common/cmd_ini.c
common/cmd_load.c
common/cmd_nand.c
common/cmd_sf.c
common/env_common.c
common/env_nand.c
common/env_sf.c
common/image-fit.c
common/lcd.c
common/spl/spl.c
common/stdio.c
common/usb.c
common/usb_hub.c
common/usb_kbd.c
config.mk
doc/README.TPL [new file with mode: 0644]
doc/README.fdt-control
doc/README.mpc85xx-sd-spi-boot [new file with mode: 0644]
doc/README.scrapyard
drivers/dfu/dfu.c
drivers/dfu/dfu_nand.c
drivers/dma/apbh_dma.c
drivers/fpga/zynqpl.c
drivers/gpio/adi_gpio2.c
drivers/gpio/omap_gpio.c
drivers/gpio/pca953x.c
drivers/i2c/fsl_i2c.c
drivers/i2c/soft_i2c.c
drivers/i2c/tegra_i2c.c
drivers/mmc/Makefile
drivers/mmc/fsl_esdhc_spl.c [new file with mode: 0644]
drivers/mmc/mmc.c
drivers/mtd/cfi_flash.c
drivers/mtd/nand/Makefile
drivers/mtd/nand/fsl_elbc_spl.c
drivers/mtd/nand/nand_util.c
drivers/mtd/spi/Makefile
drivers/mtd/spi/atmel.c
drivers/mtd/spi/eon.c
drivers/mtd/spi/fsl_espi_spl.c [new file with mode: 0644]
drivers/mtd/spi/gigadevice.c
drivers/mtd/spi/ramtron.c
drivers/mtd/spi/spansion.c
drivers/mtd/spi/spi_flash.c
drivers/mtd/spi/spi_spl_load.c
drivers/mtd/spi/sst.c
drivers/mtd/spi/stmicro.c
drivers/mtd/spi/winbond.c
drivers/net/4xx_enet.c
drivers/net/ax88180.c
drivers/net/fm/eth.c
drivers/net/fm/fm.c
drivers/net/fm/memac.c
drivers/net/fm/t4240.c
drivers/net/fsl_mcdmafec.c
drivers/net/ftmac110.c
drivers/net/ftmac110.h
drivers/net/lan91c96.c
drivers/net/mcffec.c
drivers/net/mcfmii.c
drivers/net/ne2000.c
drivers/net/npe/IxEthAcc.c
drivers/net/npe/IxEthAccCommon.c
drivers/net/npe/IxEthAccControlInterface.c
drivers/net/npe/IxEthAccDataPlane.c
drivers/net/npe/IxEthAccMac.c
drivers/net/npe/IxEthAccMii.c
drivers/net/npe/IxEthDBAPI.c
drivers/net/npe/IxEthDBAPISupport.c
drivers/net/npe/IxEthDBCore.c
drivers/net/npe/IxEthDBEvents.c
drivers/net/npe/IxEthDBFeatures.c
drivers/net/npe/IxEthDBFirewall.c
drivers/net/npe/IxEthDBHashtable.c
drivers/net/npe/IxEthDBLearning.c
drivers/net/npe/IxEthDBMem.c
drivers/net/npe/IxEthDBNPEAdaptor.c
drivers/net/npe/IxEthDBPortUpdate.c
drivers/net/npe/IxEthDBReports.c
drivers/net/npe/IxEthDBSearch.c
drivers/net/npe/IxEthDBSpanningTree.c
drivers/net/npe/IxEthDBUtil.c
drivers/net/npe/IxEthDBVlan.c
drivers/net/npe/IxEthDBWiFi.c
drivers/net/npe/IxEthMii.c
drivers/net/npe/IxFeatureCtrl.c
drivers/net/npe/IxNpeDl.c
drivers/net/npe/IxNpeDlImageMgr.c
drivers/net/npe/IxNpeDlNpeMgr.c
drivers/net/npe/IxNpeDlNpeMgrUtils.c
drivers/net/npe/IxNpeMh.c
drivers/net/npe/IxNpeMhConfig.c
drivers/net/npe/IxNpeMhReceive.c
drivers/net/npe/IxNpeMhSend.c
drivers/net/npe/IxNpeMhSolicitedCbMgr.c
drivers/net/npe/IxNpeMhUnsolicitedCbMgr.c
drivers/net/npe/IxOsalBufferMgt.c
drivers/net/npe/IxOsalIoMem.c
drivers/net/npe/IxOsalOsCacheMMU.c
drivers/net/npe/IxOsalOsMsgQ.c
drivers/net/npe/IxOsalOsSemaphore.c
drivers/net/npe/IxOsalOsServices.c
drivers/net/npe/IxOsalOsThread.c
drivers/net/npe/IxQMgrAqmIf.c
drivers/net/npe/IxQMgrDispatcher.c
drivers/net/npe/IxQMgrInit.c
drivers/net/npe/IxQMgrQAccess.c
drivers/net/npe/IxQMgrQCfg.c
drivers/net/npe/include/IxAssert.h
drivers/net/npe/include/IxAtmSch.h
drivers/net/npe/include/IxAtmTypes.h
drivers/net/npe/include/IxAtmdAcc.h
drivers/net/npe/include/IxAtmdAccCtrl.h
drivers/net/npe/include/IxAtmm.h
drivers/net/npe/include/IxDmaAcc.h
drivers/net/npe/include/IxEthAcc.h
drivers/net/npe/include/IxEthAccDataPlane_p.h
drivers/net/npe/include/IxEthAccMac_p.h
drivers/net/npe/include/IxEthAccMii_p.h
drivers/net/npe/include/IxEthAccQueueAssign_p.h
drivers/net/npe/include/IxEthAcc_p.h
drivers/net/npe/include/IxEthDB.h
drivers/net/npe/include/IxEthDBLocks_p.h
drivers/net/npe/include/IxEthDBLog_p.h
drivers/net/npe/include/IxEthDBMessages_p.h
drivers/net/npe/include/IxEthDBPortDefs.h
drivers/net/npe/include/IxEthDBQoS.h
drivers/net/npe/include/IxEthDB_p.h
drivers/net/npe/include/IxEthMii.h
drivers/net/npe/include/IxEthMii_p.h
drivers/net/npe/include/IxEthNpe.h
drivers/net/npe/include/IxFeatureCtrl.h
drivers/net/npe/include/IxHssAcc.h
drivers/net/npe/include/IxI2cDrv.h
drivers/net/npe/include/IxNpeA.h
drivers/net/npe/include/IxNpeDl.h
drivers/net/npe/include/IxNpeDlImageMgr_p.h
drivers/net/npe/include/IxNpeDlMacros_p.h
drivers/net/npe/include/IxNpeDlNpeMgrEcRegisters_p.h
drivers/net/npe/include/IxNpeDlNpeMgrUtils_p.h
drivers/net/npe/include/IxNpeDlNpeMgr_p.h
drivers/net/npe/include/IxNpeMh.h
drivers/net/npe/include/IxNpeMhConfig_p.h
drivers/net/npe/include/IxNpeMhMacros_p.h
drivers/net/npe/include/IxNpeMhReceive_p.h
drivers/net/npe/include/IxNpeMhSend_p.h
drivers/net/npe/include/IxNpeMhSolicitedCbMgr_p.h
drivers/net/npe/include/IxNpeMhUnsolicitedCbMgr_p.h
drivers/net/npe/include/IxNpeMicrocode.h
drivers/net/npe/include/IxOsBufLib.h
drivers/net/npe/include/IxOsBuffMgt.h
drivers/net/npe/include/IxOsBuffPoolMgt.h
drivers/net/npe/include/IxOsCacheMMU.h
drivers/net/npe/include/IxOsPrintf.h
drivers/net/npe/include/IxOsServices.h
drivers/net/npe/include/IxOsServicesComponents.h
drivers/net/npe/include/IxOsServicesEndianess.h
drivers/net/npe/include/IxOsServicesMemAccess.h
drivers/net/npe/include/IxOsServicesMemMap.h
drivers/net/npe/include/IxOsal.h
drivers/net/npe/include/IxOsalAssert.h
drivers/net/npe/include/IxOsalBackward.h
drivers/net/npe/include/IxOsalBackwardAssert.h
drivers/net/npe/include/IxOsalBackwardBufferMgt.h
drivers/net/npe/include/IxOsalBackwardCacheMMU.h
drivers/net/npe/include/IxOsalBackwardMemMap.h
drivers/net/npe/include/IxOsalBackwardOsServices.h
drivers/net/npe/include/IxOsalBackwardOssl.h
drivers/net/npe/include/IxOsalBufferMgt.h
drivers/net/npe/include/IxOsalBufferMgtDefault.h
drivers/net/npe/include/IxOsalConfig.h
drivers/net/npe/include/IxOsalEndianess.h
drivers/net/npe/include/IxOsalIoMem.h
drivers/net/npe/include/IxOsalMemAccess.h
drivers/net/npe/include/IxOsalOem.h
drivers/net/npe/include/IxOsalOsBufferMgt.h
drivers/net/npe/include/IxOsalOsIxp400.h
drivers/net/npe/include/IxOsalOsIxp400CustomizedMapping.h
drivers/net/npe/include/IxOsalTypes.h
drivers/net/npe/include/IxOsalUtilitySymbols.h
drivers/net/npe/include/IxParityENAcc.h
drivers/net/npe/include/IxPerfProfAcc.h
drivers/net/npe/include/IxQMgr.h
drivers/net/npe/include/IxQMgrAqmIf_p.h
drivers/net/npe/include/IxQMgrDefines_p.h
drivers/net/npe/include/IxQMgrDispatcher_p.h
drivers/net/npe/include/IxQMgrLog_p.h
drivers/net/npe/include/IxQMgrQAccess_p.h
drivers/net/npe/include/IxQMgrQCfg_p.h
drivers/net/npe/include/IxQueueAssignments.h
drivers/net/npe/include/IxSspAcc.h
drivers/net/npe/include/IxTimeSyncAcc.h
drivers/net/npe/include/IxTimerCtrl.h
drivers/net/npe/include/IxTypes.h
drivers/net/npe/include/IxUART.h
drivers/net/npe/include/IxVersionId.h
drivers/net/npe/include/ix_error.h
drivers/net/npe/include/ix_macros.h
drivers/net/npe/include/ix_os_type.h
drivers/net/npe/include/ix_ossl.h
drivers/net/npe/include/ix_symbols.h
drivers/net/npe/include/ix_types.h
drivers/net/npe/include/os_datatypes.h
drivers/net/npe/miiphy.c
drivers/net/phy/realtek.c
drivers/net/phy/smsc.c
drivers/pci/fsl_pci_init.c
drivers/power/power_i2c.c
drivers/serial/arm_dcc.c
drivers/serial/serial.c
drivers/serial/usbtty.h
drivers/spi/Makefile
drivers/spi/bfin_spi.c
drivers/spi/fsl_espi.c
drivers/spi/mpc8xxx_spi.c
drivers/spi/zynq_spi.c [new file with mode: 0644]
drivers/usb/eth/smsc95xx.c
drivers/usb/gadget/f_dfu.c
drivers/usb/gadget/f_mass_storage.c
drivers/usb/gadget/g_dnl.c
drivers/usb/gadget/gadget_chips.h
drivers/usb/gadget/mv_udc.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-mx5.c
drivers/usb/host/ehci-omap.c
drivers/usb/host/ehci.h
drivers/video/Makefile
drivers/video/cfb_console.c
drivers/video/da8xx-fb.c
drivers/video/da8xx-fb.h [moved from arch/arm/include/asm/arch-davinci/da8xx-fb.h with 94% similarity]
drivers/video/exynos_mipi_dsi_common.c
drivers/video/exynos_mipi_dsi_common.h
drivers/video/exynos_mipi_dsi_lowlevel.c
drivers/video/exynos_mipi_dsi_lowlevel.h
drivers/video/l5f31188.c [new file with mode: 0644]
drivers/video/mxsfb.c
drivers/video/s6e8ax0.c
drivers/video/sed156x.c
dts/Makefile
fs/yaffs2/yaffs_qsort.c
include/api_public.h
include/asm-generic/u-boot.h
include/configs/B4860QDS.h
include/configs/BSC9132QDS.h
include/configs/C29XPCIE.h [new file with mode: 0644]
include/configs/CANBT.h [deleted file]
include/configs/MPC8313ERDB.h
include/configs/P1022DS.h
include/configs/P2041RDB.h
include/configs/T4240EMU.h [new file with mode: 0644]
include/configs/T4240QDS.h
include/configs/a3m071.h
include/configs/blackstamp.h
include/configs/calimain.h
include/configs/cam_enc_4xx.h
include/configs/corenet_ds.h
include/configs/da830evm.h
include/configs/da850evm.h
include/configs/dalmore.h
include/configs/davinci_dm365evm.h
include/configs/davinci_dm6467evm.h
include/configs/davinci_dvevm.h
include/configs/davinci_schmoogie.h
include/configs/davinci_sffsdr.h
include/configs/davinci_sonata.h
include/configs/dlvision-10g.h
include/configs/dlvision.h
include/configs/ea20.h
include/configs/enbw_cmc.h
include/configs/exynos5250-dt.h
include/configs/galaxy5200.h
include/configs/hawkboard.h
include/configs/igep0033.h
include/configs/io.h
include/configs/io64.h
include/configs/iocon.h
include/configs/linkstation.h
include/configs/mcx.h
include/configs/microblaze-generic.h
include/configs/neo.h
include/configs/omap5_uevm.h
include/configs/p1_p2_rdb_pc.h
include/configs/p1_twr.h [new file with mode: 0644]
include/configs/pcm051.h
include/configs/t4qds.h
include/configs/tam3517-common.h
include/configs/tegra-common.h
include/configs/tegra114-common.h
include/configs/tegra20-common.h
include/configs/tegra30-common.h
include/configs/ti814x_evm.h
include/configs/trats.h
include/configs/zynq.h
include/dfu.h
include/e500.h
include/edid.h
include/elf.h
include/fsl_esdhc.h
include/fsl_usb.h [new file with mode: 0644]
include/gdsys_fpga.h
include/i2c.h
include/miiphy.h
include/mpc86xx.h
include/mtd/cfi_flash.h
include/net.h
include/pci.h
include/serial.h
include/stdio_dev.h
include/usb/mv_udc.h
include/video_font.h
include/video_font_4x6.h [new file with mode: 0644]
include/video_font_data.h
include/zynqpl.h
lib/libfdt/fdt.c
lib/libfdt/fdt_empty_tree.c
lib/libfdt/fdt_ro.c
lib/libfdt/fdt_rw.c
lib/libfdt/fdt_strerror.c
lib/libfdt/fdt_sw.c
lib/libfdt/fdt_wip.c
lib/libfdt/libfdt_internal.h
net/net.c
spl/Makefile
tools/Makefile
tools/aisimage.c
tools/bmp_logo.c
tools/dtc-version.sh [new file with mode: 0755]
tools/imximage.c
tools/kwbimage.c
tools/mkenvimage.c
tools/omapimage.c
tools/pblimage.c
tools/ublimage.c

index d1282e790e43d56bfd9aa444db5d740d7ff133a4..255d89f8933c9a6fd9bf9456d110bb005bede67c 100644 (file)
@@ -16,6 +16,7 @@
 *.patch
 *.bin
 *.cfgtmp
+*.dts.tmp
 
 # Build tree
 /build-*
index b1a59cc22fed296bdc5946468038c3f20f17ab1b..41961256a63665425559ea85abd1f2c8d37dcd6b 100644 (file)
@@ -43,10 +43,14 @@ at [2].
 [1] http://spdx.org/
 [2] http://spdx.org/licenses/
 
-Full name                                      SPDX Identifier OSI Approved    File name       URI
+Full name                                      SPDX Identifier OSI Approved    File name               URI
 =======================================================================================================================================
-GNU General Public License v2.0 only           GPL-2.0         Y               gpl-2.0.txt     http://www.gnu.org/licenses/gpl-2.0.txt
-GNU General Public License v2.0 or later       GPL-2.0+        Y               gpl-2.0.txt     http://www.gnu.org/licenses/gpl-2.0.txt
-GNU Library General Public License v2 or later LGPL-2.0+       Y               lgpl-2.0.txt    http://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt
-GNU Lesser General Public License v2.1 or later        LGPL-2.1+       Y               lgpl-2.1.txt    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
-eCos license version 2.0                       eCos-2.0                        eCos-2.0.txt    http://www.gnu.org/licenses/ecos-license.html
+GNU General Public License v2.0 only           GPL-2.0         Y               gpl-2.0.txt             http://www.gnu.org/licenses/gpl-2.0.txt
+GNU General Public License v2.0 or later       GPL-2.0+        Y               gpl-2.0.txt             http://www.gnu.org/licenses/gpl-2.0.txt
+GNU Library General Public License v2 or later LGPL-2.0+       Y               lgpl-2.0.txt            http://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt
+GNU Lesser General Public License v2.1 or later        LGPL-2.1+       Y               lgpl-2.1.txt            http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
+eCos license version 2.0                       eCos-2.0                        eCos-2.0.txt            http://www.gnu.org/licenses/ecos-license.html
+BSD 2-Clause License                           BSD-2-Clause    Y               bsd-2-clause.txt        http://spdx.org/licenses/BSD-2-Clause
+BSD 3-clause "New" or "Revised" License                BSD-3-Clause    Y               bsd-3-clause.txt        http://spdx.org/licenses/BSD-3-Clause#licenseText
+IBM PIBS (PowerPC Initialization and           ibm-pibs                        ibm-pibs.txt
+       Boot Software) license
diff --git a/Licenses/bsd-2-clause.txt b/Licenses/bsd-2-clause.txt
new file mode 100644 (file)
index 0000000..af69764
--- /dev/null
@@ -0,0 +1,25 @@
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following
+conditions are met:
+
+1. Redistributions of source code must retain the above
+   copyright notice, this list of conditions and the following
+   disclaimer.
+2. Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions and the following
+   disclaimer in the documentation and/or other materials
+   provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Licenses/bsd-3-clause.txt b/Licenses/bsd-3-clause.txt
new file mode 100644 (file)
index 0000000..aac5e2a
--- /dev/null
@@ -0,0 +1,24 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions, and the following disclaimer,
+   without modification.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The names of the above-listed copyright holders may not be used
+   to endorse or promote products derived from this software without
+   specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Licenses/ibm-pibs.txt b/Licenses/ibm-pibs.txt
new file mode 100644 (file)
index 0000000..4cd7523
--- /dev/null
@@ -0,0 +1,17 @@
+This source code has been made available to you by IBM on an AS-IS
+basis.  Anyone receiving this source is licensed under IBM
+copyrights to use it in any way he or she deems fit, including
+copying it, modifying it, compiling it, and redistributing it either
+with or without modifications.  No license under IBM patents or
+patent applications is to be implied by the copyright license.
+
+Any user of this software should understand that IBM cannot provide
+technical support for this software and will not be responsible for
+any consequences resulting from the use of this software.
+
+Any person who transfers this source code or any derivative work
+must include the IBM copyright notice, this paragraph, and the
+preceding two paragraphs in the transferred software.
+
+COPYRIGHT   I B M   CORPORATION 1995
+LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
index 23965a8d3359f7325cc449b23e21f527222f0446..bd0f3a07637a4beed563d2ef5909f0a6e00eff1e 100644 (file)
@@ -184,7 +184,6 @@ Matthias Fuchs <matthias.fuchs@esd-electronics.com>
        APC405          PPC405GP
        AR405           PPC405GP
        ASH405          PPC405EP
-       CANBT           PPC405CR
        CPCI2DP         PPC405GP
        CPCI405         PPC405GP
        CPCI4052        PPC405GP
@@ -473,6 +472,10 @@ Ira W. Snyder <iws@ovro.caltech.edu>
 
        P2020COME       P2020
 
+York Sun <yorksun@freescale.com>
+
+       T4240EMU        T4240
+
 Timur Tabi <timur@freescale.com>
 
        MPC8349E-mITX   MPC8349
@@ -540,6 +543,10 @@ Detlev Zundel <dzu@denx.de>
 
        inka4x0         MPC5200
 
+Po Liu <po.liu@freescale.com>
+
+       C29XPCIE        C29X
+
 -------------------------------------------------------------------------
 
 Unknown / orphaned boards:
@@ -1363,7 +1370,7 @@ Dimitar Penev <dpn@switchfin.org>
 #      Board           CPU                                             #
 #########################################################################
 
-Macpaul Lin <macpaul@andestech.com>
+Andes <uboot@andestech.com>
 
        ADP-AG101       N1213 (AG101 SoC)
        ADP-AG101P      N1213 (AG101P XC5 FPGA)
index 5461a21b5a06528056b1980bc33887248214e9cf..ed48279acd130613dc2a684ece2265a42b999f84 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,9 +6,9 @@
 #
 
 VERSION = 2013
-PATCHLEVEL = 07
+PATCHLEVEL = 10
 SUBLEVEL =
-EXTRAVERSION =
+EXTRAVERSION = -rc2
 ifneq "$(SUBLEVEL)" ""
 U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 else
@@ -102,10 +102,11 @@ endif # ifneq ($(BUILD_DIR),)
 
 OBJTREE                := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
 SPLTREE                := $(OBJTREE)/spl
+TPLTREE                := $(OBJTREE)/tpl
 SRCTREE                := $(CURDIR)
 TOPDIR         := $(SRCTREE)
 LNDIR          := $(OBJTREE)
-export TOPDIR SRCTREE OBJTREE SPLTREE
+export TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE
 
 MKCONFIG       := $(SRCTREE)/mkconfig
 export MKCONFIG
@@ -397,6 +398,7 @@ ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map
 ALL-$(CONFIG_NAND_U_BOOT) += $(obj)u-boot-nand.bin
 ALL-$(CONFIG_ONENAND_U_BOOT) += $(obj)u-boot-onenand.bin
 ALL-$(CONFIG_SPL) += $(obj)spl/u-boot-spl.bin
+ALL-$(CONFIG_TPL) += $(obj)tpl/u-boot-tpl.bin
 ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb $(obj)u-boot-dtb.bin
 ifneq ($(CONFIG_SPL_TARGET),)
 ALL-$(CONFIG_SPL) += $(obj)$(subst ",,$(CONFIG_SPL_TARGET))
@@ -413,7 +415,7 @@ endif
 
 all:           $(ALL-y) $(SUBDIR_EXAMPLES)
 
-$(obj)u-boot.dtb:      $(obj)u-boot
+$(obj)u-boot.dtb:      checkdtc $(obj)u-boot
                $(MAKE) -C dts binary
                mv $(obj)dts/dt.dtb $@
 
@@ -475,13 +477,25 @@ $(obj)u-boot.sha1:        $(obj)u-boot.bin
 $(obj)u-boot.dis:      $(obj)u-boot
                $(OBJDUMP) -d $< > $@
 
+# $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate,
+# $(4) is pad-to
+SPL_PAD_APPEND = \
+               $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \
+               $(1) $(obj)$(3); \
+               cat $(obj)$(3) $(2) > $@; \
+               rm $(obj)$(3)
 
+ifdef CONFIG_TPL
+SPL_PAYLOAD := $(obj)tpl/u-boot-with-tpl.bin
+else
+SPL_PAYLOAD := $(obj)u-boot.bin
+endif
 
-$(obj)u-boot-with-spl.bin: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
-               $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SPL_PAD_TO) \
-                       -I binary -O binary $< $(obj)spl/u-boot-spl-pad.bin
-               cat $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin > $@
-               rm $(obj)spl/u-boot-spl-pad.bin
+$(obj)u-boot-with-spl.bin: $(obj)spl/u-boot-spl.bin $(SPL_PAYLOAD)
+               $(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO))
+
+$(obj)tpl/u-boot-with-tpl.bin: $(obj)tpl/u-boot-tpl.bin $(obj)u-boot.bin
+               $(call SPL_PAD_APPEND,$<,$(obj)u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO))
 
 $(obj)u-boot-with-spl.imx: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
                $(MAKE) -C $(SRCTREE)/arch/arm/imx-common \
@@ -607,12 +621,17 @@ $(obj)u-boot-nand.bin:    nand_spl $(obj)u-boot.bin
 $(obj)spl/u-boot-spl.bin:      $(SUBDIR_TOOLS) depend
                $(MAKE) -C spl all
 
+$(obj)tpl/u-boot-tpl.bin:      $(SUBDIR_TOOLS) depend
+               $(MAKE) -C spl all CONFIG_TPL_BUILD=y
+
 updater:
                $(MAKE) -C tools/updater all
 
 # Explicitly make _depend in subdirs containing multiple targets to prevent
 # parallel sub-makes creating .depend files simultaneously.
 depend dep:    $(TIMESTAMP_FILE) $(VERSION_FILE) \
+               $(obj)include/spl-autoconf.mk \
+               $(obj)include/tpl-autoconf.mk \
                $(obj)include/autoconf.mk \
                $(obj)include/generated/generic-asm-offsets.h \
                $(obj)include/generated/asm-offsets.h
@@ -667,6 +686,12 @@ checkgcc4:
                false; \
        fi
 
+checkdtc:
+       @if test $(call dtc-version) -lt 0104; then \
+               echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
+               false; \
+       fi
+
 #
 # Auto-generate the autoconf.mk file (which is included by all makefiles)
 #
@@ -688,12 +713,34 @@ $(obj)include/autoconf.mk: $(obj)include/config.h
                sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
        mv $@.tmp $@
 
+# Auto-generate the spl-autoconf.mk file (which is included by all makefiles for SPL)
+$(obj)include/tpl-autoconf.mk: $(obj)include/config.h
+       @$(XECHO) Generating $@ ; \
+       set -e ; \
+       : Extract the config macros ; \
+       $(CPP) $(CFLAGS) -DCONFIG_TPL_BUILD  -DCONFIG_SPL_BUILD\
+                       -DDO_DEPS_ONLY -dM include/common.h | \
+       sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
+       mv $@.tmp $@
+
+$(obj)include/spl-autoconf.mk: $(obj)include/config.h
+       @$(XECHO) Generating $@ ; \
+       set -e ; \
+       : Extract the config macros ; \
+       $(CPP) $(CFLAGS) -DCONFIG_SPL_BUILD -DDO_DEPS_ONLY -dM include/common.h | \
+       sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
+       mv $@.tmp $@
+
 $(obj)include/generated/generic-asm-offsets.h: $(obj)include/autoconf.mk.dep \
+       $(obj)include/spl-autoconf.mk \
+       $(obj)include/tpl-autoconf.mk \
        $(obj)lib/asm-offsets.s
        @$(XECHO) Generating $@
        tools/scripts/make-asm-offsets $(obj)lib/asm-offsets.s $@
 
 $(obj)lib/asm-offsets.s:       $(obj)include/autoconf.mk.dep \
+       $(obj)include/spl-autoconf.mk \
+       $(obj)include/tpl-autoconf.mk \
        $(src)lib/asm-offsets.c
        @mkdir -p $(obj)lib
        $(CC) -DDO_DEPS_ONLY \
@@ -701,11 +748,15 @@ $(obj)lib/asm-offsets.s:  $(obj)include/autoconf.mk.dep \
                -o $@ $(src)lib/asm-offsets.c -c -S
 
 $(obj)include/generated/asm-offsets.h: $(obj)include/autoconf.mk.dep \
+       $(obj)include/spl-autoconf.mk \
+       $(obj)include/tpl-autoconf.mk \
        $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
        @$(XECHO) Generating $@
        tools/scripts/make-asm-offsets $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s $@
 
-$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s:  $(obj)include/autoconf.mk.dep
+$(obj)$(CPUDIR)/$(SOC)/asm-offsets.s:  $(obj)include/autoconf.mk.dep \
+       $(obj)include/spl-autoconf.mk \
+       $(obj)include/tpl-autoconf.mk
        @mkdir -p $(obj)$(CPUDIR)/$(SOC)
        if [ -f $(src)$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
                $(CC) -DDO_DEPS_ONLY \
@@ -777,7 +828,9 @@ include/license.h: tools/bin2header COPYING
 unconfig:
        @rm -f $(obj)include/config.h $(obj)include/config.mk \
                $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
-               $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
+               $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep \
+               $(obj)include/spl-autoconf.mk \
+               $(obj)include/tpl-autoconf.mk
 
 %_config::     unconfig
        @$(MKCONFIG) -A $(@:_config=)
@@ -863,6 +916,8 @@ clobber:    tidy
        @rm -f $(obj)nand_spl/{u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map}
        @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.map}
        @rm -f $(obj)spl/u-boot-spl.lds
+       @rm -f $(obj)tpl/{u-boot-tpl,u-boot-tpl.bin,u-boot-tpl.map}
+       @rm -f $(obj)tpl/u-boot-spl.lds
        @rm -f $(obj)MLO MLO.byteswap
        @rm -f $(obj)SPL
        @rm -f $(obj)tools/xway-swap-bytes
diff --git a/README b/README
index 78aa5a518031e47c917b85ca3ebb65cc9325d823..677c3dc252174f62dacc13bb93ab4aad702e63a6 100644 (file)
--- a/README
+++ b/README
@@ -406,13 +406,25 @@ The following options need to be configured:
                This is the value to write into CCSR offset 0x18600
                according to the A004510 workaround.
 
+               CONFIG_SYS_FSL_DSP_DDR_ADDR
+               This value denotes start offset of DDR memory which is
+               connected exclusively to the DSP cores.
+
                CONFIG_SYS_FSL_DSP_M2_RAM_ADDR
                This value denotes start offset of M2 memory
                which is directly connected to the DSP core.
 
+               CONFIG_SYS_FSL_DSP_M3_RAM_ADDR
+               This value denotes start offset of M3 memory which is directly
+               connected to the DSP core.
+
                CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT
                This value denotes start offset of DSP CCSR space.
 
+               CONFIG_SYS_FSL_DDR_EMU
+               Specify emulator support for DDR. Some DDR features such as
+               deskew training are not available.
+
 - Generic CPU options:
                CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
 
@@ -3078,6 +3090,14 @@ FIT uImage format:
                Support for NAND boot using simple NAND drivers that
                expose the cmd_ctrl() interface.
 
+               CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+               Set for the SPL on PPC mpc8xxx targets, support for
+               arch/powerpc/cpu/mpc8xxx/ddr/libddr.o in SPL binary.
+
+               CONFIG_SPL_COMMON_INIT_DDR
+               Set for common ddr init with serial presence detect in
+               SPL binary.
+
                CONFIG_SYS_NAND_5_ADDR_CYCLE, CONFIG_SYS_NAND_PAGE_COUNT,
                CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE,
                CONFIG_SYS_NAND_BLOCK_SIZE, CONFIG_SYS_NAND_BAD_BLOCK_POS,
@@ -3147,6 +3167,17 @@ FIT uImage format:
                option to re-enable it. This will affect the output of the
                bootm command when booting a FIT image.
 
+- TPL framework
+               CONFIG_TPL
+               Enable building of TPL globally.
+
+               CONFIG_TPL_PAD_TO
+               Image offset to which the TPL should be padded before appending
+               the TPL payload. By default, this is defined as
+                CONFIG_SPL_MAX_SIZE, or 0 if CONFIG_SPL_MAX_SIZE is undefined.
+                CONFIG_SPL_PAD_TO must be either 0, meaning to append the SPL
+                payload without any padding, or >= CONFIG_SPL_MAX_SIZE.
+
 Modem Support:
 --------------
 
@@ -4184,6 +4215,11 @@ Low Level (hardware related) configuration options:
                that is executed before the actual U-Boot. E.g. when
                compiling a NAND SPL.
 
+- CONFIG_TPL_BUILD
+               Modifies the behaviour of start.S  when compiling a loader
+               that is executed after the SPL and before the actual U-Boot.
+               It is loaded by the SPL.
+
 - CONFIG_SYS_MPC85XX_NO_RESETVEC
                Only for 85xx systems. If this variable is specified, the section
                .resetvec is not kept and the section .bootpg is placed in the
@@ -4630,6 +4666,12 @@ List of environment variables (most likely not complete):
 
   npe_ucode    - set load address for the NPE microcode
 
+  silent_linux  - If set then linux will be told to boot silently, by
+                 changing the console to be empty. If "yes" it will be
+                 made silent. If "no" it will not be made silent. If
+                 unset, then it will be made silent if the U-Boot console
+                 is silent.
+
   tftpsrcport  - If this is set, the value is used for TFTP's
                  UDP source port.
 
index fbbb365cb600942e9a8d7ff095b135c48dfd7345..6bef2544564a6e2924ee11426432453f623e0baf 100644 (file)
@@ -85,7 +85,7 @@ void set_usboh3_clk(void)
                        MXC_CCM_CSCDR1_USBOH3_CLK_PODF(1));
 }
 
-void enable_usboh3_clk(unsigned char enable)
+void enable_usboh3_clk(bool enable)
 {
        unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
 
@@ -122,7 +122,7 @@ void set_usb_phy_clk(void)
 }
 
 #if defined(CONFIG_MX51)
-void enable_usb_phy1_clk(unsigned char enable)
+void enable_usb_phy1_clk(bool enable)
 {
        unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
 
@@ -131,12 +131,12 @@ void enable_usb_phy1_clk(unsigned char enable)
                        MXC_CCM_CCGR2_USB_PHY(cg));
 }
 
-void enable_usb_phy2_clk(unsigned char enable)
+void enable_usb_phy2_clk(bool enable)
 {
        /* i.MX51 has a single USB PHY clock, so do nothing here. */
 }
 #elif defined(CONFIG_MX53)
-void enable_usb_phy1_clk(unsigned char enable)
+void enable_usb_phy1_clk(bool enable)
 {
        unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
 
@@ -145,7 +145,7 @@ void enable_usb_phy1_clk(unsigned char enable)
                        MXC_CCM_CCGR4_USB_PHY1(cg));
 }
 
-void enable_usb_phy2_clk(unsigned char enable)
+void enable_usb_phy2_clk(bool enable)
 {
        unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
 
diff --git a/arch/arm/cpu/armv7/tegra114/config.mk b/arch/arm/cpu/armv7/tegra114/config.mk
deleted file mode 100644 (file)
index cb1a19d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2010-2013, NVIDIA CORPORATION.  All rights reserved.
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
-#
-# This program is distributed in the hope it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-CONFIG_ARCH_DEVICE_TREE := tegra114
diff --git a/arch/arm/cpu/armv7/tegra20/config.mk b/arch/arm/cpu/armv7/tegra20/config.mk
deleted file mode 100644 (file)
index 3cac79b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2010,2011
-# NVIDIA Corporation <www.nvidia.com>
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-CONFIG_ARCH_DEVICE_TREE := tegra20
diff --git a/arch/arm/cpu/armv7/tegra30/config.mk b/arch/arm/cpu/armv7/tegra30/config.mk
deleted file mode 100644 (file)
index 719ca81..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2010-2012, NVIDIA CORPORATION.  All rights reserved.
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
-#
-# This program is distributed in the hope it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-CONFIG_ARCH_DEVICE_TREE := tegra30
index e5494f748989fcf4a1820c210267ff448cab8bcd..de6b08157e9e1afe35411728d109b1840de1056c 100644 (file)
@@ -14,6 +14,7 @@ LIB   = $(obj)lib$(SOC).o
 
 COBJS-y        := timer.o
 COBJS-y        += cpu.o
+COBJS-y        += ddrc.o
 COBJS-y        += slcr.o
 
 COBJS  := $(COBJS-y)
diff --git a/arch/arm/cpu/armv7/zynq/ddrc.c b/arch/arm/cpu/armv7/zynq/ddrc.c
new file mode 100644 (file)
index 0000000..ba6a6ae
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 - 2013 Michal Simek <monstr@monstr.eu>
+ * Copyright (C) 2012 - 2013 Xilinx, Inc. All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/hardware.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Control regsiter bitfield definitions */
+#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_MASK                0xC
+#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_SHIFT       2
+#define ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT       1
+
+/* ECC scrub regsiter definitions */
+#define ZYNQ_DDRC_ECC_SCRUBREG_ECC_MODE_MASK   0x7
+#define ZYNQ_DDRC_ECC_SCRUBREG_ECCMODE_SECDED  0x4
+
+void zynq_ddrc_init(void)
+{
+       u32 width, ecctype;
+
+       width = readl(&ddrc_base->ddrc_ctrl);
+       width = (width & ZYNQ_DDRC_CTRLREG_BUSWIDTH_MASK) >>
+                                       ZYNQ_DDRC_CTRLREG_BUSWIDTH_SHIFT;
+       ecctype = (readl(&ddrc_base->ecc_scrub) &
+               ZYNQ_DDRC_ECC_SCRUBREG_ECC_MODE_MASK);
+
+       /* ECC is enabled when memory is in 16bit mode and it is enabled */
+       if ((ecctype == ZYNQ_DDRC_ECC_SCRUBREG_ECCMODE_SECDED) &&
+           (width == ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT)) {
+               puts("Memory: ECC enabled\n");
+               /*
+                * Clear the first 1MB because it is not initialized from
+                * first stage bootloader. To get ECC to work all memory has
+                * been initialized by writing any value.
+                */
+               memset(0, 0, 1 * 1024 * 1024);
+       } else {
+               puts("Memory: ECC disabled\n");
+       }
+
+       if (width == ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT)
+               gd->ram_size /= 2;
+}
index e5fe9929827cd6117ec683d1986a804f998c9f29..717ec65aeee0132a6a07f49c774192ec18f4e4f4 100644 (file)
@@ -70,7 +70,7 @@ void zynq_slcr_gem_clk_setup(u32 gem_id, u32 rclk, u32 clk)
                /* Configure GEM_RCLK_CTRL */
                writel(rclk, &slcr_base->gem0_rclk_ctrl);
        }
-
+       udelay(100000);
 out:
        zynq_slcr_lock();
 }
index 2055b254948995da637dfe779d1ae39b50921237..ee5fce0da1caef5677d66d565c66d0b956beb61e 100644 (file)
@@ -68,4 +68,5 @@
 /* CPSW Config space */
 #define CPSW_BASE                      0x4A100000
 
+int clk_get(int clk);
 #endif /* __AM33XX_HARDWARE_H */
index 8916d9d16bc005e590eca90a62f9074030f062a7..498a9ffc049aaa2b04c71c5243bff82e21b32664 100644 (file)
@@ -291,7 +291,7 @@ struct exynos_platform_mipi_dsim {
  */
 struct mipi_dsim_master_ops {
        int (*cmd_write)(struct mipi_dsim_device *dsim, unsigned int data_id,
-               unsigned int data0, unsigned int data1);
+               const unsigned char *data0, unsigned int data1);
        int (*cmd_read)(struct mipi_dsim_device *dsim, unsigned int data_id,
                unsigned int data0, unsigned int data1);
        int (*get_dsim_frame_done)(struct mipi_dsim_device *dsim);
index 406d150ae2ce7eebe8249d9f51ad9dab2adc057f..9ee79aede38a13c112f3af639a541806d5d123d9 100644 (file)
@@ -46,10 +46,10 @@ u32 imx_get_fecclk(void);
 unsigned int mxc_get_clock(enum mxc_clock clk);
 int mxc_set_clock(u32 ref, u32 freq, u32 clk_type);
 void set_usb_phy_clk(void);
-void enable_usb_phy1_clk(unsigned char enable);
-void enable_usb_phy2_clk(unsigned char enable);
+void enable_usb_phy1_clk(bool enable);
+void enable_usb_phy2_clk(bool enable);
 void set_usboh3_clk(void);
-void enable_usboh3_clk(unsigned char enable);
+void enable_usboh3_clk(bool enable);
 void mxc_set_sata_internal_clock(void);
 int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
 void enable_nfc_clk(unsigned char enable);
index d72f5e50ad6b89e6b3ea09ce34573e338c3a1359..f664c119905c59c393b64be03f7146945270762d 100644 (file)
@@ -2,20 +2,7 @@
  * Copyright (c) 2009 Wind River Systems, Inc.
  * Tom Rix <Tom.Rix@windriver.com>
  *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0
  *
  * This work is derived from the linux 2.6.27 kernel source
  * To fetch, use the kernel repository
  *
  * Copyright (C) 2003-2005 Nokia Corporation
  * Written by Juha Yrjölä <juha.yrjola@nokia.com>
- *
- * 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.
  */
 #ifndef _GPIO_OMAP3_H
 #define _GPIO_OMAP3_H
index fdf65edab8a6426b7e9512d44d14df9a1e999ec6..72ba1d71a2f84e7dd305d53f6376901759e9eb7b 100644 (file)
@@ -2,20 +2,7 @@
  * Copyright (c) 2009 Wind River Systems, Inc.
  * Tom Rix <Tom.Rix@windriver.com>
  *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0
  *
  * This work is derived from the linux 2.6.27 kernel source
  * To fetch, use the kernel repository
  *
  * Copyright (C) 2003-2005 Nokia Corporation
  * Written by Juha Yrjölä <juha.yrjola@nokia.com>
- *
- * 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.
  */
 #ifndef _GPIO_OMAP4_H
 #define _GPIO_OMAP4_H
index 3adfc090fe963bef1549fc0f3f54ee5a1b09c187..9a2166ce4a3b40c5cfe1c4bfdb3e6e5df0285038 100644 (file)
 /* CM_L3INIT_USBPHY_CLKCTRL */
 #define USBPHY_CLKCTRL_OPTFCLKEN_PHY_48M_MASK  8
 
+/* CM_L3INIT_USB_HOST_HS_CLKCTRL */
+#define OPTFCLKEN_FUNC48M_CLK                  (1 << 15)
+#define OPTFCLKEN_HSIC480M_P2_CLK              (1 << 14)
+#define OPTFCLKEN_HSIC480M_P1_CLK              (1 << 13)
+#define OPTFCLKEN_HSIC60M_P2_CLK               (1 << 12)
+#define OPTFCLKEN_HSIC60M_P1_CLK               (1 << 11)
+#define OPTFCLKEN_UTMI_P3_CLK                  (1 << 10)
+#define OPTFCLKEN_UTMI_P2_CLK                  (1 << 9)
+#define OPTFCLKEN_UTMI_P1_CLK                  (1 << 8)
+#define OPTFCLKEN_HSIC480M_P3_CLK              (1 << 7)
+#define OPTFCLKEN_HSIC60M_P3_CLK               (1 << 6)
+
+/* CM_L3INIT_USB_TLL_HS_CLKCTRL */
+#define OPTFCLKEN_USB_CH0_CLK_ENABLE   (1 << 8)
+#define OPTFCLKEN_USB_CH1_CLK_ENABLE   (1 << 9)
+#define OPTFCLKEN_USB_CH2_CLK_ENABLE   (1 << 10)
+
 /* CM_MPU_MPU_CLKCTRL */
 #define MPU_CLKCTRL_CLKSEL_EMIF_DIV_MODE_SHIFT 24
 #define MPU_CLKCTRL_CLKSEL_EMIF_DIV_MODE_MASK  (3 << 24)
diff --git a/arch/arm/include/asm/arch-omap5/ehci.h b/arch/arm/include/asm/arch-omap5/ehci.h
new file mode 100644 (file)
index 0000000..3921e4a
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com*
+ * Author: Govindraj R <govindraj.raja@ti.com>
+ *
+ * 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 _EHCI_H
+#define _EHCI_H
+
+#define OMAP_EHCI_BASE                         (OMAP54XX_L4_CORE_BASE + 0x64C00)
+#define OMAP_UHH_BASE                          (OMAP54XX_L4_CORE_BASE + 0x64000)
+#define OMAP_USBTLL_BASE                       (OMAP54XX_L4_CORE_BASE + 0x62000)
+
+/* TLL Register Set */
+#define OMAP_USBTLL_SYSCONFIG_SIDLEMODE                (1 << 3)
+#define OMAP_USBTLL_SYSCONFIG_ENAWAKEUP                (1 << 2)
+#define OMAP_USBTLL_SYSCONFIG_SOFTRESET                (1 << 1)
+#define OMAP_USBTLL_SYSCONFIG_CACTIVITY                (1 << 8)
+#define OMAP_USBTLL_SYSSTATUS_RESETDONE                1
+
+#define OMAP_UHH_SYSCONFIG_SOFTRESET           1
+#define OMAP_UHH_SYSSTATUS_EHCI_RESETDONE      (1 << 2)
+#define OMAP_UHH_SYSCONFIG_NOIDLE              (1 << 2)
+#define OMAP_UHH_SYSCONFIG_NOSTDBY             (1 << 4)
+
+#define OMAP_UHH_SYSCONFIG_VAL (OMAP_UHH_SYSCONFIG_NOIDLE | \
+                                       OMAP_UHH_SYSCONFIG_NOSTDBY)
+
+#endif /* _EHCI_H */
index 7c82f9036075117524b5221585bf7010bf272f32..9dd03c9fa6512b100938d8aec4bd446a936fa590 100644 (file)
@@ -2,20 +2,7 @@
  * Copyright (c) 2009 Wind River Systems, Inc.
  * Tom Rix <Tom.Rix@windriver.com>
  *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0
  *
  * This work is derived from the linux 2.6.27 kernel source
  * To fetch, use the kernel repository
  *
  * Copyright (C) 2003-2005 Nokia Corporation
  * Written by Juha Yrjölä <juha.yrjola@nokia.com>
- *
- * 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.
  */
 #ifndef _GPIO_OMAP5_H
 #define _GPIO_OMAP5_H
index 25f0e3d9c759f666e7d87f6fc2e5bb2e6d34f7f6..cd69677729cbf81ad237e1ac64b8477fde37e1f3 100644 (file)
@@ -17,6 +17,9 @@
 #define ZYNQ_SDHCI_BASEADDR1           0xE0101000
 #define ZYNQ_I2C_BASEADDR0             0xE0004000
 #define ZYNQ_I2C_BASEADDR1             0xE0005000
+#define ZYNQ_SPI_BASEADDR0             0xE0006000
+#define ZYNQ_SPI_BASEADDR1             0xE0007000
+#define ZYNQ_DDRC_BASEADDR             0xF8006000
 
 /* Reflect slcr offsets */
 struct slcr_regs {
@@ -84,4 +87,11 @@ struct scu_regs {
 
 #define scu_base ((struct scu_regs *)ZYNQ_SCU_BASEADDR)
 
+struct ddrc_regs {
+       u32 ddrc_ctrl; /* 0x0 */
+       u32 reserved[60];
+       u32 ecc_scrub; /* 0xF4 */
+};
+#define ddrc_base ((struct ddrc_regs *)ZYNQ_DDRC_BASEADDR)
+
 #endif /* _ASM_ARCH_HARDWARE_H */
index 19a4eec6a973f23595c4112e8e013afacb9f0f54..110de9092213995dbee9a50c4cdca4810643c606 100644 (file)
@@ -14,6 +14,7 @@ extern void zynq_slcr_gem_clk_setup(u32 gem_id, u32 rclk, u32 clk);
 extern void zynq_slcr_devcfg_disable(void);
 extern void zynq_slcr_devcfg_enable(void);
 extern u32 zynq_slcr_get_idcode(void);
+extern void zynq_ddrc_init(void);
 
 /* Driver extern functions */
 extern int zynq_sdhci_init(u32 regbase);
index 77e81701b847886f0b65012cd2affeccd1b7662d..ac83a539a82aca39d3ba48da3c4dbf8c8099b5d3 100644 (file)
@@ -42,6 +42,7 @@ enum usbhs_omap_port_mode {
 /* Values of UHH_REVISION - Note: these are not given in the TRM */
 #define OMAP_USBHS_REV1                                        0x00000010 /* OMAP3 */
 #define OMAP_USBHS_REV2                                        0x50700100 /* OMAP4 */
+#define OMAP_USBHS_REV2_1                              0x50700101 /* OMAP5 */
 
 /* UHH Register Set */
 #define OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN             (1 << 2)
@@ -60,6 +61,7 @@ enum usbhs_omap_port_mode {
 #define OMAP_P2_MODE_CLEAR                             (3 << 18)
 #define OMAP_P2_MODE_TLL                               (1 << 18)
 #define OMAP_P2_MODE_HSIC                              (3 << 18)
+#define OMAP_P3_MODE_CLEAR                             (3 << 20)
 #define OMAP_P3_MODE_HSIC                              (3 << 20)
 
 /* EHCI Register Set */
index 5f516ef6e04186a6962ada6759ff1898002c4aee..d5c1f7f255a3c5f6eee70634d6dd747ac5639530 100644 (file)
@@ -161,4 +161,6 @@ void mxs_dma_init(void);
 int mxs_dma_init_channel(int chan);
 int mxs_dma_release(int chan);
 
+void mxs_dma_circ_start(int chan, struct mxs_dma_desc *pdesc);
+
 #endif /* __DMA_H__ */
index 1ebfa8694f6a02644fff72e81df109c8de610d19..5d25d04c3bf68f45560aa120faf4182cefca8930 100644 (file)
@@ -2,20 +2,7 @@
  * Copyright (c) 2009 Wind River Systems, Inc.
  * Tom Rix <Tom.Rix@windriver.com>
  *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0
  *
  * This work is derived from the linux 2.6.27 kernel source
  * To fetch, use the kernel repository
  *
  * Copyright (C) 2003-2005 Nokia Corporation
  * Written by Juha Yrjölä <juha.yrjola@nokia.com>
- *
- * 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.
  */
 #ifndef _GPIO_H
 #define _GPIO_H
index f74a0b7c0e8b5e78768644b455aaca3cdbce8d6b..f9aff4d894ae95f2d69239e60127485cc5b1a1cc 100644 (file)
@@ -247,7 +247,7 @@ static struct {
 
 static void portmux_setup(unsigned short per)
 {
-       u16 y, offset, muxreg;
+       u16 y, offset, muxreg, mask;
        u16 function = P_FUNCT2MUX(per);
 
        for (y = 0; y < ARRAY_SIZE(port_mux_lut); y++) {
@@ -258,12 +258,13 @@ static void portmux_setup(unsigned short per)
                        offset = port_mux_lut[y].offset;
                        muxreg = bfin_read_PORT_MUX();
 
-                       if (offset != 1)
-                               muxreg &= ~(1 << offset);
+                       if (offset == 1)
+                               mask = 3;
                        else
-                               muxreg &= ~(3 << 1);
+                               mask = 1;
 
-                       muxreg |= (function << offset);
+                       muxreg &= ~(mask << offset);
+                       muxreg |= ((function & mask) << offset);
                        bfin_write_PORT_MUX(muxreg);
                }
        }
@@ -662,8 +663,8 @@ void special_gpio_free(unsigned gpio)
                return;
        }
 
-       reserve(special_gpio, gpio);
-       reserve(peri, gpio);
+       unreserve(special_gpio, gpio);
+       unreserve(peri, gpio);
        set_label(gpio, "free");
 }
 #endif
index 10223bdb791dfe7bd1ca55244f28577a16e6beeb..17d1f468dd3a53b0394d4beebbe52f000f41a811 100644 (file)
@@ -67,6 +67,7 @@ static int display_banner(void)
 static int init_baudrate(void)
 {
        gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
+       gd->bd->bi_baudrate = gd->baudrate;
        return 0;
 }
 
@@ -235,8 +236,6 @@ static int global_board_data_init(void)
        bd->bi_sclk = get_sclk();
        bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
        bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
-       bd->bi_baudrate = (gd->baudrate > 0)
-               ? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE;
 
        return 0;
 }
index 6692f24a0be43f2b1d95ba060be8485ce9211cd5..fc545a9ee6fbd89495ac7d23765be831ffd5d471 100644 (file)
@@ -15,5 +15,3 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x80F00000
 PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__
 
 LDSCRIPT ?= $(SRCTREE)/$(CPUDIR)/u-boot.lds
-
-CONFIG_ARCH_DEVICE_TREE := microblaze
index 8267191fdec273af042d30f0917ce8e5be6a19a8..f7182f27e9d9d28b834afb76eb8ca5d4b5d5e107 100644 (file)
@@ -16,6 +16,7 @@
 #include <stdio_dev.h>
 #include <serial.h>
 #include <net.h>
+#include <spi.h>
 #include <linux/compiler.h>
 #include <asm/processor.h>
 #include <asm/microblaze_intc.h>
@@ -147,6 +148,10 @@ void board_init_f(ulong not_used)
        }
 #endif
 
+#ifdef CONFIG_SPI
+       spi_init();
+#endif
+
        /* relocate environment function pointers etc. */
        env_relocate();
 
index cd29734789449b2cd0a0a006a821af9cf897e0d1..3a891ba62727511706291cf292b0fb23b7ec2a02 100644 (file)
@@ -7,4 +7,7 @@
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
+#define CONFIG_LMB
+#define CONFIG_SYS_BOOT_RAMDISK_HIGH
+
 #endif
index e9f82f711a5b462cfde61e3a67a95a8652e30071..f91406c06002cd31e064fc3d3ea5cc67132dafcd 100644 (file)
@@ -19,11 +19,7 @@ LGOBJS       := $(addprefix $(obj),$(GLSOBJS))
 SOBJS-y        +=
 
 COBJS-y        += board.o
-ifeq ($(CONFIG_QEMU_MIPS),y)
-COBJS-$(CONFIG_CMD_BOOTM) += bootm_qemu_mips.o
-else
 COBJS-$(CONFIG_CMD_BOOTM) += bootm.o
-endif
 
 SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
index ade9af47e3b3df60d4fd1f765cfaa8186bfa0824..66340ea47046319083cdfc0556b5dc292681b980 100644 (file)
@@ -17,23 +17,148 @@ DECLARE_GLOBAL_DATA_PTR;
 #define        LINUX_MAX_ENVS          256
 #define        LINUX_MAX_ARGS          256
 
+#if defined(CONFIG_QEMU_MALTA)
+#define mips_boot_qemu_malta   1
+#else
+#define mips_boot_qemu_malta   0
+#endif
+
 static int linux_argc;
 static char **linux_argv;
+static char *linux_argp;
 
 static char **linux_env;
 static char *linux_env_p;
 static int linux_env_idx;
 
-static void linux_params_init(ulong start, char *commandline);
-static void linux_env_set(char *env_name, char *env_val);
+static ulong arch_get_sp(void)
+{
+       ulong ret;
+
+       __asm__ __volatile__("move %0, $sp" : "=r"(ret) : );
+
+       return ret;
+}
+
+void arch_lmb_reserve(struct lmb *lmb)
+{
+       ulong sp;
+
+       sp = arch_get_sp();
+       debug("## Current stack ends at 0x%08lx\n", sp);
+
+       /* adjust sp by 4K to be safe */
+       sp -= 4096;
+       lmb_reserve(lmb, sp, CONFIG_SYS_SDRAM_BASE + gd->ram_size - sp);
+}
+
+static void linux_cmdline_init(void)
+{
+       linux_argc = 1;
+       linux_argv = (char **)UNCACHED_SDRAM(gd->bd->bi_boot_params);
+       linux_argv[0] = 0;
+       linux_argp = (char *)(linux_argv + LINUX_MAX_ARGS);
+}
+
+static void linux_cmdline_set(const char *value, size_t len)
+{
+       linux_argv[linux_argc] = linux_argp;
+       memcpy(linux_argp, value, len);
+       linux_argp[len] = 0;
+
+       linux_argp += len + 1;
+       linux_argc++;
+}
+
+static void linux_cmdline_dump(void)
+{
+       int i;
+
+       debug("## cmdline argv at 0x%p, argp at 0x%p\n",
+             linux_argv, linux_argp);
+
+       for (i = 1; i < linux_argc; i++)
+               debug("   arg %03d: %s\n", i, linux_argv[i]);
+}
+
+static void boot_cmdline_linux(bootm_headers_t *images)
+{
+       const char *bootargs, *next, *quote;
+
+       linux_cmdline_init();
+
+       bootargs = getenv("bootargs");
+       if (!bootargs)
+               return;
+
+       next = bootargs;
+
+       while (bootargs && *bootargs && linux_argc < LINUX_MAX_ARGS) {
+               quote = strchr(bootargs, '"');
+               next = strchr(bootargs, ' ');
+
+               while (next && quote && quote < next) {
+                       /*
+                        * we found a left quote before the next blank
+                        * now we have to find the matching right quote
+                        */
+                       next = strchr(quote + 1, '"');
+                       if (next) {
+                               quote = strchr(next + 1, '"');
+                               next = strchr(next + 1, ' ');
+                       }
+               }
+
+               if (!next)
+                       next = bootargs + strlen(bootargs);
+
+               linux_cmdline_set(bootargs, next - bootargs);
+
+               if (*next)
+                       next++;
+
+               bootargs = next;
+       }
+
+       linux_cmdline_dump();
+}
+
+static void linux_env_init(void)
+{
+       linux_env = (char **)(((ulong) linux_argp + 15) & ~15);
+       linux_env[0] = 0;
+       linux_env_p = (char *)(linux_env + LINUX_MAX_ENVS);
+       linux_env_idx = 0;
+}
+
+static void linux_env_set(const char *env_name, const char *env_val)
+{
+       if (linux_env_idx < LINUX_MAX_ENVS - 1) {
+               linux_env[linux_env_idx] = linux_env_p;
+
+               strcpy(linux_env_p, env_name);
+               linux_env_p += strlen(env_name);
+
+               if (mips_boot_qemu_malta) {
+                       linux_env_p++;
+                       linux_env[++linux_env_idx] = linux_env_p;
+               } else {
+                       *linux_env_p++ = '=';
+               }
+
+               strcpy(linux_env_p, env_val);
+               linux_env_p += strlen(env_val);
+
+               linux_env_p++;
+               linux_env[++linux_env_idx] = 0;
+       }
+}
 
 static void boot_prep_linux(bootm_headers_t *images)
 {
-       char *commandline = getenv("bootargs");
        char env_buf[12];
-       char *cp;
-
-       linux_params_init(UNCACHED_SDRAM(gd->bd->bi_boot_params), commandline);
+       const char *cp;
+       ulong rd_start, rd_size;
 
 #ifdef CONFIG_MEMSIZE_IN_BYTES
        sprintf(env_buf, "%lu", (ulong)gd->ram_size);
@@ -41,15 +166,20 @@ static void boot_prep_linux(bootm_headers_t *images)
 #else
        sprintf(env_buf, "%lu", (ulong)(gd->ram_size >> 20));
        debug("## Giving linux memsize in MB, %lu\n",
-               (ulong)(gd->ram_size >> 20));
+             (ulong)(gd->ram_size >> 20));
 #endif /* CONFIG_MEMSIZE_IN_BYTES */
 
+       rd_start = UNCACHED_SDRAM(images->initrd_start);
+       rd_size = images->initrd_end - images->initrd_start;
+
+       linux_env_init();
+
        linux_env_set("memsize", env_buf);
 
-       sprintf(env_buf, "0x%08X", (uint) UNCACHED_SDRAM(images->rd_start));
+       sprintf(env_buf, "0x%08lX", rd_start);
        linux_env_set("initrd_start", env_buf);
 
-       sprintf(env_buf, "0x%X", (uint) (images->rd_end - images->rd_start));
+       sprintf(env_buf, "0x%lX", rd_size);
        linux_env_set("initrd_size", env_buf);
 
        sprintf(env_buf, "0x%08X", (uint) (gd->bd->bi_flashstart));
@@ -65,33 +195,42 @@ static void boot_prep_linux(bootm_headers_t *images)
        cp = getenv("eth1addr");
        if (cp)
                linux_env_set("eth1addr", cp);
+
+       if (mips_boot_qemu_malta)
+               linux_env_set("modetty0", "38400n8r");
 }
 
 static void boot_jump_linux(bootm_headers_t *images)
 {
-       void (*theKernel) (int, char **, char **, int *);
-
-       /* find kernel entry point */
-       theKernel = (void (*)(int, char **, char **, int *))images->ep;
+       typedef void __noreturn (*kernel_entry_t)(int, ulong, ulong, ulong);
+       kernel_entry_t kernel = (kernel_entry_t) images->ep;
+       ulong linux_extra = 0;
 
-       debug("## Transferring control to Linux (at address %08lx) ...\n",
-               (ulong) theKernel);
+       debug("## Transferring control to Linux (at address %p) ...\n", kernel);
 
        bootstage_mark(BOOTSTAGE_ID_RUN_OS);
 
+       if (mips_boot_qemu_malta)
+               linux_extra = gd->ram_size;
+
        /* we assume that the kernel is in place */
        printf("\nStarting kernel ...\n\n");
 
-       theKernel(linux_argc, linux_argv, linux_env, 0);
+       kernel(linux_argc, (ulong)linux_argv, (ulong)linux_env, linux_extra);
 }
 
 int do_bootm_linux(int flag, int argc, char * const argv[],
                        bootm_headers_t *images)
 {
        /* No need for those on MIPS */
-       if (flag & BOOTM_STATE_OS_BD_T || flag & BOOTM_STATE_OS_CMDLINE)
+       if (flag & BOOTM_STATE_OS_BD_T)
                return -1;
 
+       if (flag & BOOTM_STATE_OS_CMDLINE) {
+               boot_cmdline_linux(images);
+               return 0;
+       }
+
        if (flag & BOOTM_STATE_OS_PREP) {
                boot_prep_linux(images);
                return 0;
@@ -102,76 +241,10 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
                return 0;
        }
 
+       boot_cmdline_linux(images);
        boot_prep_linux(images);
        boot_jump_linux(images);
 
        /* does not return */
        return 1;
 }
-
-static void linux_params_init(ulong start, char *line)
-{
-       char *next, *quote, *argp;
-
-       linux_argc = 1;
-       linux_argv = (char **) start;
-       linux_argv[0] = 0;
-       argp = (char *) (linux_argv + LINUX_MAX_ARGS);
-
-       next = line;
-
-       while (line && *line && linux_argc < LINUX_MAX_ARGS) {
-               quote = strchr(line, '"');
-               next = strchr(line, ' ');
-
-               while (next && quote && quote < next) {
-                       /* we found a left quote before the next blank
-                        * now we have to find the matching right quote
-                        */
-                       next = strchr(quote + 1, '"');
-                       if (next) {
-                               quote = strchr(next + 1, '"');
-                               next = strchr(next + 1, ' ');
-                       }
-               }
-
-               if (!next)
-                       next = line + strlen(line);
-
-               linux_argv[linux_argc] = argp;
-               memcpy(argp, line, next - line);
-               argp[next - line] = 0;
-
-               argp += next - line + 1;
-               linux_argc++;
-
-               if (*next)
-                       next++;
-
-               line = next;
-       }
-
-       linux_env = (char **) (((ulong) argp + 15) & ~15);
-       linux_env[0] = 0;
-       linux_env_p = (char *) (linux_env + LINUX_MAX_ENVS);
-       linux_env_idx = 0;
-}
-
-static void linux_env_set(char *env_name, char *env_val)
-{
-       if (linux_env_idx < LINUX_MAX_ENVS - 1) {
-               linux_env[linux_env_idx] = linux_env_p;
-
-               strcpy(linux_env_p, env_name);
-               linux_env_p += strlen(env_name);
-
-               strcpy(linux_env_p, "=");
-               linux_env_p += 1;
-
-               strcpy(linux_env_p, env_val);
-               linux_env_p += strlen(env_val);
-
-               linux_env_p++;
-               linux_env[++linux_env_idx] = 0;
-       }
-}
diff --git a/arch/mips/lib/bootm_qemu_mips.c b/arch/mips/lib/bootm_qemu_mips.c
deleted file mode 100644 (file)
index 910ab73..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (C) Copyright 2008
- * Jean-Christophe PLAGNIOL-VILLARD <jcplagniol@jcrosoft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <image.h>
-#include <asm/byteorder.h>
-#include <asm/addrspace.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int do_bootm_linux(int flag, int argc, char * const argv[],
-                       bootm_headers_t *images)
-{
-       void (*theKernel) (int, char **, char **, int *);
-       char *bootargs = getenv("bootargs");
-       char *start;
-       uint len;
-
-       /* find kernel entry point */
-       theKernel = (void (*)(int, char **, char **, int *))images->ep;
-
-       bootstage_mark(BOOTSTAGE_ID_RUN_OS);
-
-       debug("## Transferring control to Linux (at address %08lx) ...\n",
-               (ulong) theKernel);
-
-       gd->bd->bi_boot_params = gd->bd->bi_memstart + (16 << 20) - 256;
-       debug("%-12s= 0x%08lX\n", "boot_params", (ulong)gd->bd->bi_boot_params);
-
-       /* set Magic */
-       *(int32_t *)(gd->bd->bi_boot_params - 4) = 0x12345678;
-       /* set ram_size */
-       *(int32_t *)(gd->bd->bi_boot_params - 8) = gd->ram_size;
-
-       start = (char *)gd->bd->bi_boot_params;
-
-       len = strlen(bootargs);
-
-       strncpy(start, bootargs, len + 1);
-
-       start += len;
-
-       len = images->rd_end - images->rd_start;
-       if (len > 0) {
-               start += sprintf(start, " rd_start=0x%08X rd_size=0x%0X",
-               (uint) UNCACHED_SDRAM(images->rd_start),
-               (uint) len);
-       }
-
-       /* we assume that the kernel is in place */
-       printf("\nStarting kernel ...\n\n");
-
-       theKernel(0, NULL, NULL, 0);
-
-       /* does not return */
-       return 1;
-}
diff --git a/arch/nds32/include/asm/dma-mapping.h b/arch/nds32/include/asm/dma-mapping.h
new file mode 100644 (file)
index 0000000..25e5a1b
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2013 Andes Technology Corporation
+ * Ken Kuo, Andes Technology Corporation <ken_kuo@andestech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __ASM_NDS_DMA_MAPPING_H
+#define __ASM_NDS_DMA_MAPPING_H
+
+enum dma_data_direction {
+       DMA_BIDIRECTIONAL       = 0,
+       DMA_TO_DEVICE           = 1,
+       DMA_FROM_DEVICE         = 2,
+};
+
+static void *dma_alloc_coherent(size_t len, unsigned long *handle)
+{
+       *handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len);
+       return (void *)*handle;
+}
+
+static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
+                                          enum dma_data_direction dir)
+{
+       return (unsigned long)vaddr;
+}
+
+static inline void dma_unmap_single(volatile void *vaddr, size_t len,
+                                   unsigned long paddr)
+{
+}
+
+#endif /* __ASM_NDS_DMA_MAPPING_H */
index ee69e495b72d788c1f53fe94e3a662dd21122e1d..eaa4e87070b7f95b3020dc69816a2a54eb8b6491 100644 (file)
@@ -45,12 +45,10 @@ int checkcpu (void)
                return -1;              /* no valid CPU revision info */
        }
 
-       printf (" at %s MHz:", strmhz (buf, clock));
+       printf(" at %s MHz: ", strmhz(buf, clock));
 
-       printf (" %u kB I-Cache", checkicache () >> 10);
-       printf (" %u kB D-Cache", checkdcache () >> 10);
-
-       puts ("\n");
+       print_size(checkicache(), " I-Cache ");
+       print_size(checkdcache(), " D-Cache\n");
 
        return 0;
 }
index 09970b0589f9c29c9f422d85b3b5640bf3ceb982..28c25e5febba59176db4ebba14a5360b6156032d 100644 (file)
@@ -299,6 +299,8 @@ static void mpc83xx_pcie_init_bus(int bus, struct pci_region *reg)
 
        printf("PCIE%d: ", bus);
 
+#define PCI_LTSSM      0x404 /* PCIe Link Training, Status State Machine */
+#define PCI_LTSSM_L0   0x16 /* L0 state */
        reg16 = in_le16(hose_cfg_base + PCI_LTSSM);
        if (reg16 >= PCI_LTSSM_L0)
                printf("link\n");
index 0d1e8f1f0adf3fb9bdb31b803ca0801c5abfee45..f70f0d747dee06b5b39489751be29b9b5107cb86 100644 (file)
@@ -46,6 +46,7 @@ COBJS-$(CONFIG_MPC8568) += ddr-gen2.o
 COBJS-$(CONFIG_MPC8544) += ddr-gen2.o
 
 # supports ddr1/2/3
+COBJS-$(CONFIG_PPC_C29X)       += ddr-gen3.o
 COBJS-$(CONFIG_MPC8572) += ddr-gen3.o
 COBJS-$(CONFIG_MPC8536) += ddr-gen3.o
 COBJS-$(CONFIG_MPC8569)        += ddr-gen3.o
@@ -100,6 +101,7 @@ COBJS-$(CONFIG_SYS_FSL_QORIQ_CHASSIS1) += fsl_corenet_serdes.o
 COBJS-$(CONFIG_SYS_FSL_QORIQ_CHASSIS2) += fsl_corenet2_serdes.o
 
 # SoC specific SERDES support
+COBJS-$(CONFIG_PPC_C29X)       += c29x_serdes.o
 COBJS-$(CONFIG_MPC8536) += mpc8536_serdes.o
 COBJS-$(CONFIG_MPC8544) += mpc8544_serdes.o
 COBJS-$(CONFIG_MPC8548) += mpc8548_serdes.o
index 53c6a7faf9215f1f216b5b85ffb1536b5a1a5688..39b8e3ecc2ccc99f99ce8587a0520bf192dd0cdb 100644 (file)
@@ -41,8 +41,8 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
 
 #ifdef CONFIG_SYS_SRIO
 struct srio_liodn_id_table srio_liodn_tbl[] = {
-       SET_SRIO_LIODN_1(1, 307),
-       SET_SRIO_LIODN_1(2, 387),
+       SET_SRIO_LIODN_BASE(1, 307),
+       SET_SRIO_LIODN_BASE(2, 387),
 };
 int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
 #endif
@@ -112,10 +112,10 @@ int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl);
 #ifdef CONFIG_SYS_DPAA_RMAN
 struct liodn_id_table rman_liodn_tbl[] = {
        /* Set RMan block 0-3 liodn offset */
-       SET_RMAN_LIODN(0, 678),
-       SET_RMAN_LIODN(1, 679),
-       SET_RMAN_LIODN(2, 680),
-       SET_RMAN_LIODN(3, 681),
+       SET_RMAN_LIODN(0, 6),
+       SET_RMAN_LIODN(1, 7),
+       SET_RMAN_LIODN(2, 8),
+       SET_RMAN_LIODN(3, 9),
 };
 int rman_liodn_tbl_sz = ARRAY_SIZE(rman_liodn_tbl);
 #endif
diff --git a/arch/powerpc/cpu/mpc85xx/c29x_serdes.c b/arch/powerpc/cpu/mpc85xx/c29x_serdes.c
new file mode 100644 (file)
index 0000000..51972cb
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <common.h>
+#include <asm/io.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_serdes.h>
+
+#define SRDS1_MAX_LANES                4
+
+static u32 serdes1_prtcl_map;
+
+struct serdes_config {
+       u32 protocol;
+       u8 lanes[SRDS1_MAX_LANES];
+};
+
+static const struct serdes_config serdes1_cfg_tbl[] = {
+       /* SerDes 1 */
+       {1, {PCIE1, PCIE1, PCIE1, PCIE1} },
+       {2, {PCIE1, PCIE1, PCIE1, PCIE1} },
+       {3, {PCIE1, PCIE1, NONE, NONE} },
+       {4, {PCIE1, PCIE1, NONE, NONE} },
+       {5, {PCIE1, NONE, NONE, NONE} },
+       {6, {PCIE1, NONE, NONE, NONE} },
+       {}
+};
+
+int is_serdes_configured(enum srds_prtcl device)
+{
+       return (1 << device) & serdes1_prtcl_map;
+}
+
+void fsl_serdes_init(void)
+{
+       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
+       u32 pordevsr = in_be32(&gur->pordevsr);
+       u32 srds_cfg = (pordevsr & MPC85xx_PORDEVSR_IO_SEL) >>
+                               MPC85xx_PORDEVSR_IO_SEL_SHIFT;
+       const struct serdes_config *ptr;
+       int lane;
+
+       debug("PORDEVSR[IO_SEL_SRDS] = %x\n", srds_cfg);
+
+       if (srds_cfg > ARRAY_SIZE(serdes1_cfg_tbl)) {
+               printf("Invalid PORDEVSR[IO_SEL_SRDS] = %d\n", srds_cfg);
+               return;
+       }
+
+       ptr = &serdes1_cfg_tbl[srds_cfg];
+       if (!ptr->protocol)
+               return;
+
+       for (lane = 0; lane < SRDS1_MAX_LANES; lane++) {
+               enum srds_prtcl lane_prtcl = ptr->lanes[lane];
+               serdes1_prtcl_map |= (1 << lane_prtcl);
+       }
+}
index 5cd02ccde6de645dff0a587cb68b084d773e7d4f..eea264b15178f2d11436251ce81957cc74eff7a4 100644 (file)
@@ -244,6 +244,18 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006593
        puts("Work-around for Erratum A006593 enabled\n");
+#endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+       if (IS_SVR_REV(svr, 1, 0))
+               puts("Work-around for Erratum A003571 enabled\n");
+#endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
+       puts("Work-around for Erratum A-005812 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))
+               puts("Work-around for Erratum I2C-A004447 enabled\n");
 #endif
        return 0;
 }
index 91ac4ee617b6fc51e9e1b95358a5df5825e1700d..1a0196c7c421db4924c9531c55574b4b467696af 100644 (file)
@@ -44,10 +44,10 @@ int checkcpu (void)
        uint major, minor;
        struct cpu_type *cpu;
        char buf1[32], buf2[32];
-#if (defined(CONFIG_DDR_CLK_FREQ) || \
-       defined(CONFIG_FSL_CORENET)) && !defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2)
-       volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
-#endif /* CONFIG_FSL_CORENET */
+#if defined(CONFIG_DDR_CLK_FREQ) || defined(CONFIG_FSL_CORENET)
+       ccsr_gur_t __iomem *gur =
+               (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+#endif
 
        /*
         * Cornet platforms use ddr sync bit in RCW to indicate sync vs async
@@ -135,81 +135,97 @@ int checkcpu (void)
                if (!(i & 3))
                        printf ("\n       ");
                printf("CPU%d:%-4s MHz, ", core,
-                       strmhz(buf1, sysinfo.freqProcessor[core]));
+                       strmhz(buf1, sysinfo.freq_processor[core]));
        }
-       printf("\n       CCB:%-4s MHz,\n", strmhz(buf1, sysinfo.freqSystemBus));
+       printf("\n       CCB:%-4s MHz,", strmhz(buf1, sysinfo.freq_systembus));
+       printf("\n");
 
 #ifdef CONFIG_FSL_CORENET
        if (ddr_sync == 1) {
                printf("       DDR:%-4s MHz (%s MT/s data rate) "
                        "(Synchronous), ",
-                       strmhz(buf1, sysinfo.freqDDRBus/2),
-                       strmhz(buf2, sysinfo.freqDDRBus));
+                       strmhz(buf1, sysinfo.freq_ddrbus/2),
+                       strmhz(buf2, sysinfo.freq_ddrbus));
        } else {
                printf("       DDR:%-4s MHz (%s MT/s data rate) "
                        "(Asynchronous), ",
-                       strmhz(buf1, sysinfo.freqDDRBus/2),
-                       strmhz(buf2, sysinfo.freqDDRBus));
+                       strmhz(buf1, sysinfo.freq_ddrbus/2),
+                       strmhz(buf2, sysinfo.freq_ddrbus));
        }
 #else
        switch (ddr_ratio) {
        case 0x0:
                printf("       DDR:%-4s MHz (%s MT/s data rate), ",
-                       strmhz(buf1, sysinfo.freqDDRBus/2),
-                       strmhz(buf2, sysinfo.freqDDRBus));
+                       strmhz(buf1, sysinfo.freq_ddrbus/2),
+                       strmhz(buf2, sysinfo.freq_ddrbus));
                break;
        case 0x7:
                printf("       DDR:%-4s MHz (%s MT/s data rate) "
                        "(Synchronous), ",
-                       strmhz(buf1, sysinfo.freqDDRBus/2),
-                       strmhz(buf2, sysinfo.freqDDRBus));
+                       strmhz(buf1, sysinfo.freq_ddrbus/2),
+                       strmhz(buf2, sysinfo.freq_ddrbus));
                break;
        default:
                printf("       DDR:%-4s MHz (%s MT/s data rate) "
                        "(Asynchronous), ",
-                       strmhz(buf1, sysinfo.freqDDRBus/2),
-                       strmhz(buf2, sysinfo.freqDDRBus));
+                       strmhz(buf1, sysinfo.freq_ddrbus/2),
+                       strmhz(buf2, sysinfo.freq_ddrbus));
                break;
        }
 #endif
 
 #if defined(CONFIG_FSL_LBC)
-       if (sysinfo.freqLocalBus > LCRR_CLKDIV) {
-               printf("LBC:%-4s MHz\n", strmhz(buf1, sysinfo.freqLocalBus));
+       if (sysinfo.freq_localbus > LCRR_CLKDIV) {
+               printf("LBC:%-4s MHz\n", strmhz(buf1, sysinfo.freq_localbus));
        } else {
                printf("LBC: unknown (LCRR[CLKDIV] = 0x%02lx)\n",
-                      sysinfo.freqLocalBus);
+                      sysinfo.freq_localbus);
        }
 #endif
 
 #if defined(CONFIG_FSL_IFC)
-       printf("IFC:%-4s MHz\n", strmhz(buf1, sysinfo.freqLocalBus));
+       printf("IFC:%-4s MHz\n", strmhz(buf1, sysinfo.freq_localbus));
 #endif
 
 #ifdef CONFIG_CPM2
-       printf("CPM:   %s MHz\n", strmhz(buf1, sysinfo.freqSystemBus));
+       printf("CPM:   %s MHz\n", strmhz(buf1, sysinfo.freq_systembus));
 #endif
 
 #ifdef CONFIG_QE
-       printf("       QE:%-4s MHz\n", strmhz(buf1, sysinfo.freqQE));
+       printf("       QE:%-4s MHz\n", strmhz(buf1, sysinfo.freq_qe));
 #endif
 
 #ifdef CONFIG_SYS_DPAA_FMAN
        for (i = 0; i < CONFIG_SYS_NUM_FMAN; i++) {
                printf("       FMAN%d: %s MHz\n", i + 1,
-                       strmhz(buf1, sysinfo.freqFMan[i]));
+                       strmhz(buf1, sysinfo.freq_fman[i]));
        }
 #endif
 
 #ifdef CONFIG_SYS_DPAA_QBMAN
-       printf("       QMAN:  %s MHz\n", strmhz(buf1, sysinfo.freqQMAN));
+       printf("       QMAN:  %s MHz\n", strmhz(buf1, sysinfo.freq_qman));
 #endif
 
 #ifdef CONFIG_SYS_DPAA_PME
-       printf("       PME:   %s MHz\n", strmhz(buf1, sysinfo.freqPME));
+       printf("       PME:   %s MHz\n", strmhz(buf1, sysinfo.freq_pme));
 #endif
 
-       puts("L1:    D-cache 32 kB enabled\n       I-cache 32 kB enabled\n");
+       puts("L1:    D-cache 32 KiB enabled\n       I-cache 32 KiB enabled\n");
+
+#ifdef CONFIG_FSL_CORENET
+       /* Display the RCW, so that no one gets confused as to what RCW
+        * we're actually using for this boot.
+        */
+       puts("Reset Configuration Word (RCW):");
+       for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
+               u32 rcw = in_be32(&gur->rcwsr[i]);
+
+               if ((i % 4) == 0)
+                       printf("\n       %08x:", i * 4);
+               printf(" %08x", rcw);
+       }
+       puts("\n");
+#endif
 
        return 0;
 }
index 25beda233eebe4208a708736ff13e18623fb51b8..6036333eaa72fba3ac3e3378d42abb06dce12d6e 100644 (file)
@@ -22,6 +22,7 @@
 #include <asm/fsl_law.h>
 #include <asm/fsl_serdes.h>
 #include <asm/fsl_srio.h>
+#include <fsl_usb.h>
 #include <hwconfig.h>
 #include <linux/compiler.h>
 #include "mp.h"
@@ -166,7 +167,8 @@ static void enable_cpc(void)
 
        }
 
-       printf("Corenet Platform Cache: %d KB enabled\n", size);
+       puts("Corenet Platform Cache: ");
+       print_size(size * 1024, " enabled\n");
 }
 
 static void invalidate_cpc(void)
@@ -355,7 +357,9 @@ int cpu_init_r(void)
        extern int spin_table_compat;
        const char *spin;
 #endif
-
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+       ccsr_sec_t __iomem *sec = (void *)CONFIG_SYS_FSL_SEC_ADDR;
+#endif
 #if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) || \
        defined(CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011)
        /*
@@ -399,6 +403,14 @@ int cpu_init_r(void)
                sync();
        }
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
+       /*
+        * A-005812 workaround sets bit 32 of SPR 976 for SoCs running
+        * in write shadow mode. Checking DCWS before setting SPR 976.
+        */
+       if (mfspr(L1CSR2) & L1CSR2_DCWS)
+               mtspr(SPRN_HDBCR0, (mfspr(SPRN_HDBCR0) | 0x80000000));
+#endif
 
 #if defined(CONFIG_PPC_SPINTABLE_COMPATIBLE) && defined(CONFIG_MP)
        spin = getenv("spin_table_compat");
@@ -448,28 +460,28 @@ int cpu_init_r(void)
        case 0x1:
                if (ver == SVR_8540 || ver == SVR_8560   ||
                    ver == SVR_8541 || ver == SVR_8555) {
-                       puts("128 KB ");
-                       /* set L2E=1, L2I=1, & L2BLKSZ=1 (128 Kbyte) */
+                       puts("128 KiB ");
+                       /* set L2E=1, L2I=1, & L2BLKSZ=1 (128 KiBibyte) */
                        cache_ctl = 0xc4000000;
                } else {
-                       puts("256 KB ");
+                       puts("256 KiB ");
                        cache_ctl = 0xc0000000; /* set L2E=1, L2I=1, & L2SRAM=0 */
                }
                break;
        case 0x2:
                if (ver == SVR_8540 || ver == SVR_8560   ||
                    ver == SVR_8541 || ver == SVR_8555) {
-                       puts("256 KB ");
-                       /* set L2E=1, L2I=1, & L2BLKSZ=2 (256 Kbyte) */
+                       puts("256 KiB ");
+                       /* set L2E=1, L2I=1, & L2BLKSZ=2 (256 KiBibyte) */
                        cache_ctl = 0xc8000000;
                } else {
-                       puts ("512 KB ");
+                       puts("512 KiB ");
                        /* set L2E=1, L2I=1, & L2SRAM=0 */
                        cache_ctl = 0xc0000000;
                }
                break;
        case 0x3:
-               puts("1024 KB ");
+               puts("1024 KiB ");
                /* set L2E=1, L2I=1, & L2SRAM=0 */
                cache_ctl = 0xc0000000;
                break;
@@ -517,13 +529,14 @@ int cpu_init_r(void)
        if (CONFIG_SYS_INIT_L2CSR0 & L2CSR0_L2E) {
                while (!(mfspr(SPRN_L2CSR0) & L2CSR0_L2E))
                        ;
-               printf("%d KB enabled\n", (l2cfg0 & 0x3fff) * 64);
+               print_size((l2cfg0 & 0x3fff) * 64 * 1024, " enabled\n");
        }
 
 skip_l2:
 #elif defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2)
        if (l2cache->l2csr0 & L2CSR0_L2E)
-               printf("%d KB enabled\n", (l2cache->l2cfg0 & 0x3fff) * 64);
+               print_size((l2cache->l2cfg0 & 0x3fff) * 64 * 1024,
+                          " enabled\n");
 
        enable_cluster_l2();
 #else
@@ -532,8 +545,16 @@ skip_l2:
 
        enable_cpc();
 
+#ifndef CONFIG_SYS_FSL_NO_SERDES
        /* needs to be in ram since code uses global static vars */
        fsl_serdes_init();
+#endif
+
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+#define MCFGR_AXIPIPE 0x000000f0
+       if (IS_SVR_REV(svr, 1, 0))
+               clrbits_be32(&sec->mcfgr, MCFGR_AXIPIPE);
+#endif
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_A005871
        if (IS_SVR_REV(svr, 1, 0)) {
@@ -595,7 +616,7 @@ skip_l2:
 
 #ifdef CONFIG_SYS_FSL_USB1_PHY_ENABLE
        {
-               ccsr_usb_phy_t *usb_phy1 =
+               struct ccsr_usb_phy __iomem *usb_phy1 =
                        (void *)CONFIG_SYS_MPC85xx_USB1_PHY_ADDR;
                out_be32(&usb_phy1->usb_enable_override,
                                CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE);
@@ -603,7 +624,7 @@ skip_l2:
 #endif
 #ifdef CONFIG_SYS_FSL_USB2_PHY_ENABLE
        {
-               ccsr_usb_phy_t *usb_phy2 =
+               struct ccsr_usb_phy __iomem *usb_phy2 =
                        (void *)CONFIG_SYS_MPC85xx_USB2_PHY_ADDR;
                out_be32(&usb_phy2->usb_enable_override,
                                CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE);
@@ -625,7 +646,7 @@ skip_l2:
 #endif
 
 #if defined(CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE)
-               ccsr_usb_phy_t *usb_phy =
+               struct ccsr_usb_phy __iomem *usb_phy =
                        (void *)CONFIG_SYS_MPC85xx_USB1_PHY_ADDR;
                setbits_be32(&usb_phy->pllprg[1],
                             CONFIG_SYS_FSL_USB_PLLPRG2_PHY2_CLK_EN |
index 8a86819fb52ab0010cd1975af4e36328fada5761..4dd8c0b5bf2735e4b0b6f1c9732438536160ae0d 100644 (file)
@@ -15,7 +15,7 @@
 #endif
 
 void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
-                            unsigned int ctrl_num)
+                            unsigned int ctrl_num, int step)
 {
        unsigned int i;
        volatile ccsr_ddr_t *ddr = (void *)CONFIG_SYS_MPC8xxx_DDR_ADDR;
index a7058625227bdcaa333731b8c5785b779c0299e2..542bc84acf941c44cf3ce8b7b7d2e1ee08d41967 100644 (file)
@@ -16,7 +16,7 @@
 #endif
 
 void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
-                            unsigned int ctrl_num)
+                            unsigned int ctrl_num, int step)
 {
        unsigned int i;
        ccsr_ddr_t *ddr = (void *)CONFIG_SYS_MPC8xxx_DDR_ADDR;
index c5b47200e08b017c95c58b78cb03664ece50cc33..1be51d3307954ad3dd12eebab4605a78d8f99887 100644 (file)
 #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)
+                            unsigned int ctrl_num, int step)
 {
        unsigned int i, bus_width;
        volatile ccsr_ddr_t *ddr;
@@ -54,6 +64,9 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
                return;
        }
 
+       if (step == 2)
+               goto step2;
+
        if (regs->ddr_eor)
                out_be32(&ddr->eor, regs->ddr_eor);
 #ifdef CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134
@@ -123,10 +136,17 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        out_be32(&ddr->timing_cfg_5, regs->timing_cfg_5);
        out_be32(&ddr->ddr_zq_cntl, regs->ddr_zq_cntl);
        out_be32(&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)
                out_be32(&ddr->ddr_wrlvl_cntl_2, regs->ddr_wrlvl_cntl_2);
        if (regs->ddr_wrlvl_cntl_3)
                out_be32(&ddr->ddr_wrlvl_cntl_3, regs->ddr_wrlvl_cntl_3);
+#endif
 
        out_be32(&ddr->ddr_sr_cntr, regs->ddr_sr_cntr);
        out_be32(&ddr->ddr_sdram_rcw_1, regs->ddr_sdram_rcw_1);
@@ -150,6 +170,20 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
        out_be32(&ddr->debug[21], 0x24000000);
 #endif /* CONFIG_SYS_FSL_ERRATUM_DDR_A003474 */
 
+       /*
+        * 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);
index cfaa2edcedb510cb9764fb3fe644373cfbeec14a..533d47ab438a86889ec0b0dbc0ccc54f2f1bf00c 100644 (file)
@@ -403,22 +403,22 @@ static void ft_fixup_dpaa_clks(void *blob)
        get_sys_info(&sysinfo);
 #ifdef CONFIG_SYS_DPAA_FMAN
        ft_fixup_clks(blob, "fsl,fman", CONFIG_SYS_FSL_FM1_OFFSET,
-                       sysinfo.freqFMan[0]);
+                       sysinfo.freq_fman[0]);
 
 #if (CONFIG_SYS_NUM_FMAN == 2)
        ft_fixup_clks(blob, "fsl,fman", CONFIG_SYS_FSL_FM2_OFFSET,
-                       sysinfo.freqFMan[1]);
+                       sysinfo.freq_fman[1]);
 #endif
 #endif
 
 #ifdef CONFIG_SYS_DPAA_QBMAN
        do_fixup_by_compat_u32(blob, "fsl,qman",
-                       "clock-frequency", sysinfo.freqQMAN, 1);
+                       "clock-frequency", sysinfo.freq_qman, 1);
 #endif
 
 #ifdef CONFIG_SYS_DPAA_PME
        do_fixup_by_compat_u32(blob, "fsl,pme",
-               "clock-frequency", sysinfo.freqPME, 1);
+               "clock-frequency", sysinfo.freq_pme, 1);
 #endif
 }
 #else
@@ -476,7 +476,7 @@ void fdt_fixup_fman_firmware(void *blob)
        if (!p)
                return;
 
-       fmanfw = (struct qe_firmware *) simple_strtoul(p, NULL, 0);
+       fmanfw = (struct qe_firmware *) simple_strtoul(p, NULL, 16);
        if (!fmanfw)
                return;
 
@@ -604,15 +604,19 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 
        fdt_add_enet_stashing(blob);
 
+#ifndef CONFIG_FSL_TBCLK_EXTRA_DIV
+#define CONFIG_FSL_TBCLK_EXTRA_DIV 1
+#endif
        do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
-               "timebase-frequency", get_tbclk(), 1);
+               "timebase-frequency", get_tbclk() / CONFIG_FSL_TBCLK_EXTRA_DIV,
+               1);
        do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
                "bus-frequency", bd->bi_busfreq, 1);
        get_sys_info(&sysinfo);
        off = fdt_node_offset_by_prop_value(blob, -1, "device_type", "cpu", 4);
        while (off != -FDT_ERR_NOTFOUND) {
                u32 *reg = (u32 *)fdt_getprop(blob, off, "reg", 0);
-               val = cpu_to_fdt32(sysinfo.freqProcessor[*reg]);
+               val = cpu_to_fdt32(sysinfo.freq_processor[*reg]);
                fdt_setprop(blob, off, "clock-frequency", &val, 4);
                off = fdt_node_offset_by_prop_value(blob, off, "device_type",
                                                        "cpu", 4);
index de6bd11a16529d39a0580eff7b080ed12dd3a2b5..39d9409d64bab1442908e3ec8de64fb054aa3b52 100644 (file)
 #include <asm/errno.h>
 #include "fsl_corenet2_serdes.h"
 
+#ifdef CONFIG_SYS_FSL_SRDS_1
 static u64 serdes1_prtcl_map;
+#endif
+#ifdef CONFIG_SYS_FSL_SRDS_2
 static u64 serdes2_prtcl_map;
+#endif
 #ifdef CONFIG_SYS_FSL_SRDS_3
 static u64 serdes3_prtcl_map;
 #endif
@@ -78,8 +82,12 @@ int is_serdes_configured(enum srds_prtcl device)
 {
        u64 ret = 0;
 
+#ifdef CONFIG_SYS_FSL_SRDS_1
        ret |= (1ULL << device) & serdes1_prtcl_map;
+#endif
+#ifdef CONFIG_SYS_FSL_SRDS_2
        ret |= (1ULL << device) & serdes2_prtcl_map;
+#endif
 #ifdef CONFIG_SYS_FSL_SRDS_3
        ret |= (1ULL << device) & serdes3_prtcl_map;
 #endif
@@ -97,14 +105,18 @@ int serdes_get_first_lane(u32 sd, enum srds_prtcl device)
        int i;
 
        switch (sd) {
+#ifdef CONFIG_SYS_FSL_SRDS_1
        case FSL_SRDS_1:
                cfg &= FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
                cfg >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
                break;
+#endif
+#ifdef CONFIG_SYS_FSL_SRDS_2
        case FSL_SRDS_2:
                cfg &= FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
                cfg >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
                break;
+#endif
 #ifdef CONFIG_SYS_FSL_SRDS_3
        case FSL_SRDS_3:
                cfg &= FSL_CORENET2_RCWSR4_SRDS3_PRTCL;
@@ -163,14 +175,18 @@ u64 serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift)
 void fsl_serdes_init(void)
 {
 
+#ifdef CONFIG_SYS_FSL_SRDS_1
        serdes1_prtcl_map = serdes_init(FSL_SRDS_1,
                CONFIG_SYS_FSL_CORENET_SERDES_ADDR,
                FSL_CORENET2_RCWSR4_SRDS1_PRTCL,
                FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT);
+#endif
+#ifdef CONFIG_SYS_FSL_SRDS_2
        serdes2_prtcl_map = serdes_init(FSL_SRDS_2,
                CONFIG_SYS_FSL_CORENET_SERDES_ADDR + FSL_SRDS_2 * 0x1000,
                FSL_CORENET2_RCWSR4_SRDS2_PRTCL,
                FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT);
+#endif
 #ifdef CONFIG_SYS_FSL_SRDS_3
        serdes3_prtcl_map = serdes_init(FSL_SRDS_3,
                CONFIG_SYS_FSL_CORENET_SERDES_ADDR + FSL_SRDS_3 * 0x1000,
index 6de572d5945b590023aecc7dbd08907707489889..d515b234a4914fb3d3eb1607732aada988693fbc 100644 (file)
@@ -9,5 +9,4 @@
 
 int is_serdes_prtcl_valid(int serdes, u32 prtcl);
 int serdes_lane_enabled(int lane);
-enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
 #endif /* __FSL_CORENET2_SERDES_H */
index 15bbbc15aa4ef27ae55e61ac24629880d0706804..c15e83b521e613df5d0637c11bb7615b71ae8836 100644 (file)
@@ -226,6 +226,21 @@ __secondary_start_page:
 2:
 #endif
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005812
+       /*
+        * A-005812 workaround sets bit 32 of SPR 976 for SoCs running in
+        * write shadow mode. This code should run after other code setting
+        * DCWS.
+        */
+       mfspr   r3,L1CSR2
+       andis.  r3,r3,(L1CSR2_DCWS)@h
+       beq     1f
+       mfspr   r3, SPRN_HDBCR0
+       oris    r3, r3, 0x8000
+       mtspr   SPRN_HDBCR0, r3
+1:
+#endif
+
 #ifdef CONFIG_BACKSIDE_L2_CACHE
        /* skip L2 setup on P2040/P2040E as they have no L2 */
        mfspr   r3,SPRN_SVR
index f093960fe7e7139cfec9e164f8ff9a5b97a25aaa..07690f97b16a9ca9e2095233b65f60c4c23ff364 100644 (file)
@@ -20,7 +20,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 /* --------------------------------------------------------------- */
 
-void get_sys_info (sys_info_t * sysInfo)
+void get_sys_info(sys_info_t *sys_info)
 {
        volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
 #ifdef CONFIG_FSL_IFC
@@ -46,7 +46,7 @@ void get_sys_info (sys_info_t * sysInfo)
                [14] = 3,       /* CC4 PPL / 4 */
        };
 
-       const u8 core_cplx_PLL_div[16] = {
+       const u8 core_cplx_pll_div[16] = {
                [ 0] = 1,       /* CC1 PPL / 1 */
                [ 1] = 2,       /* CC1 PPL / 2 */
                [ 2] = 4,       /* CC1 PPL / 4 */
@@ -60,26 +60,26 @@ void get_sys_info (sys_info_t * sysInfo)
                [13] = 2,       /* CC4 PPL / 2 */
                [14] = 4,       /* CC4 PPL / 4 */
        };
-       uint i, freqCC_PLL[6], rcw_tmp;
+       uint i, freq_cc_pll[6], rcw_tmp;
        uint ratio[6];
        unsigned long sysclk = CONFIG_SYS_CLK_FREQ;
        uint mem_pll_rat;
 
-       sysInfo->freqSystemBus = sysclk;
+       sys_info->freq_systembus = sysclk;
 #ifdef CONFIG_DDR_CLK_FREQ
-       sysInfo->freqDDRBus = CONFIG_DDR_CLK_FREQ;
+       sys_info->freq_ddrbus = CONFIG_DDR_CLK_FREQ;
 #else
-       sysInfo->freqDDRBus = sysclk;
+       sys_info->freq_ddrbus = sysclk;
 #endif
 
-       sysInfo->freqSystemBus *= (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
+       sys_info->freq_systembus *= (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f;
        mem_pll_rat = (in_be32(&gur->rcwsr[0]) >>
                        FSL_CORENET_RCWSR0_MEM_PLL_RAT_SHIFT)
                        & FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK;
        if (mem_pll_rat > 2)
-               sysInfo->freqDDRBus *= mem_pll_rat;
+               sys_info->freq_ddrbus *= mem_pll_rat;
        else
-               sysInfo->freqDDRBus = sysInfo->freqSystemBus * mem_pll_rat;
+               sys_info->freq_ddrbus = sys_info->freq_systembus * mem_pll_rat;
 
        ratio[0] = (in_be32(&clk->pllc1gsr) >> 1) & 0x3f;
        ratio[1] = (in_be32(&clk->pllc2gsr) >> 1) & 0x3f;
@@ -89,9 +89,9 @@ void get_sys_info (sys_info_t * sysInfo)
        ratio[5] = (in_be32(&clk->pllc6gsr) >> 1) & 0x3f;
        for (i = 0; i < 6; i++) {
                if (ratio[i] > 4)
-                       freqCC_PLL[i] = sysclk * ratio[i];
+                       freq_cc_pll[i] = sysclk * ratio[i];
                else
-                       freqCC_PLL[i] = sysInfo->freqSystemBus * ratio[i];
+                       freq_cc_pll[i] = sys_info->freq_systembus * ratio[i];
        }
 #ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
        /*
@@ -110,8 +110,8 @@ void get_sys_info (sys_info_t * sysInfo)
                        printf("Unsupported architecture configuration"
                                " in function %s\n", __func__);
                cplx_pll += (cluster / 2) * 3;
-               sysInfo->freqProcessor[cpu] =
-                        freqCC_PLL[cplx_pll] / core_cplx_PLL_div[c_pll_sel];
+               sys_info->freq_processor[cpu] =
+                        freq_cc_pll[cplx_pll] / core_cplx_pll_div[c_pll_sel];
        }
 #ifdef CONFIG_PPC_B4860
 #define FM1_CLK_SEL    0xe0000000
@@ -127,63 +127,63 @@ void get_sys_info (sys_info_t * sysInfo)
 #ifdef CONFIG_SYS_DPAA_PME
        switch ((rcw_tmp & PME_CLK_SEL) >> PME_CLK_SHIFT) {
        case 1:
-               sysInfo->freqPME = freqCC_PLL[0];
+               sys_info->freq_pme = freq_cc_pll[0];
                break;
        case 2:
-               sysInfo->freqPME = freqCC_PLL[0] / 2;
+               sys_info->freq_pme = freq_cc_pll[0] / 2;
                break;
        case 3:
-               sysInfo->freqPME = freqCC_PLL[0] / 3;
+               sys_info->freq_pme = freq_cc_pll[0] / 3;
                break;
        case 4:
-               sysInfo->freqPME = freqCC_PLL[0] / 4;
+               sys_info->freq_pme = freq_cc_pll[0] / 4;
                break;
        case 6:
-               sysInfo->freqPME = freqCC_PLL[1] / 2;
+               sys_info->freq_pme = freq_cc_pll[1] / 2;
                break;
        case 7:
-               sysInfo->freqPME = freqCC_PLL[1] / 3;
+               sys_info->freq_pme = freq_cc_pll[1] / 3;
                break;
        default:
                printf("Error: Unknown PME clock select!\n");
        case 0:
-               sysInfo->freqPME = sysInfo->freqSystemBus / 2;
+               sys_info->freq_pme = sys_info->freq_systembus / 2;
                break;
 
        }
 #endif
 
 #ifdef CONFIG_SYS_DPAA_QBMAN
-       sysInfo->freqQMAN = sysInfo->freqSystemBus / 2;
+       sys_info->freq_qman = sys_info->freq_systembus / 2;
 #endif
 
 #ifdef CONFIG_SYS_DPAA_FMAN
        switch ((rcw_tmp & FM1_CLK_SEL) >> FM1_CLK_SHIFT) {
        case 1:
-               sysInfo->freqFMan[0] = freqCC_PLL[3];
+               sys_info->freq_fman[0] = freq_cc_pll[3];
                break;
        case 2:
-               sysInfo->freqFMan[0] = freqCC_PLL[3] / 2;
+               sys_info->freq_fman[0] = freq_cc_pll[3] / 2;
                break;
        case 3:
-               sysInfo->freqFMan[0] = freqCC_PLL[3] / 3;
+               sys_info->freq_fman[0] = freq_cc_pll[3] / 3;
                break;
        case 4:
-               sysInfo->freqFMan[0] = freqCC_PLL[3] / 4;
+               sys_info->freq_fman[0] = freq_cc_pll[3] / 4;
                break;
        case 5:
-               sysInfo->freqFMan[0] = sysInfo->freqSystemBus;
+               sys_info->freq_fman[0] = sys_info->freq_systembus;
                break;
        case 6:
-               sysInfo->freqFMan[0] = freqCC_PLL[4] / 2;
+               sys_info->freq_fman[0] = freq_cc_pll[4] / 2;
                break;
        case 7:
-               sysInfo->freqFMan[0] = freqCC_PLL[4] / 3;
+               sys_info->freq_fman[0] = freq_cc_pll[4] / 3;
                break;
        default:
                printf("Error: Unknown FMan1 clock select!\n");
        case 0:
-               sysInfo->freqFMan[0] = sysInfo->freqSystemBus / 2;
+               sys_info->freq_fman[0] = sys_info->freq_systembus / 2;
                break;
        }
 #if (CONFIG_SYS_NUM_FMAN) == 2
@@ -192,27 +192,27 @@ void get_sys_info (sys_info_t * sysInfo)
        rcw_tmp = in_be32(&gur->rcwsr[15]);
        switch ((rcw_tmp & FM2_CLK_SEL) >> FM2_CLK_SHIFT) {
        case 1:
-               sysInfo->freqFMan[1] = freqCC_PLL[4];
+               sys_info->freq_fman[1] = freq_cc_pll[4];
                break;
        case 2:
-               sysInfo->freqFMan[1] = freqCC_PLL[4] / 2;
+               sys_info->freq_fman[1] = freq_cc_pll[4] / 2;
                break;
        case 3:
-               sysInfo->freqFMan[1] = freqCC_PLL[4] / 3;
+               sys_info->freq_fman[1] = freq_cc_pll[4] / 3;
                break;
        case 4:
-               sysInfo->freqFMan[1] = freqCC_PLL[4] / 4;
+               sys_info->freq_fman[1] = freq_cc_pll[4] / 4;
                break;
        case 6:
-               sysInfo->freqFMan[1] = freqCC_PLL[3] / 2;
+               sys_info->freq_fman[1] = freq_cc_pll[3] / 2;
                break;
        case 7:
-               sysInfo->freqFMan[1] = freqCC_PLL[3] / 3;
+               sys_info->freq_fman[1] = freq_cc_pll[3] / 3;
                break;
        default:
                printf("Error: Unknown FMan2 clock select!\n");
        case 0:
-               sysInfo->freqFMan[1] = sysInfo->freqSystemBus / 2;
+               sys_info->freq_fman[1] = sys_info->freq_systembus / 2;
                break;
        }
 #endif /* CONFIG_SYS_NUM_FMAN == 2 */
@@ -225,8 +225,8 @@ void get_sys_info (sys_info_t * sysInfo)
                                & 0xf;
                u32 cplx_pll = core_cplx_PLL[c_pll_sel];
 
-               sysInfo->freqProcessor[cpu] =
-                        freqCC_PLL[cplx_pll] / core_cplx_PLL_div[c_pll_sel];
+               sys_info->freq_processor[cpu] =
+                        freq_cc_pll[cplx_pll] / core_cplx_pll_div[c_pll_sel];
        }
 #define PME_CLK_SEL    0x80000000
 #define FM1_CLK_SEL    0x40000000
@@ -246,43 +246,43 @@ void get_sys_info (sys_info_t * sysInfo)
 #ifdef CONFIG_SYS_DPAA_PME
        if (rcw_tmp & PME_CLK_SEL) {
                if (rcw_tmp & HWA_ASYNC_DIV)
-                       sysInfo->freqPME = freqCC_PLL[HWA_CC_PLL] / 4;
+                       sys_info->freq_pme = freq_cc_pll[HWA_CC_PLL] / 4;
                else
-                       sysInfo->freqPME = freqCC_PLL[HWA_CC_PLL] / 2;
+                       sys_info->freq_pme = freq_cc_pll[HWA_CC_PLL] / 2;
        } else {
-               sysInfo->freqPME = sysInfo->freqSystemBus / 2;
+               sys_info->freq_pme = sys_info->freq_systembus / 2;
        }
 #endif
 
 #ifdef CONFIG_SYS_DPAA_FMAN
        if (rcw_tmp & FM1_CLK_SEL) {
                if (rcw_tmp & HWA_ASYNC_DIV)
-                       sysInfo->freqFMan[0] = freqCC_PLL[HWA_CC_PLL] / 4;
+                       sys_info->freq_fman[0] = freq_cc_pll[HWA_CC_PLL] / 4;
                else
-                       sysInfo->freqFMan[0] = freqCC_PLL[HWA_CC_PLL] / 2;
+                       sys_info->freq_fman[0] = freq_cc_pll[HWA_CC_PLL] / 2;
        } else {
-               sysInfo->freqFMan[0] = sysInfo->freqSystemBus / 2;
+               sys_info->freq_fman[0] = sys_info->freq_systembus / 2;
        }
 #if (CONFIG_SYS_NUM_FMAN) == 2
        if (rcw_tmp & FM2_CLK_SEL) {
                if (rcw_tmp & HWA_ASYNC_DIV)
-                       sysInfo->freqFMan[1] = freqCC_PLL[HWA_CC_PLL] / 4;
+                       sys_info->freq_fman[1] = freq_cc_pll[HWA_CC_PLL] / 4;
                else
-                       sysInfo->freqFMan[1] = freqCC_PLL[HWA_CC_PLL] / 2;
+                       sys_info->freq_fman[1] = freq_cc_pll[HWA_CC_PLL] / 2;
        } else {
-               sysInfo->freqFMan[1] = sysInfo->freqSystemBus / 2;
+               sys_info->freq_fman[1] = sys_info->freq_systembus / 2;
        }
 #endif
 #endif
 
 #ifdef CONFIG_SYS_DPAA_QBMAN
-       sysInfo->freqQMAN = sysInfo->freqSystemBus / 2;
+       sys_info->freq_qman = sys_info->freq_systembus / 2;
 #endif
 
 #endif /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */
 
 #else /* CONFIG_FSL_CORENET */
-       uint plat_ratio, e500_ratio, half_freqSystemBus;
+       uint plat_ratio, e500_ratio, half_freq_systembus;
        int i;
 #ifdef CONFIG_QE
        __maybe_unused u32 qe_ratio;
@@ -290,40 +290,40 @@ void get_sys_info (sys_info_t * sysInfo)
 
        plat_ratio = (gur->porpllsr) & 0x0000003e;
        plat_ratio >>= 1;
-       sysInfo->freqSystemBus = plat_ratio * CONFIG_SYS_CLK_FREQ;
+       sys_info->freq_systembus = plat_ratio * CONFIG_SYS_CLK_FREQ;
 
        /* Divide before multiply to avoid integer
         * overflow for processor speeds above 2GHz */
-       half_freqSystemBus = sysInfo->freqSystemBus/2;
+       half_freq_systembus = sys_info->freq_systembus/2;
        for (i = 0; i < cpu_numcores(); i++) {
                e500_ratio = ((gur->porpllsr) >> (i * 8 + 16)) & 0x3f;
-               sysInfo->freqProcessor[i] = e500_ratio * half_freqSystemBus;
+               sys_info->freq_processor[i] = e500_ratio * half_freq_systembus;
        }
 
-       /* Note: freqDDRBus is the MCLK frequency, not the data rate. */
-       sysInfo->freqDDRBus = sysInfo->freqSystemBus;
+       /* Note: freq_ddrbus is the MCLK frequency, not the data rate. */
+       sys_info->freq_ddrbus = sys_info->freq_systembus;
 
 #ifdef CONFIG_DDR_CLK_FREQ
        {
                u32 ddr_ratio = ((gur->porpllsr) & MPC85xx_PORPLLSR_DDR_RATIO)
                        >> MPC85xx_PORPLLSR_DDR_RATIO_SHIFT;
                if (ddr_ratio != 0x7)
-                       sysInfo->freqDDRBus = ddr_ratio * CONFIG_DDR_CLK_FREQ;
+                       sys_info->freq_ddrbus = ddr_ratio * CONFIG_DDR_CLK_FREQ;
        }
 #endif
 
 #ifdef CONFIG_QE
 #if defined(CONFIG_P1012) || defined(CONFIG_P1021) || defined(CONFIG_P1025)
-       sysInfo->freqQE =  sysInfo->freqSystemBus;
+       sys_info->freq_qe =  sys_info->freq_systembus;
 #else
        qe_ratio = ((gur->porpllsr) & MPC85xx_PORPLLSR_QE_RATIO)
                        >> MPC85xx_PORPLLSR_QE_RATIO_SHIFT;
-       sysInfo->freqQE = qe_ratio * CONFIG_SYS_CLK_FREQ;
+       sys_info->freq_qe = qe_ratio * CONFIG_SYS_CLK_FREQ;
 #endif
 #endif
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-               sysInfo->freqFMan[0] = sysInfo->freqSystemBus;
+               sys_info->freq_fman[0] = sys_info->freq_systembus;
 #endif
 
 #endif /* CONFIG_FSL_CORENET */
@@ -350,10 +350,10 @@ void get_sys_info (sys_info_t * sysInfo)
                 */
                lcrr_div *= 2;
 #endif
-               sysInfo->freqLocalBus = sysInfo->freqSystemBus / lcrr_div;
+               sys_info->freq_localbus = sys_info->freq_systembus / lcrr_div;
        } else {
                /* In case anyone cares what the unknown value is */
-               sysInfo->freqLocalBus = lcrr_div;
+               sys_info->freq_localbus = lcrr_div;
        }
 #endif
 
@@ -361,7 +361,7 @@ void get_sys_info (sys_info_t * sysInfo)
        ccr = in_be32(&ifc_regs->ifc_ccr);
        ccr = ((ccr & IFC_CCR_CLK_DIV_MASK) >> IFC_CCR_CLK_DIV_SHIFT) + 1;
 
-       sysInfo->freqLocalBus = sysInfo->freqSystemBus / ccr;
+       sys_info->freq_localbus = sys_info->freq_systembus / ccr;
 #endif
 }
 
@@ -382,13 +382,13 @@ int get_clocks (void)
        dfbrg = (sccr & SCCR_DFBRG_MSK) >> SCCR_DFBRG_SHIFT;
 #endif
        get_sys_info (&sys_info);
-       gd->cpu_clk = sys_info.freqProcessor[0];
-       gd->bus_clk = sys_info.freqSystemBus;
-       gd->mem_clk = sys_info.freqDDRBus;
-       gd->arch.lbc_clk = sys_info.freqLocalBus;
+       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_localbus;
 
 #ifdef CONFIG_QE
-       gd->arch.qe_clk = sys_info.freqQE;
+       gd->arch.qe_clk = sys_info.freq_qe;
        gd->arch.brg_clk = gd->arch.qe_clk / 2;
 #endif
        /*
@@ -400,7 +400,7 @@ int get_clocks (void)
         */
 #if defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \
        defined(CONFIG_MPC8560) || defined(CONFIG_MPC8555)
-       gd->arch.i2c1_clk = sys_info.freqSystemBus;
+       gd->arch.i2c1_clk = sys_info.freq_systembus;
 #elif defined(CONFIG_MPC8544)
        /*
         * On the 8544, the I2C clock is the same as the SEC clock.  This can be
@@ -410,12 +410,12 @@ int get_clocks (void)
         * PORDEVSR2_SEC_CFG bit is 0 on all 85xx boards that are not an 8544.
         */
        if (gur->pordevsr2 & MPC85xx_PORDEVSR2_SEC_CFG)
-               gd->arch.i2c1_clk = sys_info.freqSystemBus / 3;
+               gd->arch.i2c1_clk = sys_info.freq_systembus / 3;
        else
-               gd->arch.i2c1_clk = sys_info.freqSystemBus / 2;
+               gd->arch.i2c1_clk = sys_info.freq_systembus / 2;
 #else
        /* Most 85xx SOCs use CCB/2, so this is the default behavior. */
-       gd->arch.i2c1_clk = sys_info.freqSystemBus / 2;
+       gd->arch.i2c1_clk = sys_info.freq_systembus / 2;
 #endif
        gd->arch.i2c2_clk = gd->arch.i2c1_clk;
 
@@ -429,7 +429,7 @@ int get_clocks (void)
 #endif /* defined(CONFIG_FSL_ESDHC) */
 
 #if defined(CONFIG_CPM2)
-       gd->arch.vco_out = 2*sys_info.freqSystemBus;
+       gd->arch.vco_out = 2*sys_info.freq_systembus;
        gd->arch.cpm_clk = gd->arch.vco_out / 2;
        gd->arch.scc_clk = gd->arch.vco_out / 4;
        gd->arch.brg_clk = gd->arch.vco_out / (1 << (2 * (dfbrg + 1)));
index cfc3a60d2f8f2e6b94f9ae49ba1ead56afa9ffb2..ad57a9cfa73453b8b80bd921392415edb2329389 100644 (file)
@@ -33,7 +33,8 @@
 #define MINIMAL_SPL
 #endif
 
-#if !defined(CONFIG_SPL) && !defined(CONFIG_SYS_RAMBOOT) && !defined(CONFIG_SECURE_BOOT)
+#if !defined(CONFIG_SPL) && !defined(CONFIG_SYS_RAMBOOT) && \
+       !defined(CONFIG_SECURE_BOOT) && !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
 #define NOR_BOOT
 #endif
 
index e173cb5f9572cf3346ce004993f30084695dd64d..54c1cfd2c10cf5fe2e413a9e2c55f8c009d88cde 100644 (file)
@@ -65,8 +65,8 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
 #endif
 
 struct srio_liodn_id_table srio_liodn_tbl[] = {
-       SET_SRIO_LIODN_1(1, 307),
-       SET_SRIO_LIODN_1(2, 387),
+       SET_SRIO_LIODN_BASE(1, 307),
+       SET_SRIO_LIODN_BASE(2, 387),
 };
 int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
 
@@ -159,10 +159,10 @@ int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl);
 #ifdef CONFIG_SYS_DPAA_RMAN
 struct liodn_id_table rman_liodn_tbl[] = {
        /* Set RMan block 0-3 liodn offset */
-       SET_RMAN_LIODN(0, 678),
-       SET_RMAN_LIODN(1, 679),
-       SET_RMAN_LIODN(2, 680),
-       SET_RMAN_LIODN(3, 681),
+       SET_RMAN_LIODN(0, 6),
+       SET_RMAN_LIODN(1, 7),
+       SET_RMAN_LIODN(2, 8),
+       SET_RMAN_LIODN(3, 9),
 };
 int rman_liodn_tbl_sz = ARRAY_SIZE(rman_liodn_tbl);
 #endif
index ed88602c3158301b73c2a2cc9f910bea1565fcc8..ff55e3c357c3371b9f078d3da40550b3710a7cd4 100644 (file)
@@ -106,25 +106,25 @@ static const struct serdes_config serdes2_cfg_tbl[] = {
                SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
                SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
        {38, {NONE, NONE, QSGMII_FM2_B, NONE,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {40, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
                SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {46, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
                SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {48, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
                SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {50, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
                XAUI_FM2_MAC9, XAUI_FM2_MAC9,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {52, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
                HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {54, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
                HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
-               NONE, NONE, QSGMII_FM1_A, NONE}},
+               NONE, NONE, QSGMII_FM2_A, NONE} },
        {56, {XFI_FM1_MAC9, XFI_FM1_MAC10,
                XFI_FM2_MAC10, XFI_FM2_MAC9,
                SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
index da3c345d6f787bf641fd38c91055f98f604efdc0..8748ecd1440d1ea53811d4a4e937c39428f9fc3c 100644 (file)
@@ -39,7 +39,8 @@ void init_tlbs(void)
        return ;
 }
 
-#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)
+#if !defined(CONFIG_NAND_SPL) && \
+       (!defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL_INIT_MINIMAL))
 void read_tlbcam_entry(int idx, u32 *valid, u32 *tsize, unsigned long *epn,
                       phys_addr_t *rpn)
 {
index 08188d75e5f12cf5a64f4f40aeae4066186311c6..85ec74ba94adbfeedef1e339d10f06a3ded6d034 100644 (file)
@@ -44,6 +44,11 @@ SECTIONS
        }
        _edata  =  .;
 
+       . = .;
+       __start___ex_table = .;
+       __ex_table : { *(__ex_table) }
+       __stop___ex_table = .;
+
        . = ALIGN(8);
        __init_begin = .;
        __init_end = .;
index d6b28dd077c5a2740905479fd5f72c546af11cc0..30518544dd65827e723d054785b1edcc8a3c0017 100644 (file)
@@ -72,21 +72,21 @@ checkcpu(void)
        get_sys_info(&sysinfo);
 
        puts("Clock Configuration:\n");
-       printf("       CPU:%-4s MHz, ", strmhz(buf1, sysinfo.freqProcessor));
-       printf("MPX:%-4s MHz\n", strmhz(buf1, sysinfo.freqSystemBus));
+       printf("       CPU:%-4s MHz, ", strmhz(buf1, sysinfo.freq_processor));
+       printf("MPX:%-4s MHz\n", strmhz(buf1, sysinfo.freq_systembus));
        printf("       DDR:%-4s MHz (%s MT/s data rate), ",
-               strmhz(buf1, sysinfo.freqSystemBus / 2),
-               strmhz(buf2, sysinfo.freqSystemBus));
+               strmhz(buf1, sysinfo.freq_systembus / 2),
+               strmhz(buf2, sysinfo.freq_systembus));
 
-       if (sysinfo.freqLocalBus > LCRR_CLKDIV) {
-               printf("LBC:%-4s MHz\n", strmhz(buf1, sysinfo.freqLocalBus));
+       if (sysinfo.freq_localbus > LCRR_CLKDIV) {
+               printf("LBC:%-4s MHz\n", strmhz(buf1, sysinfo.freq_localbus));
        } else {
                printf("LBC: unknown (LCRR[CLKDIV] = 0x%02lx)\n",
-                      sysinfo.freqLocalBus);
+                      sysinfo.freq_localbus);
        }
 
-       puts("L1:    D-cache 32 KB enabled\n");
-       puts("       I-cache 32 KB enabled\n");
+       puts("L1:    D-cache 32 KiB enabled\n");
+       puts("       I-cache 32 KiB enabled\n");
 
        puts("L2:    ");
        if (get_l2cr() & 0x80000000) {
@@ -95,7 +95,7 @@ checkcpu(void)
 #elif defined(CONFIG_MPC8641)
                puts("512");
 #endif
-               puts(" KB enabled\n");
+               puts(" KiB enabled\n");
        } else {
                puts("Disabled\n");
        }
@@ -131,7 +131,7 @@ get_tbclk(void)
        sys_info_t sys_info;
 
        get_sys_info(&sys_info);
-       return (sys_info.freqSystemBus + 3L) / 4L;
+       return (sys_info.freq_systembus + 3L) / 4L;
 }
 
 
index 92ba26dc8ea1708b5d9842b42ef2a36854360121..33a91f9f78e7ad0a497738ff8dac2302c8290de3 100644 (file)
@@ -15,7 +15,7 @@
 #endif
 
 void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
-                            unsigned int ctrl_num)
+                            unsigned int ctrl_num, int step)
 {
        unsigned int i;
        volatile ccsr_ddr_t *ddr;
index ea366ab9e4c18dd7163ad1e2a681a434e67c8823..854d02b5c49211ea526329202efd124978bb9bff 100644 (file)
@@ -19,7 +19,7 @@ DECLARE_GLOBAL_DATA_PTR;
 /* used in some defintiions of CONFIG_SYS_CLK_FREQ */
 extern unsigned long get_board_sys_clk(unsigned long dummy);
 
-void get_sys_info(sys_info_t *sysInfo)
+void get_sys_info(sys_info_t *sys_info)
 {
        volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
        volatile ccsr_gur_t *gur = &immap->im_gur;
@@ -31,7 +31,7 @@ void get_sys_info(sys_info_t *sysInfo)
 
        switch (plat_ratio) {
        case 0x0:
-               sysInfo->freqSystemBus = 16 * CONFIG_SYS_CLK_FREQ;
+               sys_info->freq_systembus = 16 * CONFIG_SYS_CLK_FREQ;
                break;
        case 0x02:
        case 0x03:
@@ -43,10 +43,10 @@ void get_sys_info(sys_info_t *sysInfo)
        case 0x0a:
        case 0x0c:
        case 0x10:
-               sysInfo->freqSystemBus = plat_ratio * CONFIG_SYS_CLK_FREQ;
+               sys_info->freq_systembus = plat_ratio * CONFIG_SYS_CLK_FREQ;
                break;
        default:
-               sysInfo->freqSystemBus = 0;
+               sys_info->freq_systembus = 0;
                break;
        }
 
@@ -55,25 +55,26 @@ void get_sys_info(sys_info_t *sysInfo)
 
        switch (e600_ratio) {
        case 0x10:
-               sysInfo->freqProcessor = 2 * sysInfo->freqSystemBus;
+               sys_info->freq_processor = 2 * sys_info->freq_systembus;
                break;
        case 0x19:
-               sysInfo->freqProcessor = 5 * sysInfo->freqSystemBus / 2;
+               sys_info->freq_processor = 5 * sys_info->freq_systembus / 2;
                break;
        case 0x20:
-               sysInfo->freqProcessor = 3 * sysInfo->freqSystemBus;
+               sys_info->freq_processor = 3 * sys_info->freq_systembus;
                break;
        case 0x39:
-               sysInfo->freqProcessor = 7 * sysInfo->freqSystemBus / 2;
+               sys_info->freq_processor = 7 * sys_info->freq_systembus / 2;
                break;
        case 0x28:
-               sysInfo->freqProcessor = 4 * sysInfo->freqSystemBus;
+               sys_info->freq_processor = 4 * sys_info->freq_systembus;
                break;
        case 0x1d:
-               sysInfo->freqProcessor = 9 * sysInfo->freqSystemBus / 2;
+               sys_info->freq_processor = 9 * sys_info->freq_systembus / 2;
                break;
        default:
-               sysInfo->freqProcessor = e600_ratio + sysInfo->freqSystemBus;
+               sys_info->freq_processor = e600_ratio +
+                                               sys_info->freq_systembus;
                break;
        }
 
@@ -84,10 +85,11 @@ void get_sys_info(sys_info_t *sysInfo)
        lcrr_div = in_be32(&immap->im_lbc.lcrr) & LCRR_CLKDIV;
 #endif
        if (lcrr_div == 2 || lcrr_div == 4 || lcrr_div == 8) {
-               sysInfo->freqLocalBus = sysInfo->freqSystemBus / (lcrr_div * 2);
+               sys_info->freq_localbus = sys_info->freq_systembus
+                                                       / (lcrr_div * 2);
        } else {
                /* In case anyone cares what the unknown value is */
-               sysInfo->freqLocalBus = lcrr_div;
+               sys_info->freq_localbus = lcrr_div;
        }
 }
 
@@ -102,9 +104,9 @@ int get_clocks(void)
        sys_info_t sys_info;
 
        get_sys_info(&sys_info);
-       gd->cpu_clk = sys_info.freqProcessor;
-       gd->bus_clk = sys_info.freqSystemBus;
-       gd->arch.lbc_clk = sys_info.freqLocalBus;
+       gd->cpu_clk = sys_info.freq_processor;
+       gd->bus_clk = sys_info.freq_systembus;
+       gd->arch.lbc_clk = sys_info.freq_localbus;
 
        /*
         * The base clock for I2C depends on the actual SOC.  Unfortunately,
@@ -114,9 +116,9 @@ int get_clocks(void)
         * AN2919.
         */
 #ifdef CONFIG_MPC8610
-       gd->arch.i2c1_clk = sys_info.freqSystemBus;
+       gd->arch.i2c1_clk = sys_info.freq_systembus;
 #else
-       gd->arch.i2c1_clk = sys_info.freqSystemBus / 2;
+       gd->arch.i2c1_clk = sys_info.freq_systembus / 2;
 #endif
        gd->arch.i2c2_clk = gd->arch.i2c1_clk;
 
@@ -138,7 +140,7 @@ ulong get_bus_freq(ulong dummy)
        sys_info_t sys_info;
 
        get_sys_info(&sys_info);
-       val = sys_info.freqSystemBus;
+       val = sys_info.freq_systembus;
 
        return val;
 }
index 1550045e6c79d3fcd1f1d77e52fa1b344eba8611..5c96b5fe16e7e6bd2d4e0d9b9190c5c31a13fd7a 100644 (file)
@@ -136,10 +136,8 @@ static int check_CPU (long clock, uint pvr, uint immr)
 #else
        printf (" at %s MHz: ", strmhz (buf, clock));
 #endif
-       printf ("%u kB I-Cache %u kB D-Cache",
-               checkicache () >> 10,
-               checkdcache () >> 10
-       );
+       print_size(checkicache(), " I-Cache ");
+       print_size(checkdcache(), " D-Cache");
 
        /* do we have a FEC (860T/P or 852/859/866/885)? */
 
@@ -204,10 +202,10 @@ static int check_CPU (long clock, uint pvr, uint immr)
                printf ("unknown MPC857 (0x%08x)", k);
 #endif
 
-       printf (" at %s MHz:", strmhz (buf, clock));
+       printf(" at %s MHz: ", strmhz(buf, clock));
 
-       printf (" %u kB I-Cache", checkicache () >> 10);
-       printf (" %u kB D-Cache", checkdcache () >> 10);
+       print_size(checkicache(), " I-Cache ");
+       print_size(checkdcache(), " D-Cache");
 
        /* lets check and see if we're running on a 862T (or P?) */
 
@@ -265,10 +263,10 @@ static int check_CPU (long clock, uint pvr, uint immr)
        if (suf)
                printf ("PPC823ZTnn%s", suf);
 
-       printf (" at %s MHz:", strmhz (buf, clock));
+       printf(" at %s MHz: ", strmhz(buf, clock));
 
-       printf (" %u kB I-Cache", checkicache () >> 10);
-       printf (" %u kB D-Cache", checkdcache () >> 10);
+       print_size(checkicache(), " I-Cache ");
+       print_size(checkdcache(), " D-Cache");
 
        /* lets check and see if we're running on a 860T (or P?) */
 
@@ -321,10 +319,10 @@ static int check_CPU (long clock, uint pvr, uint immr)
        default:
                printf ("unknown MPC850 (0x%08x)", k);
        }
-       printf (" at %s MHz:", strmhz (buf, clock));
+       printf(" at %s MHz: ", strmhz(buf, clock));
 
-       printf (" %u kB I-Cache", checkicache () >> 10);
-       printf (" %u kB D-Cache", checkdcache () >> 10);
+       print_size(checkicache(), " I-Cache ");
+       print_size(checkdcache(), " D-Cache");
 
        /* lets check and see if we're running on a 850T (or P?) */
 
index 02cd0debc2831cce3f330382148a76cfd4c381e3..fc351585bef8c989fe717205260fdea4febd24bd 100644 (file)
@@ -109,7 +109,6 @@ DECLARE_GLOBAL_DATA_PTR;
 /************************************************************************/
 
 #include <video_font.h>                        /* Get font data, width and height */
-#include <video_font_data.h>
 
 #ifdef CONFIG_VIDEO_LOGO
 #include <video_logo.h>                        /* Get logo data, width and height */
@@ -1177,7 +1176,7 @@ static void *video_logo (void)
 #ifndef CONFIG_FADS            /* all normal boards */
        /* leave one blank line */
 
-       sprintf (info, "MPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash",
+       sprintf(info, "MPC823 CPU at %s MHz, %ld MiB RAM, %ld MiB Flash",
                strmhz(temp, gd->cpu_clk),
                gd->ram_size >> 20,
                gd->bd->bi_flashsize >> 20 );
@@ -1188,7 +1187,7 @@ static void *video_logo (void)
        video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y + VIDEO_FONT_HEIGHT,
                                          info);
 
-       sprintf (info, "2MB FLASH - 8MB DRAM - 4MB SRAM");
+       sprintf(info, "2MiB FLASH - 8MiB DRAM - 4MiB SRAM");
        video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y + VIDEO_FONT_HEIGHT * 2,
                                          info);
 #endif
index 7369582ef1cbd208c142ee50d624ad21f8414da8..c67be4ef297ddde488d70e64f018767341bc4602 100644 (file)
@@ -79,6 +79,9 @@ static struct cpu_type cpu_type_list[] = {
        CPU_TYPE_ENTRY(BSC9131, 9131, 1),
        CPU_TYPE_ENTRY(BSC9132, 9132, 2),
        CPU_TYPE_ENTRY(BSC9232, 9232, 2),
+       CPU_TYPE_ENTRY(C291, C291, 1),
+       CPU_TYPE_ENTRY(C292, C292, 1),
+       CPU_TYPE_ENTRY(C293, C293, 1),
 #elif defined(CONFIG_MPC86xx)
        CPU_TYPE_ENTRY(8610, 8610, 1),
        CPU_TYPE_ENTRY(8641, 8641, 2),
index ff5812df55fbb0b925f7b034e2119b24d2d35165..242eb47ac34dbf0cc6e08efc1c59ea0a658ddfe9 100644 (file)
@@ -364,7 +364,7 @@ static void set_timing_cfg_3(fsl_ddr_cfg_regs_t *ddr,
 
        ddr->timing_cfg_3 = (0
                | ((ext_pretoact & 0x1) << 28)
-               | ((ext_acttopre & 0x2) << 24)
+               | ((ext_acttopre & 0x3) << 24)
                | ((ext_acttorw & 0x1) << 22)
                | ((ext_refrec & 0x1F) << 16)
                | ((ext_caslat & 0x3) << 12)
@@ -681,6 +681,7 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
        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 */
+       unsigned int x4_en = 0;         /* x4 DRAM enable */
        unsigned int obc_cfg;           /* On-The-Fly Burst Chop Cfg */
        unsigned int ap_en;             /* Address Parity Enable */
        unsigned int d_init;            /* DRAM data initialization */
@@ -725,6 +726,8 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
                ap_en = 0;
        }
 
+       x4_en = popts->x4_en ? 1 : 0;
+
 #if defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
        /* Use the DDR controller to auto initialize memory. */
        d_init = popts->ECC_init_using_memctl;
@@ -747,6 +750,7 @@ static void set_ddr_sdram_cfg_2(fsl_ddr_cfg_regs_t *ddr,
                | ((odt_cfg & 0x3) << 21)
                | ((num_pr & 0xf) << 12)
                | ((slow & 1) << 11)
+               | (x4_en << 10)
                | (qd_en << 9)
                | (unq_mrs_en << 8)
                | ((obc_cfg & 0x1) << 6)
@@ -1585,8 +1589,8 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
                                | ((ea & 0xFFF) << 0)   /* ending address MSB */
                                );
                } else {
-                       debug("FSLDDR: setting bnds to 0 for inactive CS\n");
-                       ddr->cs[i].bnds = 0;
+                       /* setting bnds to 0xffffffff for inactive CS */
+                       ddr->cs[i].bnds = 0xffffffff;
                }
 
                debug("FSLDDR: cs[%d]_bnds = 0x%08x\n", i, ddr->cs[i].bnds);
@@ -1638,5 +1642,10 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
 
        set_ddr_sdram_rcw(ddr, popts, common_dimm);
 
+#ifdef CONFIG_SYS_FSL_DDR_EMU
+       /* disble DDR training for emulator */
+       ddr->debug[2] = 0x00000400;
+       ddr->debug[4] = 0xff800000;
+#endif
        return check_fsl_memctl_config_regs(ddr);
 }
index 4dd55fc4c3f923ea3bf942346cf41380edc1b8d6..c173a5a74bc036cfcddac70f8fed50fa3f29a6f9 100644 (file)
@@ -96,7 +96,7 @@ unsigned int check_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr);
 
 /* processor specific function */
 void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
-                                  unsigned int ctrl_num);
+                                  unsigned int ctrl_num, int step);
 
 /* board specific function */
 int fsl_ddr_get_dimm_params(dimm_params_t *pdimm,
index 3e7c269e4025ab09de22c4901b1bcdce71192390..b67158c0ffae8284e0863513d345d02d4f612116 100644 (file)
@@ -129,6 +129,7 @@ ddr_compute_dimm_parameters(const ddr3_spd_eeprom_t *spd,
                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;
index 1ed6c77150d7323f583158cff4f35cc03183649d..260fce577f33617f9daac1892f27cbb80e4030a0 100644 (file)
@@ -205,6 +205,7 @@ static void fsl_ddr_dimm_parameters_edit(fsl_ddr_info_t *pinfo,
                DIMM_PARM(primary_sdram_width),
                DIMM_PARM(ec_sdram_width),
                DIMM_PARM(registered_dimm),
+               DIMM_PARM(device_width),
 
                DIMM_PARM(n_row_addr),
                DIMM_PARM(n_col_addr),
@@ -263,6 +264,7 @@ static void print_dimm_parameters(const dimm_params_t *pdimm)
                DIMM_PARM(primary_sdram_width),
                DIMM_PARM(ec_sdram_width),
                DIMM_PARM(registered_dimm),
+               DIMM_PARM(device_width),
 
                DIMM_PARM(n_row_addr),
                DIMM_PARM(n_col_addr),
@@ -443,6 +445,7 @@ static void fsl_ddr_options_edit(fsl_ddr_info_t *pinfo,
                CTRL_OPTIONS(twoT_en),
                CTRL_OPTIONS(threeT_en),
                CTRL_OPTIONS(ap_en),
+               CTRL_OPTIONS(x4_en),
                CTRL_OPTIONS(bstopre),
                CTRL_OPTIONS(wrlvl_override),
                CTRL_OPTIONS(wrlvl_sample),
@@ -687,6 +690,7 @@ static void print_memctl_options(const memctl_options_t *popts)
                CTRL_OPTIONS(threeT_en),
                CTRL_OPTIONS(registered_dimm_en),
                CTRL_OPTIONS(ap_en),
+               CTRL_OPTIONS(x4_en),
                CTRL_OPTIONS(bstopre),
                CTRL_OPTIONS(wrlvl_override),
                CTRL_OPTIONS(wrlvl_sample),
index e958e138dda6c613f747a2b806dc1d58476a83a8..56128a7b962ca062c0eab7e878dde4c4bada8041 100644 (file)
@@ -218,12 +218,16 @@ compute_lowest_common_dimm_parameters(const dimm_params_t *dimm_params,
                if (dimm_params[i].n_ranks) {
                        if (dimm_params[i].registered_dimm) {
                                temp1 = 1;
+#ifndef CONFIG_SPL_BUILD
                                printf("Detected RDIMM %s\n",
                                        dimm_params[i].mpart);
+#endif
                        } else {
                                temp2 = 1;
+#ifndef CONFIG_SPL_BUILD
                                printf("Detected UDIMM %s\n",
                                        dimm_params[i].mpart);
+#endif
                        }
                }
        }
index 7a8636de166ac4ca6e2c69eda2faa7fc2a65d6f2..842bf1989e3edcca59e879f5e03da6f3b4a96162 100644 (file)
@@ -25,10 +25,6 @@ void fsl_ddr_set_lawbar(
                unsigned int ctrl_num);
 void fsl_ddr_set_intl3r(const unsigned int granule_size);
 
-/* processor specific function */
-extern void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
-                                  unsigned int ctrl_num);
-
 #if defined(SPD_EEPROM_ADDRESS) || \
     defined(SPD_EEPROM_ADDRESS1) || defined(SPD_EEPROM_ADDRESS2) || \
     defined(SPD_EEPROM_ADDRESS3) || defined(SPD_EEPROM_ADDRESS4)
@@ -365,9 +361,11 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
 {
        unsigned int i, j;
        unsigned long long total_mem = 0;
+       int assert_reset;
 
        fsl_ddr_cfg_regs_t *ddr_reg = pinfo->fsl_ddr_config_reg;
        common_timing_params_t *timing_params = pinfo->common_timing_params;
+       assert_reset = board_need_mem_reset();
 
        /* data bus width capacity adjust shift amount */
        unsigned int dbw_capacity_adjust[CONFIG_NUM_DDR_CONTROLLERS];
@@ -462,7 +460,20 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
                                        timing_params[i].all_DIMMs_registered,
                                        &pinfo->memctl_opts[i],
                                        pinfo->dimm_params[i], i);
+                       /*
+                        * For RDIMMs, JEDEC spec requires clocks to be stable
+                        * before reset signal is deasserted. For the boards
+                        * using fixed parameters, this function should be
+                        * be called from board init file.
+                        */
+                       if (timing_params[i].all_DIMMs_registered)
+                               assert_reset = 1;
                }
+               if (assert_reset) {
+                       debug("Asserting mem reset\n");
+                       board_assert_mem_reset();
+               }
+
        case STEP_ASSIGN_ADDRESSES:
                /* STEP 5:  Assign addresses to chip selects */
                check_interleaving_options(pinfo);
@@ -504,7 +515,13 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
                                fsl_ddr_cfg_regs_t *reg = &ddr_reg[i];
                                if (reg->cs[j].config & 0x80000000) {
                                        unsigned int end;
-                                       end = reg->cs[j].bnds & 0xFFF;
+                                       /*
+                                        * 0xfffffff is a special value we put
+                                        * for unused bnds
+                                        */
+                                       if (reg->cs[j].bnds == 0xffffffff)
+                                               continue;
+                                       end = reg->cs[j].bnds & 0xffff;
                                        if (end > max_end) {
                                                max_end = end;
                                        }
@@ -531,6 +548,7 @@ phys_size_t fsl_ddr_sdram(void)
        unsigned int law_memctl = LAW_TRGT_IF_DDR_1;
        unsigned long long total_memory;
        fsl_ddr_info_t info;
+       int deassert_reset;
 
        /* Reset info structure. */
        memset(&info, 0, sizeof(fsl_ddr_info_t));
@@ -559,7 +577,21 @@ phys_size_t fsl_ddr_sdram(void)
                }
        }
 
-       /* Program configuration registers. */
+       /*
+        * Program configuration registers.
+        * JEDEC specs requires clocks to be stable before deasserting reset
+        * for RDIMMs. Clocks start after chip select is enabled and clock
+        * control register is set. During step 1, all controllers have their
+        * registers set but not enabled. Step 2 proceeds after deasserting
+        * reset through board FPGA or GPIO.
+        * For non-registered DIMMs, initialization can go through but it is
+        * also OK to follow the same flow.
+        */
+       deassert_reset = board_need_mem_reset();
+       for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
+               if (info.common_timing_params[i].all_DIMMs_registered)
+                       deassert_reset = 1;
+       }
        for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
                debug("Programming controller %u\n", i);
                if (info.common_timing_params[i].ndimms_present == 0) {
@@ -567,8 +599,22 @@ phys_size_t fsl_ddr_sdram(void)
                                        "skipping programming\n", i);
                        continue;
                }
-
-               fsl_ddr_set_memctl_regs(&(info.fsl_ddr_config_reg[i]), i);
+               /*
+                * The following call with step = 1 returns before enabling
+                * the controller. It has to finish with step = 2 later.
+                */
+               fsl_ddr_set_memctl_regs(&(info.fsl_ddr_config_reg[i]), i,
+                                       deassert_reset ? 1 : 0);
+       }
+       if (deassert_reset) {
+               /* Use board FPGA or GPIO to deassert reset signal */
+               debug("Deasserting mem reset\n");
+               board_deassert_mem_reset();
+               for (i = 0; i < CONFIG_NUM_DDR_CONTROLLERS; i++) {
+                       /* Call with step = 2 to continue initialization */
+                       fsl_ddr_set_memctl_regs(&(info.fsl_ddr_config_reg[i]),
+                                               i, 2);
+               }
        }
 
        /* program LAWs */
@@ -637,7 +683,8 @@ phys_size_t fsl_ddr_sdram(void)
 #if !defined(CONFIG_PHYS_64BIT)
        /* Check for 4G or more.  Bad. */
        if (total_memory >= (1ull << 32)) {
-               printf("Detected %lld MB of memory\n", total_memory >> 20);
+               puts("Detected ");
+               print_size(total_memory, " of memory\n");
                printf("       This U-Boot only supports < 4G of DDR\n");
                printf("       You could rebuild it with CONFIG_PHYS_64BIT\n");
                printf("       "); /* re-align to match init_func_ram print */
index 26369e09969a2856b76e0b6c66920907ffc9eb83..30cdca497e0d00dda44f665fde42cf14923e8fa0 100644 (file)
@@ -700,6 +700,8 @@ unsigned int populate_memctl_options(int all_DIMMs_registered,
        }
 #endif
 
+       popts->x4_en = (pdimm[0].device_width == 4) ? 1 : 0;
+
        /* Choose burst length. */
 #if defined(CONFIG_FSL_DDR3)
 #if defined(CONFIG_E500MC)
index 89966e0d2f79bca056eac532acc26b7f998e4367..eb7cbbce7e2f47c45bf503a66f48ee88cf426469 100644 (file)
@@ -121,11 +121,8 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
 {
        const char *modes[] = { "host", "peripheral", "otg" };
        const char *phys[] = { "ulpi", "utmi" };
-       const char *mode = NULL;
-       const char *phy_type = NULL;
        const char *dr_mode_type = NULL;
        const char *dr_phy_type = NULL;
-       char usb1_defined = 0;
        int usb_mode_off = -1;
        int usb_phy_off = -1;
        char str[5];
@@ -159,12 +156,6 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
                        dr_mode_type = modes[mode_idx];
                        dr_phy_type = phys[phy_idx];
 
-                       /* use usb_dr_mode and usb_phy_type if
-                          usb1_defined = 0; these variables are to
-                          be deprecated */
-                       if (!strcmp(str, "usb1"))
-                               usb1_defined = 1;
-
                        if (mode_idx < 0 && phy_idx < 0) {
                                printf("WARNING: invalid phy or mode\n");
                                return;
@@ -183,19 +174,6 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
                if (usb_phy_off < 0)
                        return;
        }
-
-       if (!usb1_defined) {
-               int usb_off = -1;
-               mode = getenv("usb_dr_mode");
-               phy_type = getenv("usb_phy_type");
-               if (mode || phy_type) {
-                       printf("WARNING: usb_dr_mode and usb_phy_type "
-                               "are to be deprecated soon. Use "
-                               "hwconfig to set these values instead!!\n");
-                       fdt_fixup_usb_mode_phy_type(blob, mode,
-                               phy_type, usb_off);
-               }
-       }
 }
 #endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */
 
index 89a561e0aca3b5ed87ca745799f649546d3d976e..a401083107794cc3dd218cf88e7edc58c7858063 100644 (file)
@@ -76,7 +76,8 @@ void disable_law(u8 idx)
        return;
 }
 
-#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)
+#if !defined(CONFIG_NAND_SPL) && \
+       (!defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL_INIT_MINIMAL))
 static int get_law_entry(u8 i, struct law_entry *e)
 {
        u32 lawar;
@@ -106,7 +107,8 @@ int set_next_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
        return idx;
 }
 
-#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)
+#if !defined(CONFIG_NAND_SPL) && \
+       (!defined(CONFIG_SPL_BUILD) || !defined(CONFIG_SPL_INIT_MINIMAL))
 int set_last_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)
 {
        u32 idx;
index 2ca355b1347969cca6ac4b0bd355329c51dd1fc0..5584e0f3e8e99e748aae32236e7c13f6c1c7ef88 100644 (file)
@@ -1,26 +1,5 @@
-/*-----------------------------------------------------------------------------+
- *       This source code is dual-licensed.  You may use it under the terms of
- *       the GNU General Public license version 2, or under the license below.
- *
- *       This source code has been made available to you by IBM on an AS-IS
- *       basis.  Anyone receiving this source is licensed under IBM
- *       copyrights to use it in any way he or she deems fit, including
- *       copying it, modifying it, compiling it, and redistributing it either
- *       with or without modifications.  No license under IBM patents or
- *       patent applications is to be implied by the copyright license.
- *
- *       Any user of this software should understand that IBM cannot provide
- *       technical support for this software and will not be responsible for
- *       any consequences resulting from the use of this software.
- *
- *       Any person who transfers this source code or any derivative work
- *       must include the IBM copyright notice, this paragraph, and the
- *       preceding two paragraphs in the transferred software.
- *
- *       COPYRIGHT   I B M   CORPORATION 1995
- *       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *-----------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------+
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
  *
  *  File Name:   405gp_pci.c
  *
index 1ad19abff6db2138dea7287b6eeecb840418d601..50c28a0d39f07f682e9a005a101c3ac6ce1eb773 100644 (file)
@@ -5,30 +5,7 @@
  * (C) Copyright 2010
  * Stefan Roese, DENX Software Engineering, sr@denx.de.
  *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * This source code is dual-licensed.  You may use it under the terms of the
- * GNU General Public License version 2, or under the license below.
- *
- * This source code has been made available to you by IBM on an AS-IS
- * basis.  Anyone receiving this source is licensed under IBM
- * copyrights to use it in any way he or she deems fit, including
- * copying it, modifying it, compiling it, and redistributing it either
- * with or without modifications.  No license under IBM patents or
- * patent applications is to be implied by the copyright license.
- *
- * Any user of this software should understand that IBM cannot provide
- * technical support for this software and will not be responsible for
- * any consequences resulting from the use of this software.
- *
- * Any person who transfers this source code or any derivative work
- * must include the IBM copyright notice, this paragraph, and the
- * preceding two paragraphs in the transferred software.
- *
- * COPYRIGHT   I B M   CORPORATION 1995
- * LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
  */
 
 #include <common.h>
@@ -40,7 +17,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
+#if defined(CONFIG_405GP) || \
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || defined(CONFIG_440)
 
@@ -91,7 +68,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define UDIV_SUBTRACT  0
 #define UART0_SDR      SDR0_UART0
 #define UART1_SDR      SDR0_UART1
-#else /* CONFIG_405GP || CONFIG_405CR */
+#else /* CONFIG_405GP */
 #define CR0_MASK        0x00001fff
 #define CR0_EXTCLK_ENA  0x000000c0
 #define CR0_UDIV_POS    1
@@ -196,7 +173,7 @@ int get_serial_clock(void)
         * Let's handle this in some #ifdef's for the SoC's.
         */
 
-#if defined(CONFIG_405CR) || defined(CONFIG_405GP)
+#if defined(CONFIG_405GP)
        reg = mfdcr(CPC0_CR0) & ~CR0_MASK;
 #ifdef CONFIG_SYS_EXT_SERIAL_CLOCK
        clk = CONFIG_SYS_EXT_SERIAL_CLOCK;
@@ -223,7 +200,7 @@ int get_serial_clock(void)
 #else
        clk = CONFIG_SYS_BASE_BAUD * 16;
 #endif
-#endif /* CONFIG_405CR */
+#endif
 
 #if defined(CONFIG_405EP)
        {
@@ -288,4 +265,4 @@ int get_serial_clock(void)
 
        return clk;
 }
-#endif /* CONFIG_405GP || CONFIG_405CR */
+#endif /* CONFIG_405GP */
index fe050985e524c18720e0b9a8e216e6e45fd24299..d1fc7f3fc2ae789c7e1181b8cb68161c9c09e864 100644 (file)
@@ -320,25 +320,9 @@ int checkcpu (void)
                puts("405GP Rev. D");
                break;
 
-#ifdef CONFIG_405GP
-       case PVR_405GP_RE: /* 405GP rev E and 405CR rev C have same PVR */
+       case PVR_405GP_RE:
                puts("405GP Rev. E");
                break;
-#endif
-
-       case PVR_405CR_RA:
-               puts("405CR Rev. A");
-               break;
-
-       case PVR_405CR_RB:
-               puts("405CR Rev. B");
-               break;
-
-#ifdef CONFIG_405CR
-       case PVR_405CR_RC: /* 405GP rev E and 405CR rev C have same PVR */
-               puts("405CR Rev. C");
-               break;
-#endif
 
        case PVR_405GPR_RB:
                puts("405GPr Rev. B");
@@ -647,12 +631,12 @@ int checkcpu (void)
 #endif
 
 #if defined(CONFIG_405EP) || defined(CONFIG_405EZ) || defined(CONFIG_405EX)
-       printf ("       16 kB I-Cache 16 kB D-Cache");
+       printf("       16 KiB I-Cache 16 KiB D-Cache");
 #elif defined(CONFIG_440)
-       printf ("       32 kB I-Cache 32 kB D-Cache");
+       printf("       32 KiB I-Cache 32 KiB D-Cache");
 #else
-       printf ("       16 kB I-Cache %d kB D-Cache",
-               ((pvr | 0x00000001) == PVR_405GPR_RB) ? 16 : 8);
+       printf("       16 KiB I-Cache %d KiB D-Cache",
+              ((pvr | 0x00000001) == PVR_405GPR_RB) ? 16 : 8);
 #endif
 
 #endif /* !defined(CONFIG_405) */
index d53d882511fc68e817c1e6b463bfda1afc9973ac..d465dcda8b123ae563fadafcccaf77059815f54c 100644 (file)
@@ -326,7 +326,7 @@ cpu_init_f (void)
         * External Bus Controller (EBC) Setup
         */
 #if (defined(CONFIG_SYS_EBC_PB0AP) && defined(CONFIG_SYS_EBC_PB0CR))
-#if (defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
+#if (defined(CONFIG_405GP) || \
      defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
      defined(CONFIG_405EX) || defined(CONFIG_405))
        /*
index 297155fdafa064b955e53e9832de93bfb0cfb85b..e4a9db6767b674af41b7cb88652678aa59cd27f0 100644 (file)
@@ -1,25 +1,6 @@
-/*-----------------------------------------------------------------------------+
-  |   This source code is dual-licensed.  You may use it under the terms of the
-  |   GNU General Public License version 2, or under the license below.
-  |
-  |      This source code has been made available to you by IBM on an AS-IS
-  |      basis.  Anyone receiving this source is licensed under IBM
-  |      copyrights to use it in any way he or she deems fit, including
-  |      copying it, modifying it, compiling it, and redistributing it either
-  |      with or without modifications.  No license under IBM patents or
-  |      patent applications is to be implied by the copyright license.
-  |
-  |      Any user of this software should understand that IBM cannot provide
-  |      technical support for this software and will not be responsible for
-  |      any consequences resulting from the use of this software.
-  |
-  |      Any person who transfers this source code or any derivative work
-  |      must include the IBM copyright notice, this paragraph, and the
-  |      preceding two paragraphs in the transferred software.
-  |
-  |      COPYRIGHT   I B M   CORPORATION 1995
-  |      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-  +-----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*-----------------------------------------------------------------------------+
   |
   |  File Name:         miiphy.c
index 3345e7334750dd23603f1007b5010d4827a015de..7e077d5a9f28a5216219d79ab6adfc0dd5e69466 100644 (file)
@@ -21,7 +21,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
-#if defined(CONFIG_405GP) || defined(CONFIG_405CR)
+#if defined(CONFIG_405GP)
 
 void get_sys_info (PPC4xx_SYS_INFO * sysInfo)
 {
@@ -1184,7 +1184,7 @@ ulong get_bus_freq (ulong dummy)
 {
        ulong val;
 
-#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
+#if defined(CONFIG_405GP) || \
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || defined(CONFIG_405) || \
     defined(CONFIG_440)
index 57ae1d38206288697e3aedc92ab0d5fcb332bd83..d9d8cbffaa7a1bcc3ca293b3e87197384c95405e 100644 (file)
@@ -6,46 +6,7 @@
  *  Copyright (c) 2008 Nuovation System Designs, LLC
  *    Grant Erickson <gerickson@nuovations.com>
  *
- * 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
- */
-/*------------------------------------------------------------------------------+
- *   This source code is dual-licensed.  You may use it under the terms of the
- *   GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *-------------------------------------------------------------------------------
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
  */
 
 /*
@@ -833,7 +794,7 @@ _start:
 #endif /* CONFIG_440 */
 
 /*****************************************************************************/
-#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
+#if defined(CONFIG_405GP) || \
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || defined(CONFIG_405)
        /*----------------------------------------------------------------------- */
@@ -1103,7 +1064,7 @@ _start:
 
 #endif /* CONFIG_NAND_SPL */
 
-#endif /* CONFIG_405GP || CONFIG_405CR || CONFIG_405 || CONFIG_405EP */
+#endif /* CONFIG_405GP || CONFIG_405 || CONFIG_405EP */
        /*----------------------------------------------------------------------- */
 
 
index 7ed93acdcff564ac5dd8d27c1c396ea3658041e0..15e44de41e66f997ed41f6520f882674f9238469 100644 (file)
@@ -67,6 +67,8 @@
 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
 #define CONFIG_SYS_FSL_RMU
 #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM       2
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x00
 
 #elif defined(CONFIG_MPC8555)
 #define CONFIG_MAX_CPUS                        1
 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
 #define CONFIG_SYS_FSL_ERRATUM_IFC_A002769
 #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549
+#define CONFIG_SYS_FSL_ERRATUM_SEC_A003571
 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x10
 
 /* P1011 is single core version of P1020 */
 #elif defined(CONFIG_P1011)
 #define CONFIG_SYS_FM_MURAM_SIZE       0x10000
 #define CONFIG_SYS_FSL_PCIE_COMPAT     "fsl,qoriq-pcie-v2.2"
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xff600000
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
 
 /* P1024 is lower end variant of P1020 */
 #elif defined(CONFIG_P1024)
 
 #elif defined(CONFIG_PPC_P2041) /* also supports P2040 */
 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
+#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MAX_CPUS                        4
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     2
 #define CONFIG_SYS_FSL_NUM_LAWS                32
 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
 #define CONFIG_SYS_FSL_ERRATUM_A004849
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
 
 #elif defined(CONFIG_PPC_P3041)
 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
+#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MAX_CPUS                        4
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     2
 #define CONFIG_SYS_FSL_NUM_LAWS                32
 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
 #define CONFIG_SYS_FSL_ERRATUM_A004849
+#define CONFIG_SYS_FSL_ERRATUM_A005812
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
 
 #elif defined(CONFIG_PPC_P4080) /* also supports P4040 */
 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
+#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MAX_CPUS                        8
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     4
 #define CONFIG_SYS_FSL_NUM_LAWS                32
 #define CONFIG_SYS_FSL_ERRATUM_A004849
 #define CONFIG_SYS_FSL_ERRATUM_A004580
 #define CONFIG_SYS_P4080_ERRATUM_PCIE_A003
+#define CONFIG_SYS_FSL_ERRATUM_A005812
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
 
 #elif defined(CONFIG_PPC_P5020) /* also supports P5010 */
 #define CONFIG_SYS_PPC64               /* 64-bit core */
 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
+#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MAX_CPUS                        2
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     2
 #define CONFIG_SYS_FSL_NUM_LAWS                32
 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xc0000000
 #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x20
 
 #elif defined(CONFIG_PPC_P5040)
 #define CONFIG_SYS_PPC64
 #define CONFIG_SYS_FSL_QORIQ_CHASSIS1
+#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MAX_CPUS                        4
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     3
 #define CONFIG_SYS_FSL_NUM_LAWS                32
 #define CONFIG_SYS_FSL_ERRATUM_A004510
 #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV 0x10
 #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000
+#define CONFIG_SYS_FSL_ERRATUM_A005812
 
 #elif defined(CONFIG_BSC9131)
 #define CONFIG_MAX_CPUS                        1
 #define CONFIG_TSECV2
 #define CONFIG_SYS_FSL_SEC_COMPAT      4
 #define CONFIG_NUM_DDR_CONTROLLERS     2
+#define CONFIG_SYS_FSL_DSP_DDR_ADDR    0x40000000
+#define CONFIG_SYS_FSL_DSP_M2_RAM_ADDR 0xb0000000
+#define CONFIG_SYS_FSL_DSP_M3_RAM_ADDR 0xc0000000
+#define CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT     0xff600000
 #define CONFIG_SYS_FSL_IFC_BANK_COUNT  3
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xff700000
 #define CONFIG_NAND_FSL_IFC
 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
 #define CONFIG_SYS_FSL_ESDHC_P1010_BROKEN_SDCLK
 #define CONFIG_SYS_FSL_PCIE_COMPAT     "fsl,qoriq-pcie-v2.2"
+#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+#define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
 
 #elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
 #define CONFIG_E6500
 #endif
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     5
 #define CONFIG_SYS_FSL_NUM_LAWS                32
+#define CONFIG_SYS_FSL_SRDS_1
+#define CONFIG_SYS_FSL_SRDS_2
 #define CONFIG_SYS_FSL_SRDS_3
 #define CONFIG_SYS_FSL_SRDS_4
 #define CONFIG_SYS_FSL_SEC_COMPAT      4
 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS  2
 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
+#define CONFIG_SYS_FSL_SRIO_LIODN
 #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
 #define CONFIG_SYS_FSL_ERRATUM_A004468
 #define CONFIG_SYS_FSL_QORIQ_CHASSIS2  /* Freescale Chassis generation 2 */
 #define CONFIG_SYS_FSL_QMAN_V3         /* QMAN version 3 */
 #define CONFIG_SYS_FSL_NUM_LAWS                32
+#define CONFIG_SYS_FSL_SRDS_1
+#define CONFIG_SYS_FSL_SRDS_2
 #define CONFIG_SYS_FSL_SEC_COMPAT      4
 #define CONFIG_SYS_NUM_FMAN            1
 #define CONFIG_SYS_FSL_DDR_VER         FSL_DDR_VER_4_7
 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS  2
 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
+#define CONFIG_SYS_FSL_SRIO_LIODN
 #else
 #define CONFIG_MAX_CPUS                        2
 #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 2
 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xfe000000
 
+#elif defined(CONFIG_PPC_C29X)
+#define CONFIG_MAX_CPUS                        1
+#define CONFIG_FSL_SDHC_V2_3
+#define CONFIG_SYS_FSL_NUM_LAWS                12
+#define CONFIG_SYS_PPC_E500_DEBUG_TLB  3
+#define CONFIG_TSECV2_1
+#define CONFIG_SYS_FSL_SEC_COMPAT      6
+#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
+#define CONFIG_NUM_DDR_CONTROLLERS     1
+#define CONFIG_SYS_FSL_IFC_BANK_COUNT  8
+#define CONFIG_SYS_CCSRBAR_DEFAULT     0xff700000
+
 #else
 #error Processor type not defined for this platform
 #endif
index ffe4db8b8aa9283dcc7a2c85d6a883bdf07bbe90..bd312ad5c58c20f0233d007f9b98c8dd2bf5333b 100644 (file)
@@ -26,6 +26,7 @@ typedef struct dimm_params_s {
        unsigned int primary_sdram_width;
        unsigned int ec_sdram_width;
        unsigned int registered_dimm;
+       unsigned int device_width;      /* x4, x8, x16 components */
 
        /* SDRAM device parameters */
        unsigned int n_row_addr;
index 640d3297d6c89a36725eacd1413911e045d1456c..f4eec82d5d3df0d673a581149738066cb8a8faf4 100644 (file)
@@ -277,6 +277,7 @@ typedef struct memctl_options_s {
        unsigned int mirrored_dimm;
        unsigned int quad_rank_present;
        unsigned int ap_en;     /* address parity enable for RDIMM */
+       unsigned int x4_en;     /* enable x4 devices */
 
        /* Global Timing Parameters */
        unsigned int cas_latency_override;
@@ -330,9 +331,31 @@ extern phys_size_t fsl_ddr_sdram(void);
 extern phys_size_t fsl_ddr_sdram_size(void);
 extern int fsl_use_spd(void);
 extern void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
-                                       unsigned int ctrl_num);
+                                       unsigned int ctrl_num, int step);
 u32 fsl_ddr_get_intl3r(void);
 
+static void __board_assert_mem_reset(void)
+{
+}
+
+static void __board_deassert_mem_reset(void)
+{
+}
+
+void board_assert_mem_reset(void)
+       __attribute__((weak, alias("__board_assert_mem_reset")));
+
+void board_deassert_mem_reset(void)
+       __attribute__((weak, alias("__board_deassert_mem_reset")));
+
+static int __board_need_mem_reset(void)
+{
+       return 0;
+}
+
+int board_need_mem_reset(void)
+       __attribute__((weak, alias("__board_need_mem_reset")));
+
 /*
  * The 85xx boards have a common prototype for fixed_sdram so put the
  * declaration here.
index 4f71341327bae7f5f9da6ce635295f3ea232adf6..d6537fd63315f03b169a6ffea9a52323c9e3603e 100644 (file)
@@ -54,6 +54,7 @@ typedef struct fsl_i2c {
 #define I2C_CR_MTX     0x10
 #define I2C_CR_TXAK    0x08
 #define I2C_CR_RSTA    0x04
+#define I2C_CR_BIT6    0x02    /* required for workaround A004447 */
 #define I2C_CR_BCST    0x01
 
        u8 sr;          /* I2C status register */
index bea1636768d04ec12bba2d7f2a368c71a9d33618..37d3a2246166f1adf6b61a8b23550e0ce90d0844 100644 (file)
@@ -82,7 +82,7 @@ enum law_trgt_if {
 #ifndef CONFIG_MPC8641
        LAW_TRGT_IF_PCIE_1 = 0x02,
 #endif
-#if defined(CONFIG_BSC9131)
+#if defined(CONFIG_BSC9131) || defined(CONFIG_BSC9132)
        LAW_TRGT_IF_OCN_DSP = 0x03,
 #else
 #if !defined(CONFIG_MPC8572) && !defined(CONFIG_P2020)
@@ -92,9 +92,14 @@ enum law_trgt_if {
        LAW_TRGT_IF_LBC = 0x04,
        LAW_TRGT_IF_CCSR = 0x08,
        LAW_TRGT_IF_DSP_CCSR = 0x09,
+       LAW_TRGT_IF_PLATFORM_SRAM = 0x0a,
        LAW_TRGT_IF_DDR_INTRLV = 0x0b,
        LAW_TRGT_IF_RIO = 0x0c,
+#if defined(CONFIG_BSC9132)
+       LAW_TRGT_IF_CLASS_DSP = 0x0d,
+#else
        LAW_TRGT_IF_RIO_2 = 0x0d,
+#endif
        LAW_TRGT_IF_DPAA_SWP_SRAM = 0x0e,
        LAW_TRGT_IF_DDR = 0x0f,
        LAW_TRGT_IF_DDR_2 = 0x16,       /* 2nd controller */
index 3f543d9249154772e10aed27b95b4a0cd0d7889f..44bc88dcecd0ddd8cc20e1b8614888080050ce27 100644 (file)
@@ -29,6 +29,13 @@ struct srio_liodn_id_table {
                + CONFIG_SYS_MPC85xx_GUTS_OFFSET + CONFIG_SYS_CCSRBAR, \
        }
 
+#define SET_SRIO_LIODN_BASE(port, id_a) \
+       { .id = { id_a }, .num_ids = 1, .portid = port, \
+         .reg_offset[0] = offsetof(struct ccsr_rio, liodn) \
+               + (port - 1) * 0x200 \
+               + CONFIG_SYS_FSL_SRIO_ADDR, \
+       }
+
 struct liodn_id_table {
        const char * compat;
        u32 id[2];
index c740da37ce3b346e5d627af9560735fbcf5e5a7b..749411c1016234a0ac7420f3ffb994796f102d83 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007,2009-2011 Freescale Semiconductor, Inc.
+ * Copyright 2007,2009-2012 Freescale Semiconductor, Inc.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #define PEX_IP_BLK_REV_2_2     0x02080202
 #define PEX_IP_BLK_REV_2_3     0x02080203
+#define PEX_IP_BLK_REV_3_0     0x02080300
+
+/* Freescale-specific PCI config registers */
+#define FSL_PCI_PBFR           0x44
+
+#ifdef CONFIG_SYS_FSL_PCI_VER_3_X
+/* Currently only the PCIe capability is used, so hardcode the offset.
+ * if more capabilities need to be justified, the capability link method
+ * should be applied here
+ */
+#define FSL_PCIE_CAP_ID                0x70
+#define PCI_DCR                0x78    /* PCIe Device Control Register */
+#define PCI_DSR                0x7a    /* PCIe Device Status Register */
+#define PCI_LSR                0x82    /* PCIe Link Status Register */
+#define PCI_LCR                0x80    /* PCIe Link Control Register */
+#else
+#define FSL_PCIE_CAP_ID                0x4c
+#define PCI_DCR                0x54    /* PCIe Device Control Register */
+#define PCI_DSR                0x56    /* PCIe Device Status Register */
+#define PCI_LSR                0x5e    /* PCIe Link Status Register */
+#define PCI_LCR                0x5c    /* PCIe Link Control Register */
+#endif
+
+#define FSL_PCIE_CFG_RDY       0x4b0
+#define FSL_PROG_IF_AGENT      0x1
+
+#define PCI_LTSSM      0x404   /* PCIe Link Training, Status State Machine */
+#define  PCI_LTSSM_L0  0x16    /* L0 state */
 
 int fsl_setup_hose(struct pci_controller *hose, unsigned long addr);
 int fsl_is_pci_agent(struct pci_controller *hose);
@@ -149,7 +177,10 @@ typedef struct ccsr_pci {
        u32     perr_cap3;      /* 0xe34 - PCIE Error Capture Register 3 */
        char    res23[200];
        u32     pdb_stat;       /* 0xf00 - PCIE Debug Status */
-       char    res24[252];
+       char    res24[16];
+       u32     pex_csr0;       /* 0xf14 - PEX Control/Status register 0*/
+       u32     pex_csr1;       /* 0xf18 - PEX Control/Status register 1*/
+       char    res25[228];
 } ccsr_fsl_pci_t;
 #define PCIE_CONFIG_PC 0x00020000
 #define PCIE_CONFIG_OB_CK      0x00002000
index 59189adb395f57cc4c25bbb81310268d80ad333c..1106d280583e065ba364989140a031bcec391877 100644 (file)
@@ -90,6 +90,7 @@ void fsl_serdes_init(void);
 #ifdef CONFIG_FSL_CORENET
 #ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
 int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
+enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
 #else
 int serdes_get_first_lane(enum srds_prtcl device);
 #endif
index 81b3322fe6dba842fb734461c1151e0eb19cfae9..3a10d778f1ba01d17271dad9ebb09aef82908fe4 100644 (file)
@@ -1544,6 +1544,18 @@ struct rio_pw {
 };
 #endif
 
+#ifdef CONFIG_SYS_FSL_SRIO_LIODN
+struct rio_liodn {
+       u32     plbr;
+       u8      res0[28];
+       u32     plaor;
+       u8      res1[12];
+       u32     pludr;
+       u32     plldr;
+       u8      res2[456];
+};
+#endif
+
 /* RapidIO Registers */
 struct ccsr_rio {
        struct rio_arch arch;
@@ -1566,6 +1578,10 @@ struct ccsr_rio {
        u8      res7[100];
        struct rio_pw   pw;
 #endif
+#ifdef CONFIG_SYS_FSL_SRIO_LIODN
+       u8      res5[8192];
+       struct rio_liodn liodn[CONFIG_SYS_FSL_SRIO_MAX_PORTS];
+#endif
 };
 #endif
 
@@ -2131,6 +2147,11 @@ typedef struct ccsr_gur {
 #ifdef CONFIG_MPC8536
 #define MPC85xx_PORPLLSR_DDR_RATIO     0x3e000000
 #define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT       25
+#elif defined(CONFIG_PPC_C29X)
+#define MPC85xx_PORPLLSR_DDR_RATIO     0x00003f00
+#define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT       (9 - ((gur->pordevsr2 \
+                                       & MPC85xx_PORDEVSR2_DDR_SPD_0) \
+                                       >> MPC85xx_PORDEVSR2_DDR_SPD_0_SHIFT))
 #else
 #if defined(CONFIG_BSC9131) || defined(CONFIG_BSC9132)
 #define MPC85xx_PORPLLSR_DDR_RATIO     0x00003f00
@@ -2178,6 +2199,9 @@ typedef struct ccsr_gur {
 #elif defined(CONFIG_BSC9132)
 #define MPC85xx_PORDEVSR_IO_SEL                0x00FE0000
 #define MPC85xx_PORDEVSR_IO_SEL_SHIFT  17
+#elif defined(CONFIG_PPC_C29X)
+#define MPC85xx_PORDEVSR_IO_SEL                0x00e00000
+#define MPC85xx_PORDEVSR_IO_SEL_SHIFT  21
 #else
 #define MPC85xx_PORDEVSR_IO_SEL                0x00780000
 #define MPC85xx_PORDEVSR_IO_SEL_SHIFT  19
@@ -2193,6 +2217,10 @@ typedef struct ccsr_gur {
 #define MPC85xx_PORDEVSR_RIO_DEV_ID    0x00000007
        u32     pordbgmsr;      /* POR debug mode status */
        u32     pordevsr2;      /* POR I/O device status 2 */
+#if defined(CONFIG_PPC_C29X)
+#define MPC85xx_PORDEVSR2_DDR_SPD_0    0x00000008
+#define MPC85xx_PORDEVSR2_DDR_SPD_0_SHIFT      3
+#endif
 /* The 8544 RM says this is bit 26, but it's really bit 24 */
 #define MPC85xx_PORDEVSR2_SEC_CFG      0x00000080
        u8      res1[8];
@@ -2338,6 +2366,11 @@ typedef struct ccsr_gur {
 #ifdef CONFIG_BSC9132
 #define MPC85xx_PMUXCR0_SIM_SEL_MASK   0x0003b000
 #define MPC85xx_PMUXCR0_SIM_SEL                0x00014000
+#endif
+#if defined(CONFIG_PPC_C29X)
+#define MPC85xx_PMUXCR_SPI_MASK                        0x00000300
+#define MPC85xx_PMUXCR_SPI                     0x00000000
+#define MPC85xx_PMUXCR_SPI_GPIO                        0x00000100
 #endif
        u32     pmuxcr2;        /* Alt. function signal multiplex control 2 */
 #if defined(CONFIG_P1010) || defined(CONFIG_P1014)
@@ -2526,7 +2559,9 @@ typedef struct serdes_corenet {
 #define SRDS_RSTCTL_RSTDONE    0x40000000
 #define SRDS_RSTCTL_RSTERR     0x20000000
 #define SRDS_RSTCTL_SWRST      0x10000000
-#define SRDS_RSTCTL_SDPD       0x00000020
+#define SRDS_RSTCTL_SDEN       0x00000020
+#define SRDS_RSTCTL_SDRST_B    0x00000040
+#define SRDS_RSTCTL_PLLRST_B   0x00000080
                u32     pllcr0; /* PLL Control Register 0 */
 #define SRDS_PLLCR0_POFF               0x80000000
 #define SRDS_PLLCR0_RFCK_SEL_MASK      0x70000000
@@ -2811,54 +2846,6 @@ typedef struct ccsr_pme {
        u8      res4[0x400];
 } ccsr_pme_t;
 
-#ifdef CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
-struct ccsr_usb_port_ctrl {
-       u32     ctrl;
-       u32     drvvbuscfg;
-       u32     pwrfltcfg;
-       u32     sts;
-       u8      res_14[0xc];
-       u32     bistcfg;
-       u32     biststs;
-       u32     abistcfg;
-       u32     abiststs;
-       u8      res_30[0x10];
-       u32     xcvrprg;
-       u32     anaprg;
-       u32     anadrv;
-       u32     anasts;
-};
-
-typedef struct ccsr_usb_phy {
-       u32     id;
-       struct  ccsr_usb_port_ctrl port1;
-       u8      res_50[0xc];
-       u32     tvr;
-       u32     pllprg[4];
-       u8      res_70[0x4];
-       u32     anaccfg;
-       u32     dbg;
-       u8      res_7c[0x4];
-       struct  ccsr_usb_port_ctrl port2;
-       u8      res_dc[0x334];
-} ccsr_usb_phy_t;
-
-#define CONFIG_SYS_FSL_USB_CTRL_PHY_EN (1 << 0)
-#define CONFIG_SYS_FSL_USB_DRVVBUS_CR_EN (1 << 1)
-#define CONFIG_SYS_FSL_USB_PWRFLT_CR_EN (1 << 1)
-#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_MFI (5 << 16)
-#define CONFIG_SYS_FSL_USB_PLLPRG2_PLL_EN (1 << 21)
-#else
-typedef struct ccsr_usb_phy {
-       u8      res0[0x18];
-       u32     usb_enable_override;
-       u8      res[0xe4];
-} ccsr_usb_phy_t;
-#define CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE 1
-#endif
-
 #ifdef CONFIG_SYS_FSL_RAID_ENGINE
 struct ccsr_raide {
        u8      res0[0x543];
@@ -3008,12 +2995,18 @@ struct ccsr_pman {
 #define CONFIG_SYS_MPC85xx_USB2_OFFSET         0x23000
 #ifdef CONFIG_TSECV2
 #define CONFIG_SYS_TSEC1_OFFSET                        0xB0000
+#elif defined(CONFIG_TSECV2_1)
+#define CONFIG_SYS_TSEC1_OFFSET                        0x10000
 #else
 #define CONFIG_SYS_TSEC1_OFFSET                        0x24000
 #endif
 #define CONFIG_SYS_MDIO1_OFFSET                        0x24000
 #define CONFIG_SYS_MPC85xx_ESDHC_OFFSET                0x2e000
+#if defined(CONFIG_PPC_C29X)
+#define CONFIG_SYS_FSL_SEC_OFFSET              0x80000
+#else
 #define CONFIG_SYS_FSL_SEC_OFFSET              0x30000
+#endif
 #define CONFIG_SYS_MPC85xx_SERDES2_OFFSET      0xE3100
 #define CONFIG_SYS_MPC85xx_SERDES1_OFFSET      0xE3000
 #define CONFIG_SYS_SNVS_OFFSET                 0xE6000
@@ -3031,6 +3024,12 @@ struct ccsr_pman {
 #define CONFIG_SYS_MPC85xx_GUTS_OFFSET         0xE0000
 #define CONFIG_SYS_FSL_SRIO_OFFSET             0xC0000
 
+#if defined(CONFIG_BSC9132)
+#define CONFIG_SYS_FSL_DSP_CCSR_DDR_OFFSET     0x10000
+#define CONFIG_SYS_FSL_DSP_CCSR_DDR_ADDR \
+       (CONFIG_SYS_FSL_DSP_CCSRBAR + CONFIG_SYS_FSL_DSP_CCSR_DDR_OFFSET)
+#endif
+
 #define CONFIG_SYS_FSL_CPC_ADDR        \
        (CONFIG_SYS_CCSRBAR + CONFIG_SYS_FSL_CPC_OFFSET)
 #define CONFIG_SYS_FSL_QMAN_ADDR \
index 892848aacf1155eabe5190ae1c8b4eaed9a30158..8bb342b9295f7be4da390723d8885f789fa93710 100644 (file)
@@ -1,25 +1,6 @@
-/*----------------------------------------------------------------------------+
-|   This source code is dual-licensed.  You may use it under the terms of the
-|   GNU General Public License version 2, or under the license below.
-|
-|      This source code has been made available to you by IBM on an AS-IS
-|      basis.  Anyone receiving this source is licensed under IBM
-|      copyrights to use it in any way he or she deems fit, including
-|      copying it, modifying it, compiling it, and redistributing it either
-|      with or without modifications.  No license under IBM patents or
-|      patent applications is to be implied by the copyright license.
-|
-|      Any user of this software should understand that IBM cannot provide
-|      technical support for this software and will not be responsible for
-|      any consequences resulting from the use of this software.
-|
-|      Any person who transfers this source code or any derivative work
-|      must include the IBM copyright notice, this paragraph, and the
-|      preceding two paragraphs in the transferred software.
-|
-|      COPYRIGHT   I B M   CORPORATION 1999
-|      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-+----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 
 #ifndef        __PPC405_H__
 #define __PPC405_H__
diff --git a/arch/powerpc/include/asm/ppc405cr.h b/arch/powerpc/include/asm/ppc405cr.h
deleted file mode 100644 (file)
index 0ea69bd..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * (C) Copyright 2010
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+ 
- */
-
-#ifndef _PPC405CR_H_
-#define _PPC405CR_H_
-
-#define CONFIG_SDRAM_PPC4xx_IBM_SDRAM  /* IBM SDRAM controller */
-
-/* Memory mapped register */
-#define CONFIG_SYS_PERIPHERAL_BASE     0xef600000 /* Internal Peripherals */
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_PERIPHERAL_BASE + 0x0300)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_PERIPHERAL_BASE + 0x0400)
-
-#define GPIO0_BASE             (CONFIG_SYS_PERIPHERAL_BASE + 0x0700)
-
-/* DCR's */
-#define DCP0_CFGADDR   0x0014          /* Decompression controller addr reg */
-#define DCP0_CFGDATA   0x0015          /* Decompression controller data reg */
-#define OCM0_ISCNTL    0x0019  /* OCM I-side control reg */
-#define OCM0_DSARC     0x001a  /* OCM D-side address compare */
-#define OCM0_DSCNTL    0x001b  /* OCM D-side control */
-#define CPC0_PLLMR     0x00b0          /* PLL mode  register */
-#define CPC0_CR0       0x00b1          /* chip control register 0 */
-#define CPC0_CR1       0x00b2          /* chip control register 1 */
-#define CPC0_PSR       0x00b4          /* chip pin strapping reg */
-#define CPC0_EIRR      0x00b6          /* ext interrupt routing reg */
-#define CPC0_SR                0x00b8          /* Power management status */
-#define CPC0_ER                0x00b9          /* Power management enable */
-#define CPC0_FR                0x00ba          /* Power management force */
-#define CPC0_ECR       0x00aa          /* edge conditioner register */
-
-#define PLLMR_FWD_DIV_MASK     0xE0000000      /* Forward Divisor */
-#define PLLMR_FWD_DIV_BYPASS   0xE0000000
-#define PLLMR_FWD_DIV_3                0xA0000000
-#define PLLMR_FWD_DIV_4                0x80000000
-#define PLLMR_FWD_DIV_6                0x40000000
-
-#define PLLMR_FB_DIV_MASK      0x1E000000      /* Feedback Divisor */
-#define PLLMR_FB_DIV_1         0x02000000
-#define PLLMR_FB_DIV_2         0x04000000
-#define PLLMR_FB_DIV_3         0x06000000
-#define PLLMR_FB_DIV_4         0x08000000
-
-#define PLLMR_TUNING_MASK      0x01F80000
-
-#define PLLMR_CPU_TO_PLB_MASK  0x00060000      /* CPU:PLB Frequency Divisor */
-#define PLLMR_CPU_PLB_DIV_1    0x00000000
-#define PLLMR_CPU_PLB_DIV_2    0x00020000
-#define PLLMR_CPU_PLB_DIV_3    0x00040000
-#define PLLMR_CPU_PLB_DIV_4    0x00060000
-
-#define PLLMR_OPB_TO_PLB_MASK  0x00018000      /* OPB:PLB Frequency Divisor */
-#define PLLMR_OPB_PLB_DIV_1    0x00000000
-#define PLLMR_OPB_PLB_DIV_2    0x00008000
-#define PLLMR_OPB_PLB_DIV_3    0x00010000
-#define PLLMR_OPB_PLB_DIV_4    0x00018000
-
-#define PLLMR_PCI_TO_PLB_MASK  0x00006000      /* PCI:PLB Frequency Divisor */
-#define PLLMR_PCI_PLB_DIV_1    0x00000000
-#define PLLMR_PCI_PLB_DIV_2    0x00002000
-#define PLLMR_PCI_PLB_DIV_3    0x00004000
-#define PLLMR_PCI_PLB_DIV_4    0x00006000
-
-#define PLLMR_EXB_TO_PLB_MASK  0x00001800      /* External Bus:PLB Divisor */
-#define PLLMR_EXB_PLB_DIV_2    0x00000000
-#define PLLMR_EXB_PLB_DIV_3    0x00000800
-#define PLLMR_EXB_PLB_DIV_4    0x00001000
-#define PLLMR_EXB_PLB_DIV_5    0x00001800
-
-/* definitions for PPC405GPr (new mode strapping) */
-#define PLLMR_FWDB_DIV_MASK    0x00000007      /* Forward Divisor B */
-
-#define PSR_PLL_FWD_MASK       0xC0000000
-#define PSR_PLL_FDBACK_MASK    0x30000000
-#define PSR_PLL_TUNING_MASK    0x0E000000
-#define PSR_PLB_CPU_MASK       0x01800000
-#define PSR_OPB_PLB_MASK       0x00600000
-#define PSR_PCI_PLB_MASK       0x00180000
-#define PSR_EB_PLB_MASK                0x00060000
-#define PSR_ROM_WIDTH_MASK     0x00018000
-#define PSR_ROM_LOC            0x00004000
-#define PSR_PCI_ASYNC_EN       0x00001000
-#define PSR_PERCLK_SYNC_MODE_EN 0x00000800     /* PPC405GPr only */
-#define PSR_PCI_ARBIT_EN       0x00000400
-#define PSR_NEW_MODE_EN                0x00000020      /* PPC405GPr only */
-
-#endif /* _PPC405CR_H_ */
index 411d441a206a28e0969cd673a59f7499c7d848e9..0f5bc8d1c79f41fa420be2b7539c75abc365cb50 100644 (file)
@@ -1,26 +1,3 @@
-/*----------------------------------------------------------------------------+
-|   This source code is dual-licensed.  You may use it under the terms of the
-|   GNU General Public License version 2, or under the license below.
-|
-|      This source code has been made available to you by IBM on an AS-IS
-|      basis.  Anyone receiving this source is licensed under IBM
-|      copyrights to use it in any way he or she deems fit, including
-|      copying it, modifying it, compiling it, and redistributing it either
-|      with or without modifications.  No license under IBM patents or
-|      patent applications is to be implied by the copyright license.
-|
-|      Any user of this software should understand that IBM cannot provide
-|      technical support for this software and will not be responsible for
-|      any consequences resulting from the use of this software.
-|
-|      Any person who transfers this source code or any derivative work
-|      must include the IBM copyright notice, this paragraph, and the
-|      preceding two paragraphs in the transferred software.
-|
-|      COPYRIGHT   I B M   CORPORATION 1999
-|      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-+----------------------------------------------------------------------------*/
-
 /*
  * (C) Copyright 2006
  * Sylvie Gohl,             AMCC/IBM, gohl.sylvie@fr.ibm.com
@@ -32,7 +9,7 @@
  * (C) Copyright 2010
  * Stefan Roese, DENX Software Engineering, sr@denx.de.
  *
- * SPDX-License-Identifier:    GPL-2.0+
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
  */
 
 #ifndef __PPC440_H__
index 9eb50ee84d506854bab7f486449c66bb2034ecfc..32062fd419fe06c251e73a231f67c6ba96ba73dc 100644 (file)
  * Within this group there is a slight variation concerning the bit field
  * position of the EMPL and EMPH fields:
  */
-#if defined(CONFIG_405CR) || defined(CONFIG_405GP) || \
+#if defined(CONFIG_405GP) || \
     defined(CONFIG_405EP) || \
     defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
     defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
 #define CONFIG_EBC_PPC4xx_IBM_VER1
-#if defined(CONFIG_405CR) || defined(CONFIG_405GP) || \
+#if defined(CONFIG_405GP) || \
     defined(CONFIG_405EP)
 #define EBC_CFG_EMPH_POS       8
 #define EBC_CFG_EMPL_POS       6
@@ -32,7 +32,7 @@
 /*
  * Define the max number of EBC banks (chip selects)
  */
-#if defined(CONFIG_405CR) || defined(CONFIG_405GP) || \
+#if defined(CONFIG_405GP) || \
     defined(CONFIG_405EZ) || \
     defined(CONFIG_440GP) || defined(CONFIG_440GX)
 #define EBC_NUM_BANKS  8
index a219fa97fa98745d062a1ac607f3113f0fcebae9..e6eb332220ef7edab7c9f3cc8d1c7c1e7b6b4fa7 100644 (file)
@@ -1,25 +1,6 @@
-/*----------------------------------------------------------------------------+
-|   This source code is dual-licensed.  You may use it under the terms of the
-|   GNU General Public License version 2, or under the license below.
-|
-|      This source code has been made available to you by IBM on an AS-IS
-|      basis.  Anyone receiving this source is licensed under IBM
-|      copyrights to use it in any way he or she deems fit, including
-|      copying it, modifying it, compiling it, and redistributing it either
-|      with or without modifications.  No license under IBM patents or
-|      patent applications is to be implied by the copyright license.
-|
-|      Any user of this software should understand that IBM cannot provide
-|      technical support for this software and will not be responsible for
-|      any consequences resulting from the use of this software.
-|
-|      Any person who transfers this source code or any derivative work
-|      must include the IBM copyright notice, this paragraph, and the
-|      preceding two paragraphs in the transferred software.
-|
-|      COPYRIGHT   I B M   CORPORATION 1999
-|      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-+----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*----------------------------------------------------------------------------+
 |
 |  File Name:  enetemac.h
index 71986856b15595e1f2a664adbfffc6ad485c79d8..d15290dc1a6ec24329ea1508920649296461bbe7 100644 (file)
@@ -1,26 +1,7 @@
 /* include/mal.h, openbios_walnut, walnut_bios 8/6/99 08:48:40 */
-/*----------------------------------------------------------------------------+
-|   This source code is dual-licensed.  You may use it under the terms of the
-|   GNU General Public License version 2, or under the license below.
-|
-|      This source code has been made available to you by IBM on an AS-IS
-|      basis.  Anyone receiving this source is licensed under IBM
-|      copyrights to use it in any way he or she deems fit, including
-|      copying it, modifying it, compiling it, and redistributing it either
-|      with or without modifications.  No license under IBM patents or
-|      patent applications is to be implied by the copyright license.
-|
-|      Any user of this software should understand that IBM cannot provide
-|      technical support for this software and will not be responsible for
-|      any consequences resulting from the use of this software.
-|
-|      Any person who transfers this source code or any derivative work
-|      must include the IBM copyright notice, this paragraph, and the
-|      preceding two paragraphs in the transferred software.
-|
-|      COPYRIGHT   I B M   CORPORATION 1999
-|      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-+----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*----------------------------------------------------------------------------+
 |
 |  File Name:  mal.h
index 9f2a08b8b3cd79630f8dc030f0e4e0142c208d2a..8d703c663402996644c38cb451142c878821356e 100644 (file)
@@ -1,25 +1,6 @@
-/*----------------------------------------------------------------------------+
-|       This source code is dual-licensed.  You may use it under the terms of
-|       the GNU General Public License version 2, or under the license below.
-|
-|       This source code has been made available to you by IBM on an AS-IS
-|       basis.  Anyone receiving this source is licensed under IBM
-|       copyrights to use it in any way he or she deems fit, including
-|       copying it, modifying it, compiling it, and redistributing it either
-|       with or without modifications.  No license under IBM patents or
-|       patent applications is to be implied by the copyright license.
-|
-|       Any user of this software should understand that IBM cannot provide
-|       technical support for this software and will not be responsible for
-|       any consequences resulting from the use of this software.
-|
-|       Any person who transfers this source code or any derivative work
-|       must include the IBM copyright notice, this paragraph, and the
-|       preceding two paragraphs in the transferred software.
-|
-|       COPYRIGHT   I B M   CORPORATION 1999
-|       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-+----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 
 #ifndef        __PPC4XX_H__
 #define __PPC4XX_H__
@@ -27,10 +8,6 @@
 /*
  * Include SoC specific headers
  */
-#if defined(CONFIG_405CR)
-#include <asm/ppc405cr.h>
-#endif
-
 #if defined(CONFIG_405EP)
 #include <asm/ppc405ep.h>
 #endif
index 56b22d840ad466adad4f9a9d83ed5b4e6b3524c5..c0fb51993e2899804d79ad3d73d6f9557573db6c 100644 (file)
 /* System-On-Chip Version Register (SVR) field extraction */
 
 #define SVR_VER(svr)   (((svr) >> 16) & 0xFFFF) /* Version field */
-#define SVR_REV(svr)   (((svr) >>  0) & 0xFFFF) /* Revision field */
+#define SVR_REV(svr)   (((svr) >>  0) & 0xFF)   /* Revision field */
 
 #define SVR_CID(svr)   (((svr) >> 28) & 0x0F)   /* Company or manufacturer ID */
 #define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F)   /* SOC integration options */
 #define PVR_405GP_RC   0x40110082
 #define PVR_405GP_RD   0x401100C4
 #define PVR_405GP_RE   0x40110145  /* same as pc405cr rev c */
-#define PVR_405CR_RA   0x40110041
-#define PVR_405CR_RB   0x401100C5
-#define PVR_405CR_RC   0x40110145  /* same as pc405gp rev e */
 #define PVR_405EP_RA   0x51210950
 #define PVR_405GPR_RB  0x50910951
 #define PVR_405EZ_RA   0x41511460
 
 /* System Version Register (SVR) field extraction */
 
-#define SVR_VER(svr)   (((svr) >>  16) & 0xFFFF)       /* Version field */
-#define SVR_REV(svr)   (((svr) >>   0) & 0xFFFF)       /* Revison field */
-
 #define SVR_SUBVER(svr)        (((svr) >>  8) & 0xFF)  /* Process/MFG sub-version */
 
 #define SVR_FAM(svr)   (((svr) >> 20) & 0xFFF) /* Family field */
 #define SVR_T4240      0x824000
 #define SVR_T4120      0x824001
 #define SVR_T4160      0x824100
+#define SVR_C291       0x850000
+#define SVR_C292       0x850020
+#define SVR_C293       0x850030
 #define SVR_B4860      0X868000
 #define SVR_G4860      0x868001
 #define SVR_G4060      0x868003
index f17b146da3b3f896a2e498031a0ddc511ad9b160..5916f7ce99ec578e4e3bf92c8fd4cbe05a8ca99e 100644 (file)
@@ -67,7 +67,6 @@ typedef struct bd_info {
        unsigned int    bi_baudrate;    /* Console Baudrate */
 #if defined(CONFIG_405)   || \
     defined(CONFIG_405GP) || \
-    defined(CONFIG_405CR) || \
     defined(CONFIG_405EP) || \
     defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || \
diff --git a/arch/x86/cpu/coreboot/config.mk b/arch/x86/cpu/coreboot/config.mk
deleted file mode 100644 (file)
index 0bbd2ff..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# Copyright (c) 2012 The Chromium OS Authors.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-CONFIG_ARCH_DEVICE_TREE := coreboot
index b116d595550b89c005a8c311ea6cae22280584f8..0d91adc5e47b60b84c363f0516af7b64c8336634 100644 (file)
@@ -4,28 +4,7 @@
  * Copyright (C) 2008 Advanced Micro Devices, Inc.
  * Copyright (C) 2009 coresystems GmbH
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  */
 
 #include <common.h>
index 78d3a9d49ea06785871d99faf99e12cf5dad64b8..8e4a61de7d07cf73dba726f0de80794a2d9a0d89 100644 (file)
@@ -3,28 +3,7 @@
  *
  * Copyright (C) 2008 Advanced Micro Devices, Inc.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  */
 
 #ifndef _COREBOOT_SYSINFO_H
index ad34a8b0f144fba918fe367c49cb25f57605119b..0d02fe0592eed1775e251ad23838ab92319a4aca 100644 (file)
@@ -3,28 +3,7 @@
  *
  * Copyright (C) 2008 Advanced Micro Devices, Inc.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  */
 
 #ifndef _COREBOOT_TABLES_H
index ec67dd04b04653094c48101b4d787b88d5dfa421..6c187190b2304351f1d810aa909ab24eb2f25d74 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(BOARD).o
 
-COBJS  := adp-ag102.o
+COBJS-y        := adp-ag102.o
 
 SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS-y) $(SOBJS-y))
index a0fe832fb2471dc37d6ee447bdc2b98776640156..112c47b60dae3dd8f5cdebae49f68a51ee4971a1 100644 (file)
@@ -57,13 +57,13 @@ the following command:
 => fdt print
 
 5. Save fdt to NOR flash:
-=> erase fc060000 fc07ffff
-=> cp.b 1800000 fc060000 10000
+=> erase fc180000 fc07ffff
+=> cp.b 1800000 fc180000 10000
 
 All this can be integrated into an environment command:
-=> setenv upd_fdt 'tftp 1800000 a3m071/a3m071.dtb;run mtdargs addip2 addtty; \
-       fdt addr 1800000;fdt boardsetup;fdt chosen;erase fc060000 fc07ffff; \
-       cp.b 1800000 fc060000 10000'
+=> setenv upd_fdt 'tftp 1800000 a3m071/a3m071.dtb;run mtdargs addip addtty; \
+       fdt addr 1800000;fdt boardsetup;fdt chosen;erase fc180000 fc07ffff; \
+       cp.b 1800000 fc180000 10000'
 => saveenv
 
 After this, only "run upd_fdt" needs to get called to load, patch
index f720851aacbed7c6e1b3b23c1ab0708a44596067..0c05dd03dbe860f16425a80c0b6b6537e3a25833 100644 (file)
@@ -1,37 +1,7 @@
 #
 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
 #
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Alternatively, this software may be distributed under the terms of the
-# GNU General Public License ("GPL") version 2 as published by the Free
-# Software Foundation.
+# SPDX-License-Identifier:     GPL-2.0 BSD-3-Clause
 #
 
 HOSTCFLAGS_autoconf.mk.dep = -Wno-variadic-macros
index d0738cbf46cd9f2f1d5ce5fbdc492817305a50de..c95ee8a108937cf2d3eb2d4e294cff1586817421 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ ARCH_CPU_DTS
+/include/ "coreboot.dtsi"
 
 / {
         #address-cells = <1>;
index 16621414887de223754df3b67b5b5de121086ac1..82f21b08b2aebe20e332ba22601b99ec9946fef5 100644 (file)
@@ -1,27 +1,6 @@
-/*------------------------------------------------------------------------------+ */
-/* */
-/*       This source code is dual-licensed.  You may use it under the terms */
-/*       of the GNU General Public License version 2, or under the license  */
-/*       below.                                                             */
-/*                                                                          */
-/*       This source code has been made available to you by IBM on an AS-IS */
-/*       basis.  Anyone receiving this source is licensed under IBM */
-/*       copyrights to use it in any way he or she deems fit, including */
-/*       copying it, modifying it, compiling it, and redistributing it either */
-/*       with or without modifications.  No license under IBM patents or */
-/*       patent applications is to be implied by the copyright license. */
-/* */
-/*       Any user of this software should understand that IBM cannot provide */
-/*       technical support for this software and will not be responsible for */
-/*       any consequences resulting from the use of this software. */
-/* */
-/*       Any person who transfers this source code or any derivative work */
-/*       must include the IBM copyright notice, this paragraph, and the */
-/*       preceding two paragraphs in the transferred software. */
-/* */
-/*       COPYRIGHT   I B M   CORPORATION 1995 */
-/*       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------------- */
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 
 /*----------------------------------------------------------------------------- */
 /* Function:     ext_bus_cntlr_init */
index 82c6fdb965e235b5c2c995122857148649665356..b1283aa69a72b129151a1fb2ca08a5d8505f044e 100644 (file)
@@ -1,26 +1,6 @@
-/******************************************************************************
- *   This source code is dual-licensed.  You may use it under the terms of the
- *   GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *
- *****************************************************************************/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 #include <config.h>
 #include <asm/ppc4xx.h>
 
index e00b5f530cbdd9406270eaea9820255b5fcffe0f..f5805b79882a961963d77a202aafefaefc50dd37 100644 (file)
@@ -1,26 +1,6 @@
-/******************************************************************************
- *   This source code is dual-licensed.  You may use it under the terms of the
- *   GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *
- *****************************************************************************/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 #include <config.h>
 #include <asm/ppc4xx.h>
 
index c786997799004deeb82517aa318e5650fd082d67..c4444c7c7f549cd2cb1f24e8cc3619e3a0c24f00 100644 (file)
@@ -24,7 +24,7 @@
 #include <asm/io.h>
 #include <asm/arch/davinci_misc.h>
 #include <asm/gpio.h>
-#include <asm/arch/da8xx-fb.h>
+#include "../../../drivers/video/da8xx-fb.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -43,6 +43,30 @@ static const struct da8xx_panel lcd_panel = {
        .invert_pxl_clk = 0,
 };
 
+static const struct display_panel disp_panel = {
+       QVGA,
+       16,
+       16,
+       COLOR_ACTIVE,
+};
+
+static const struct lcd_ctrl_config lcd_cfg = {
+       &disp_panel,
+       .ac_bias                = 255,
+       .ac_bias_intrpt         = 0,
+       .dma_burst_sz           = 16,
+       .bpp                    = 16,
+       .fdd                    = 255,
+       .tft_alt_mode           = 0,
+       .stn_565_mode           = 0,
+       .mono_8bit_mode         = 0,
+       .invert_line_clock      = 1,
+       .invert_frm_clock       = 1,
+       .sync_edge              = 0,
+       .sync_ctrl              = 1,
+       .raster_order           = 0,
+};
+
 /* SPI0 pin muxer settings */
 static const struct pinmux_config spi1_pins[] = {
        { pinmux(5), 1, 1 },
@@ -259,7 +283,7 @@ int board_init(void)
        /* address of boot parameters */
        gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
 
-       da8xx_video_init(&lcd_panel, 16);
+       da8xx_video_init(&lcd_panel, &lcd_cfg, 16);
 
        return 0;
 }
diff --git a/board/esd/canbt/canbt.c b/board/esd/canbt/canbt.c
deleted file mode 100644 (file)
index 5884975..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * (C) Copyright 2001
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include "canbt.h"
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* fpga configuration data */
-const unsigned char fpgadata[] = {
-#include "fpgadata.c"
-};
-
-/*
- * include common fpga code (for esd boards)
- */
-#include "../common/fpga.c"
-
-
-int board_early_init_f (void)
-{
-       unsigned long CPC0_CR0Reg;
-       int index, len, i;
-       int status;
-
-       /*
-        * Setup GPIO pins
-        */
-       CPC0_CR0Reg = mfdcr (CPC0_CR0) & 0xf0001fff;
-       CPC0_CR0Reg |= 0x0070f000;
-       mtdcr (CPC0_CR0, CPC0_CR0Reg);
-
-#ifdef FPGA_DEBUG
-       /* set up serial port with default baudrate */
-       (void) get_clocks ();
-       gd->baudrate = CONFIG_BAUDRATE;
-       serial_init ();
-       console_init_f ();
-#endif
-
-       /*
-        * Boot onboard FPGA
-        */
-       status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
-       if (status != 0) {
-               /* booting FPGA failed */
-#ifndef FPGA_DEBUG
-               /* set up serial port with default baudrate */
-               (void) get_clocks ();
-               gd->baudrate = CONFIG_BAUDRATE;
-               serial_init ();
-               console_init_f ();
-#endif
-               printf ("\nFPGA: Booting failed ");
-               switch (status) {
-               case ERROR_FPGA_PRG_INIT_LOW:
-                       printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_INIT_HIGH:
-                       printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
-                       break;
-               case ERROR_FPGA_PRG_DONE:
-                       printf ("(Timeout: DONE not high after programming FPGA)\n ");
-                       break;
-               }
-
-               /* display infos on fpgaimage */
-               index = 15;
-               for (i = 0; i < 4; i++) {
-                       len = fpgadata[index];
-                       printf ("FPGA: %s\n", &(fpgadata[index + 1]));
-                       index += len + 3;
-               }
-               putc ('\n');
-               /* delayed reboot */
-               for (i = 20; i > 0; i--) {
-                       printf ("Rebooting in %2d seconds \r", i);
-                       for (index = 0; index < 1000; index++)
-                               udelay (1000);
-               }
-               putc ('\n');
-               do_reset (NULL, 0, 0, NULL);
-       }
-
-       /*
-        * Setup port pins for normal operation
-        */
-       out_be32 ((void *)GPIO0_ODR, 0x00000000);       /* no open drain pins */
-       out_be32 ((void *)GPIO0_TCR, 0x07038100);       /* setup for output */
-       out_be32 ((void *)GPIO0_OR, 0x07030100);        /* set output pins to high (default) */
-
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) CAN1; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) PCI SLOT 0; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) PCI SLOT 1; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI SLOT 3; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);     /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);     /* set all to be non-critical */
-       mtdcr (UIC0PR, 0xFFFFFF81);     /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);     /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);    /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);     /* clear all ints */
-
-       return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       int index;
-       int len;
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof (str));
-
-       puts ("Board: ");
-
-       if (!i || strncmp (str, "CANBT", 5)) {
-               puts ("### No HW ID - assuming CANBT\n");
-               return (0);
-       }
-
-       puts (str);
-
-       puts ("\nFPGA:  ");
-
-       /* display infos on fpgaimage */
-       index = 15;
-       for (i = 0; i < 4; i++) {
-               len = fpgadata[index];
-               printf ("%s ", &(fpgadata[index + 1]));
-               index += len + 3;
-       }
-
-       putc ('\n');
-
-       return 0;
-}
diff --git a/board/esd/canbt/canbt.h b/board/esd/canbt/canbt.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/canbt/flash.c b/board/esd/canbt/flash.c
deleted file mode 100644 (file)
index 34bdc05..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * (C) Copyright 2001
- * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <asm/processor.h>
-
-/*
- * include common flash code (for esd boards)
- */
-#include "../common/flash.c"
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-       uint pbcr;
-       unsigned long base_b0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size_b0, size_b0<<20);
-       }
-
-       /* Setup offsets */
-       flash_get_offsets (-size_b0, &flash_info[0]);
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       base_b0 = -size_b0;
-       pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17);
-       mtdcr(EBC0_CFGDATA, pbcr);
-       /*          printf("PB1CR = %x\n", pbcr); */
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -monitor_flash_len,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-       return (size_b0);
-}
diff --git a/board/esd/canbt/fpgadata.c b/board/esd/canbt/fpgadata.c
deleted file mode 100644 (file)
index af401cd..0000000
+++ /dev/null
@@ -1,807 +0,0 @@
-0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0,
-0x0f, 0xf0, 0x00, 0x00, 0x01, 0x61, 0x00, 0x0c,
-0x69, 0x6f, 0x5f, 0x63, 0x68, 0x69, 0x70, 0x2e,
-0x6e, 0x63, 0x64, 0x00, 0x62, 0x00, 0x0b, 0x73,
-0x30, 0x35, 0x78, 0x6c, 0x76, 0x71, 0x31, 0x30,
-0x30, 0x00, 0x63, 0x00, 0x0b, 0x32, 0x30, 0x30,
-0x31, 0x2f, 0x31, 0x31, 0x2f, 0x32, 0x33, 0x00,
-0x64, 0x00, 0x09, 0x31, 0x33, 0x3a, 0x33, 0x34,
-0x3a, 0x34, 0x33, 0x00, 0x65, 0xe2, 0x01, 0x00,
-0x00, 0x18, 0xe6, 0xff, 0x30, 0xe8, 0x01, 0x01,
-0x01, 0x01, 0xe7, 0xe6, 0x04, 0x01, 0x0d, 0x04,
-0x07, 0x03, 0x05, 0x03, 0x05, 0x03, 0xe5, 0xe5,
-0x05, 0x09, 0x04, 0x06, 0x01, 0x07, 0x09, 0x01,
-0x07, 0x0b, 0x0f, 0x07, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x11, 0x03, 0x0f, 0x09, 0x03, 0x05, 0x10,
-0xe5, 0xe6, 0x1a, 0x0a, 0x13, 0x29, 0x19, 0x05,
-0x09, 0x04, 0x04, 0x09, 0x09, 0x09, 0x0b, 0x04,
-0x04, 0x09, 0x09, 0x09, 0x0e, 0xe5, 0x01, 0x14,
-0x09, 0x09, 0x09, 0x03, 0x05, 0x0b, 0x03, 0x05,
-0x09, 0x09, 0x09, 0x09, 0x01, 0xe6, 0x7b, 0x01,
-0x01, 0x02, 0x75, 0xe8, 0x3e, 0x3b, 0x02, 0x34,
-0x0a, 0x09, 0x07, 0x09, 0x01, 0x11, 0x0a, 0xe5,
-0xe6, 0x5c, 0x1e, 0xe6, 0xe5, 0x0a, 0xe5, 0x50,
-0x1d, 0x0d, 0x31, 0x09, 0x14, 0x13, 0x07, 0x01,
-0x01, 0x2a, 0x08, 0x0b, 0x1e, 0x1c, 0x01, 0xe5,
-0x0f, 0x09, 0x09, 0xe5, 0x07, 0x09, 0xe6, 0x08,
-0x05, 0x03, 0x01, 0x07, 0x09, 0x09, 0x0d, 0xe8,
-0x0f, 0x09, 0xe5, 0x07, 0x09, 0x04, 0x05, 0x0a,
-0x01, 0x07, 0x01, 0x07, 0x09, 0x09, 0x0d, 0xe5,
-0xe6, 0x0c, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x03, 0x03, 0xe5, 0x06, 0xe5, 0xe6, 0x03,
-0x03, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x05, 0xe5,
-0x07, 0xe5, 0x01, 0x07, 0x05, 0xe7, 0x0f, 0x09,
-0x09, 0x09, 0x10, 0x04, 0x05, 0x03, 0x03, 0x05,
-0x09, 0x09, 0x08, 0x08, 0x04, 0x01, 0x06, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x02, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x02, 0x04, 0xe5, 0x07, 0x02, 0x03,
-0x02, 0xe5, 0x0e, 0x09, 0x09, 0x09, 0x15, 0x09,
-0x09, 0x09, 0x09, 0x0e, 0xe6, 0xe5, 0x0c, 0x09,
-0x09, 0x09, 0x09, 0x04, 0x04, 0x01, 0x09, 0x06,
-0x02, 0x09, 0x09, 0x11, 0xe7, 0x0c, 0x02, 0x06,
-0x02, 0x04, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02,
-0x06, 0x02, 0x03, 0x02, 0x01, 0x02, 0x06, 0x02,
-0x01, 0x04, 0x02, 0x06, 0x02, 0x03, 0x02, 0x02,
-0x11, 0x03, 0x17, 0x03, 0x05, 0x12, 0x15, 0x02,
-0x23, 0x08, 0x16, 0x06, 0x0c, 0x05, 0x15, 0x07,
-0x01, 0x0a, 0x02, 0x0f, 0x01, 0x07, 0x02, 0xe5,
-0xe5, 0x08, 0x07, 0x02, 0x07, 0x02, 0x10, 0x03,
-0x11, 0x03, 0x2b, 0x05, 0xe6, 0x2b, 0x0a, 0x06,
-0x01, 0x01, 0x11, 0x0b, 0x0e, 0xe5, 0x08, 0xe6,
-0xe5, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09,
-0x09, 0x01, 0x07, 0x09, 0x0e, 0x01, 0xe5, 0x0f,
-0x0d, 0x22, 0xe5, 0xe5, 0x27, 0x0e, 0xe6, 0x47,
-0x11, 0x17, 0x02, 0x04, 0x01, 0x01, 0x0d, 0x0d,
-0x1f, 0x04, 0x01, 0x24, 0x10, 0x03, 0x01, 0x2a,
-0x12, 0x0c, 0x06, 0xe5, 0x0a, 0x09, 0x11, 0xe5,
-0x01, 0x1c, 0x09, 0x17, 0x0b, 0x09, 0x09, 0x04,
-0x19, 0xe5, 0x0c, 0x01, 0x0d, 0x22, 0x0a, 0x01,
-0x0d, 0xe5, 0x04, 0x18, 0x01, 0xe5, 0x01, 0x05,
-0x04, 0x01, 0x02, 0xe5, 0x14, 0x10, 0x0b, 0x02,
-0x01, 0x02, 0x02, 0xe5, 0x19, 0x0d, 0xe5, 0xe5,
-0x0e, 0x09, 0x09, 0x02, 0x06, 0x09, 0x02, 0x03,
-0x04, 0x03, 0x05, 0x09, 0x15, 0x0c, 0x02, 0xe5,
-0x01, 0x0b, 0x04, 0x04, 0x09, 0x09, 0x02, 0x06,
-0x09, 0xe5, 0x01, 0x06, 0x05, 0x03, 0x06, 0x1e,
-0x02, 0x1c, 0x1d, 0x08, 0xe5, 0x05, 0x02, 0x06,
-0x02, 0x03, 0xe5, 0x1b, 0x03, 0x17, 0xe5, 0x08,
-0x02, 0x09, 0xe5, 0x09, 0x0f, 0xe5, 0x08, 0x07,
-0x09, 0x06, 0x0b, 0x02, 0x17, 0xe5, 0x09, 0x01,
-0x1f, 0x05, 0xe5, 0x02, 0x05, 0x03, 0x1f, 0xe5,
-0xe6, 0x0e, 0x09, 0x03, 0x05, 0x03, 0x05, 0x09,
-0x11, 0x01, 0x01, 0x04, 0x0c, 0x01, 0x0a, 0x0e,
-0x01, 0xe5, 0x0c, 0xe6, 0x06, 0xe6, 0x06, 0xe6,
-0x06, 0xe6, 0x02, 0x03, 0xe6, 0x03, 0x03, 0x02,
-0x09, 0x06, 0xe5, 0xe5, 0x25, 0x14, 0x1a, 0x12,
-0x05, 0x04, 0x02, 0x13, 0x16, 0xe7, 0xe5, 0x11,
-0xe5, 0x11, 0xe5, 0x06, 0xe5, 0x14, 0xe5, 0x11,
-0xe5, 0x03, 0xe5, 0x08, 0xe5, 0x06, 0x01, 0x02,
-0x02, 0x02, 0x01, 0x2c, 0xe5, 0x08, 0x01, 0x1d,
-0xe5, 0xe6, 0x01, 0x02, 0x01, 0x04, 0x09, 0x01,
-0x02, 0xe6, 0x03, 0x04, 0xe5, 0x02, 0x01, 0x02,
-0xe5, 0x02, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x02, 0xe5, 0x04, 0x01, 0x07, 0x05, 0xe5,
-0x01, 0x01, 0x02, 0xe5, 0x07, 0xe5, 0x01, 0x01,
-0xe5, 0x09, 0xe5, 0xe5, 0xe7, 0x01, 0x0e, 0x08,
-0x03, 0xe5, 0x04, 0x02, 0x06, 0x02, 0xe5, 0x04,
-0x0d, 0xe5, 0x07, 0xe5, 0x08, 0xe5, 0x07, 0x05,
-0x07, 0x02, 0x01, 0x01, 0xe8, 0xe5, 0x10, 0x01,
-0x05, 0x0c, 0x10, 0xe5, 0x01, 0x06, 0xe5, 0x08,
-0x08, 0xe6, 0x01, 0x02, 0x05, 0xe5, 0x04, 0xe5,
-0x01, 0x06, 0xe5, 0x01, 0xe5, 0x01, 0x10, 0x02,
-0x05, 0xe5, 0x01, 0x06, 0x02, 0x06, 0x02, 0x05,
-0x03, 0x07, 0xe5, 0x01, 0x05, 0xe5, 0x01, 0x05,
-0x04, 0x03, 0x03, 0xe5, 0x04, 0x08, 0xe6, 0xe5,
-0xe6, 0x01, 0x0b, 0x05, 0x03, 0x09, 0x09, 0x09,
-0x06, 0x04, 0x05, 0x01, 0x01, 0x09, 0x05, 0x0a,
-0x01, 0x01, 0x02, 0x08, 0x02, 0xe5, 0xe6, 0x01,
-0x11, 0xe5, 0x31, 0x14, 0x10, 0x0a, 0x02, 0xe8,
-0x0c, 0x03, 0xe6, 0x02, 0x03, 0x05, 0x03, 0x05,
-0x03, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, 0x01,
-0x03, 0x03, 0x05, 0x0d, 0xe5, 0x06, 0x0b, 0x01,
-0x01, 0x11, 0x0c, 0x01, 0x04, 0x02, 0x01, 0x04,
-0x02, 0x09, 0x0b, 0x01, 0x07, 0x01, 0x07, 0x09,
-0x13, 0xe6, 0xe6, 0x0a, 0x02, 0x06, 0x02, 0x03,
-0x02, 0x02, 0x04, 0xe6, 0x01, 0x05, 0xe5, 0x01,
-0x03, 0x07, 0x03, 0x02, 0x02, 0x05, 0xe5, 0x01,
-0x03, 0x02, 0x02, 0x03, 0xe5, 0xe5, 0x01, 0x06,
-0x04, 0x01, 0x01, 0xe5, 0xe5, 0x01, 0x08, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x08, 0x08, 0xe5, 0x08,
-0x0a, 0xe5, 0x05, 0x09, 0x02, 0x09, 0x05, 0xe5,
-0x01, 0x07, 0xe5, 0xe6, 0x08, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x05, 0x03, 0x03, 0x05, 0x03, 0x07,
-0x03, 0x05, 0x09, 0x03, 0x0a, 0x08, 0x0d, 0xe5,
-0x5e, 0x06, 0x07, 0x0b, 0xe8, 0x10, 0x01, 0x07,
-0x09, 0x01, 0x07, 0x01, 0x07, 0x0b, 0x09, 0x09,
-0x08, 0x03, 0x06, 0x0c, 0xe8, 0x09, 0x54, 0x01,
-0x0d, 0x02, 0x07, 0x01, 0x01, 0x15, 0xe5, 0x05,
-0xe7, 0x05, 0xe7, 0x07, 0xe5, 0x06, 0xe6, 0x08,
-0xe6, 0x05, 0xe7, 0x06, 0xe7, 0xe5, 0x02, 0xe7,
-0x05, 0xe7, 0x0a, 0x10, 0xe5, 0x07, 0x09, 0x33,
-0x06, 0x0b, 0x0f, 0xe7, 0x19, 0x05, 0x03, 0x02,
-0x02, 0x13, 0x0b, 0x09, 0x03, 0x05, 0x06, 0x02,
-0xe5, 0x07, 0x08, 0x02, 0xe5, 0x1b, 0xe6, 0x07,
-0xe5, 0x11, 0xe5, 0x01, 0x07, 0xe5, 0x06, 0xe6,
-0x07, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0x02, 0x03,
-0xe6, 0x0a, 0xe5, 0x02, 0x0e, 0x09, 0xe5, 0xe6,
-0x04, 0xe8, 0x04, 0x09, 0xe5, 0xe6, 0x06, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe5, 0xe7, 0xe6,
-0x01, 0x01, 0xe6, 0x03, 0xe8, 0x06, 0x01, 0x01,
-0x0e, 0x01, 0x03, 0x03, 0x01, 0x07, 0x01, 0x07,
-0x01, 0xe5, 0x05, 0x01, 0x09, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x01, 0x08, 0x08, 0x01, 0x0a, 0xe9,
-0x10, 0x01, 0x01, 0x05, 0x01, 0xe5, 0x05, 0x01,
-0xe6, 0x04, 0x01, 0xe6, 0x04, 0x01, 0x01, 0x02,
-0x03, 0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0x06,
-0x01, 0x02, 0x04, 0x01, 0x07, 0x01, 0xe5, 0x08,
-0x01, 0xe6, 0x0e, 0xe5, 0x02, 0x0e, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0xe5, 0x0d, 0x09, 0xe5, 0x06,
-0x04, 0xe5, 0x05, 0x01, 0xe5, 0x0c, 0xe6, 0xe6,
-0x1e, 0x07, 0x15, 0x07, 0x09, 0xe5, 0x0d, 0xe5,
-0xe5, 0xe5, 0x01, 0x01, 0x09, 0x04, 0xe6, 0xe6,
-0x04, 0x02, 0x04, 0x01, 0x02, 0x09, 0x04, 0x01,
-0x02, 0x04, 0x01, 0x07, 0x01, 0x04, 0x02, 0x08,
-0x0b, 0x06, 0x0e, 0x10, 0xe5, 0xe6, 0x0b, 0x01,
-0x07, 0x01, 0x03, 0xe5, 0x01, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x02, 0x05, 0x09, 0x17, 0x04, 0x03,
-0x03, 0x09, 0xe7, 0xe5, 0x0d, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01, 0x04,
-0x01, 0x0a, 0x07, 0x06, 0x01, 0x02, 0x0a, 0x13,
-0xe6, 0x0d, 0x03, 0x05, 0x09, 0x03, 0x05, 0x09,
-0x03, 0x03, 0x03, 0x02, 0x05, 0xe5, 0x02, 0x04,
-0xe5, 0x07, 0xe5, 0x01, 0x03, 0x02, 0x0d, 0x01,
-0x02, 0x0d, 0x02, 0x02, 0x03, 0x09, 0x02, 0x06,
-0x04, 0x04, 0x02, 0xe5, 0x04, 0x01, 0x05, 0x03,
-0x01, 0xe5, 0x05, 0x01, 0x07, 0x01, 0x08, 0x0c,
-0x06, 0x06, 0x02, 0x05, 0xe6, 0x06, 0xe6, 0x06,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0xe5, 0x03, 0xe5,
-0x01, 0xe5, 0xe5, 0xe5, 0x06, 0x09, 0x01, 0xe5,
-0x17, 0x03, 0x01, 0xe6, 0x09, 0x02, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0x01, 0xe6, 0x07, 0x11, 0xe5, 0xe5, 0x09, 0x02,
-0x0e, 0x0b, 0x04, 0x01, 0x03, 0x03, 0x09, 0x01,
-0x07, 0x04, 0x04, 0x02, 0xe5, 0xe6, 0x03, 0x07,
-0x18, 0xe5, 0x13, 0xe5, 0xe6, 0x0c, 0xe5, 0x03,
-0x03, 0xe5, 0x07, 0xe5, 0x02, 0x04, 0xe5, 0x07,
-0xe5, 0x0a, 0x03, 0xe5, 0x01, 0x01, 0x07, 0x01,
-0xe5, 0x03, 0xe5, 0x09, 0x01, 0x0a, 0x02, 0x03,
-0xe5, 0x0c, 0xe6, 0x06, 0xe6, 0x01, 0x04, 0xe6,
-0x06, 0xe7, 0xe5, 0x03, 0xe6, 0x01, 0x05, 0x02,
-0x09, 0x05, 0x03, 0x07, 0x01, 0x02, 0x06, 0x0a,
-0x03, 0xe5, 0xe6, 0xe5, 0x06, 0x1c, 0x1a, 0xe5,
-0x02, 0x05, 0x0a, 0x12, 0x02, 0x0c, 0xe5, 0x01,
-0x01, 0x1b, 0xe5, 0x04, 0x03, 0x01, 0x06, 0xe5,
-0x10, 0xe5, 0x01, 0xe5, 0x03, 0xe5, 0x12, 0xe5,
-0x06, 0xe5, 0x07, 0x01, 0x03, 0xe9, 0xe5, 0x17,
-0xe5, 0x08, 0xe5, 0x06, 0xe5, 0x08, 0xe5, 0x09,
-0xe5, 0x17, 0x03, 0x01, 0x0e, 0x01, 0x01, 0x02,
-0x02, 0x01, 0x04, 0xe5, 0x02, 0x04, 0xe5, 0x02,
-0x09, 0x09, 0x09, 0x04, 0xe5, 0x04, 0x01, 0xe5,
-0x05, 0x01, 0xe5, 0x05, 0x01, 0x08, 0xe5, 0x01,
-0xe5, 0x05, 0xe5, 0x07, 0xe5, 0x01, 0x01, 0xe5,
-0x01, 0x1b, 0x09, 0xe5, 0x07, 0x14, 0xe5, 0x05,
-0x01, 0xe5, 0x04, 0x02, 0xe5, 0x01, 0x06, 0x0d,
-0x02, 0x01, 0xe5, 0x02, 0xe5, 0xe5, 0x06, 0x01,
-0x05, 0xe5, 0x01, 0x05, 0x02, 0x10, 0xe5, 0xe6,
-0x04, 0x01, 0x01, 0x06, 0x01, 0x02, 0x0f, 0xe5,
-0x01, 0xe5, 0x02, 0xe5, 0x01, 0x08, 0x01, 0x06,
-0xe5, 0xe7, 0x01, 0x06, 0x02, 0x05, 0x01, 0x01,
-0x05, 0x03, 0x07, 0x01, 0x05, 0x01, 0x01, 0x05,
-0x0d, 0x01, 0x0f, 0x04, 0x04, 0x08, 0x01, 0x02,
-0x04, 0xe6, 0x01, 0xe6, 0x01, 0x0b, 0x09, 0x06,
-0x02, 0x09, 0x09, 0x0b, 0x05, 0x03, 0x09, 0x0a,
-0x02, 0x06, 0x08, 0x02, 0x02, 0xe6, 0xe5, 0x12,
-0xe5, 0x11, 0xe5, 0x1d, 0xe6, 0x14, 0x04, 0xe6,
-0x01, 0x0f, 0x03, 0xe6, 0x07, 0x05, 0x03, 0x02,
-0x02, 0x03, 0x05, 0x03, 0xe5, 0x03, 0x03, 0x02,
-0x02, 0x03, 0x02, 0x04, 0x03, 0xe5, 0x03, 0x03,
-0x05, 0x03, 0x08, 0xe5, 0x01, 0x12, 0xe5, 0xe5,
-0xe5, 0x07, 0x01, 0x07, 0xe5, 0x07, 0x01, 0x04,
-0x16, 0x08, 0x02, 0xe5, 0x04, 0x02, 0x01, 0x07,
-0x01, 0x07, 0xe5, 0x07, 0x09, 0xe5, 0x01, 0xe5,
-0x09, 0xe5, 0x01, 0x06, 0x02, 0x03, 0x02, 0x02,
-0x06, 0x02, 0x06, 0x02, 0x03, 0x07, 0x06, 0x02,
-0x03, 0x05, 0x03, 0xe5, 0xe5, 0x01, 0x04, 0x01,
-0x02, 0x05, 0xe5, 0x05, 0x01, 0xe5, 0xe5, 0x0a,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0x09, 0xe5,
-0x08, 0x0a, 0xe5, 0x08, 0x09, 0x05, 0x03, 0x06,
-0x02, 0x07, 0xe8, 0x08, 0x05, 0x03, 0x05, 0x03,
-0x05, 0x09, 0x03, 0x05, 0x05, 0x05, 0x03, 0x05,
-0x03, 0x05, 0x04, 0x09, 0x0a, 0x08, 0xe5, 0xe6,
-0x5b, 0x07, 0x17, 0xe6, 0x01, 0x0e, 0x09, 0x09,
-0x01, 0x07, 0x09, 0x0b, 0x01, 0x07, 0x01, 0x07,
-0x05, 0x03, 0x04, 0xe5, 0x01, 0x0e, 0xe5, 0xe6,
-0x1c, 0x1c, 0xe5, 0x1e, 0x04, 0x09, 0x0e, 0x01,
-0xe6, 0x08, 0x0b, 0xe5, 0x05, 0x01, 0xe5, 0x05,
-0x01, 0xe5, 0x07, 0xe5, 0x05, 0x01, 0xe5, 0x07,
-0xe7, 0x05, 0xe7, 0x05, 0x01, 0xe6, 0x04, 0x01,
-0xe6, 0x04, 0xe7, 0x06, 0x02, 0xe5, 0xe5, 0x0d,
-0xe5, 0x07, 0x29, 0x09, 0x09, 0x08, 0x09, 0x0e,
-0x03, 0x20, 0x09, 0x13, 0x05, 0x05, 0x03, 0x05,
-0x09, 0x09, 0xe5, 0x07, 0x09, 0xe6, 0x19, 0x02,
-0x01, 0x07, 0x01, 0x11, 0x01, 0x02, 0x06, 0xe6,
-0x06, 0xe6, 0x03, 0x02, 0x01, 0x07, 0x01, 0x03,
-0x03, 0xe6, 0x07, 0xe5, 0xe6, 0x11, 0x09, 0xe8,
-0x04, 0x01, 0xe6, 0x04, 0x09, 0xe8, 0x06, 0xe5,
-0xe6, 0x04, 0xe5, 0xe6, 0x04, 0xe8, 0x04, 0xe9,
-0x04, 0x01, 0xe5, 0x06, 0x03, 0xe5, 0x0b, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x07, 0xe5, 0xe5,
-0x05, 0xe5, 0xe6, 0x04, 0x02, 0x06, 0x02, 0x01,
-0x14, 0xe9, 0x05, 0x0a, 0x01, 0xe5, 0x05, 0x01,
-0xe5, 0x05, 0x01, 0xe6, 0x04, 0x01, 0x01, 0x05,
-0x01, 0xe6, 0x01, 0x04, 0x01, 0x01, 0x05, 0x01,
-0xe6, 0x01, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x07, 0xe8, 0x02, 0x05, 0x04,
-0x07, 0x01, 0xe5, 0x07, 0x03, 0x02, 0x02, 0x09,
-0x04, 0x01, 0x04, 0x04, 0xe5, 0x02, 0xe6, 0x02,
-0x02, 0x02, 0x03, 0x02, 0xe5, 0x01, 0x1a, 0xe5,
-0x1a, 0x02, 0x06, 0x0a, 0x02, 0x16, 0x08, 0xe5,
-0x06, 0x04, 0x02, 0x02, 0x0d, 0xe5, 0xe5, 0x01,
-0xe6, 0x12, 0x04, 0x1b, 0x04, 0x05, 0x0a, 0x02,
-0x02, 0x07, 0x0b, 0x15, 0xe5, 0x01, 0xe5, 0x0b,
-0xe6, 0x03, 0x02, 0xe6, 0x03, 0x02, 0xe6, 0x03,
-0x02, 0xe7, 0x05, 0xe6, 0x02, 0x08, 0x09, 0x06,
-0xe6, 0x01, 0x02, 0x03, 0x09, 0xe5, 0x01, 0x09,
-0x04, 0x09, 0x03, 0x09, 0x09, 0x09, 0x09, 0x03,
-0x03, 0x01, 0xe5, 0x07, 0x0b, 0x19, 0x0c, 0xe7,
-0x08, 0x08, 0x06, 0xe6, 0x0c, 0x01, 0xe6, 0x04,
-0x0a, 0xe5, 0x05, 0xe5, 0x03, 0x02, 0x0a, 0x03,
-0x05, 0x03, 0x05, 0x09, 0x04, 0x10, 0x13, 0x06,
-0x02, 0x09, 0x02, 0x03, 0x04, 0x04, 0x04, 0x09,
-0x0f, 0x12, 0x02, 0x01, 0x04, 0x15, 0x02, 0x08,
-0x02, 0x04, 0x0e, 0x08, 0x05, 0x28, 0x04, 0x01,
-0x03, 0x19, 0x20, 0xe6, 0x08, 0x06, 0x10, 0x19,
-0x01, 0x06, 0x01, 0x1d, 0x15, 0x02, 0x0a, 0x08,
-0x06, 0x01, 0xe6, 0x06, 0x07, 0x0b, 0x02, 0xe7,
-0xe5, 0x05, 0x09, 0x01, 0x11, 0x04, 0xe5, 0x02,
-0x04, 0xe5, 0x04, 0x01, 0x08, 0x07, 0x08, 0xe5,
-0x05, 0x16, 0x01, 0x02, 0x19, 0x10, 0x01, 0x0a,
-0x08, 0x0d, 0x0a, 0x0b, 0x0a, 0x09, 0x01, 0x01,
-0x19, 0x0e, 0x07, 0x04, 0xe5, 0x1a, 0x28, 0x02,
-0x01, 0x26, 0xe5, 0x04, 0x11, 0x02, 0xe5, 0x01,
-0xe5, 0xe5, 0x08, 0x02, 0xe5, 0x07, 0xe5, 0x13,
-0x01, 0xe5, 0xe9, 0xe5, 0x1b, 0xe5, 0x12, 0xe5,
-0x03, 0x01, 0x02, 0x03, 0x01, 0xe5, 0x01, 0xe6,
-0x03, 0x01, 0xe5, 0x0c, 0x11, 0x01, 0x01, 0xe5,
-0xe5, 0xe5, 0x01, 0x01, 0x12, 0x01, 0x09, 0x02,
-0x01, 0xe5, 0xe5, 0xe7, 0x01, 0xe5, 0x03, 0x08,
-0x06, 0x01, 0xe5, 0x01, 0x01, 0x04, 0x03, 0x16,
-0x01, 0x02, 0x01, 0xe5, 0xe6, 0x01, 0x02, 0x11,
-0xe5, 0xe5, 0xe5, 0x06, 0x06, 0xe5, 0xe5, 0xe5,
-0x02, 0xe5, 0x05, 0x07, 0x0b, 0x07, 0x19, 0xe5,
-0x05, 0x02, 0xe6, 0xe6, 0xe5, 0x01, 0x03, 0x02,
-0x16, 0x09, 0x01, 0x01, 0x02, 0x02, 0x09, 0x09,
-0x01, 0x01, 0xe5, 0x03, 0x23, 0xe5, 0x01, 0xe5,
-0x01, 0x06, 0x02, 0x0e, 0x05, 0x03, 0x0c, 0x01,
-0x02, 0x01, 0x07, 0x03, 0x05, 0x01, 0x01, 0x05,
-0x03, 0x1d, 0xe5, 0x02, 0x01, 0x02, 0x14, 0x01,
-0x09, 0x07, 0x04, 0x01, 0x0e, 0x04, 0x04, 0x03,
-0xe5, 0xe5, 0xe6, 0x03, 0x19, 0x02, 0x02, 0x03,
-0x17, 0x01, 0x07, 0x09, 0x04, 0x01, 0xe5, 0x0c,
-0x09, 0x01, 0x04, 0x01, 0xe5, 0x25, 0x01, 0xe5,
-0x03, 0x03, 0x26, 0xe5, 0xe5, 0x05, 0x0c, 0x08,
-0x0a, 0xe5, 0x1b, 0x02, 0xe6, 0x09, 0x01, 0x22,
-0x02, 0x01, 0x13, 0x01, 0x04, 0x02, 0xe5, 0x11,
-0xe5, 0x12, 0xe5, 0xe6, 0x07, 0x05, 0x09, 0x09,
-0x09, 0x03, 0x05, 0x0b, 0x03, 0x05, 0x09, 0x09,
-0x09, 0x06, 0x06, 0x03, 0xe5, 0x29, 0x05, 0x03,
-0x05, 0x0f, 0x05, 0x20, 0x0b, 0xe5, 0x27, 0x09,
-0x14, 0x07, 0x2b, 0xe7, 0x15, 0x02, 0x16, 0x10,
-0x01, 0x04, 0x02, 0x09, 0x01, 0x07, 0x01, 0x18,
-0x03, 0x19, 0xe5, 0x0c, 0x02, 0x01, 0x01, 0x01,
-0x06, 0xe5, 0x03, 0x02, 0x01, 0xe5, 0x07, 0xe6,
-0x04, 0x01, 0xe5, 0x04, 0xe5, 0xe6, 0x16, 0x03,
-0xe5, 0x17, 0x22, 0x0b, 0x02, 0x2e, 0xe5, 0x01,
-0x15, 0xe5, 0x01, 0x03, 0xe5, 0xe5, 0x05, 0x02,
-0xe5, 0xe5, 0x04, 0xe5, 0x07, 0x0a, 0xe7, 0xe5,
-0x04, 0xe5, 0x06, 0xe6, 0x07, 0xe5, 0x07, 0xe5,
-0x06, 0x03, 0x04, 0x14, 0x03, 0x23, 0x01, 0x04,
-0x0c, 0x01, 0xe6, 0x04, 0x01, 0x1b, 0xe5, 0x18,
-0x06, 0x09, 0xe5, 0xe5, 0x0f, 0x02, 0x01, 0x06,
-0x09, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x18, 0x02,
-0x19, 0x04, 0xe6, 0x05, 0x01, 0xe5, 0x09, 0x0a,
-0x09, 0x09, 0x07, 0x01, 0x1b, 0x01, 0x01, 0x19,
-0x04, 0x08, 0xe5, 0x01, 0x04, 0x09, 0x01, 0x07,
-0x0b, 0x01, 0x05, 0x21, 0x01, 0x01, 0xe5, 0x0f,
-0x19, 0xe5, 0xe5, 0x11, 0x01, 0xe6, 0x04, 0x01,
-0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0xe5, 0x1d, 0x01,
-0xe7, 0x05, 0x0a, 0x01, 0x02, 0x04, 0x01, 0x07,
-0x01, 0xe5, 0x02, 0x01, 0xe5, 0xe6, 0xe5, 0x03,
-0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0xe5, 0x01,
-0x03, 0x01, 0x07, 0x01, 0x01, 0x05, 0x01, 0x07,
-0x01, 0x0b, 0x01, 0xe5, 0x08, 0x20, 0x09, 0x02,
-0xe6, 0xe6, 0x05, 0x03, 0x0e, 0x0a, 0xe5, 0x01,
-0x16, 0xe7, 0x1d, 0x08, 0x07, 0x04, 0x01, 0x03,
-0x02, 0x05, 0x02, 0x06, 0x05, 0x0b, 0x07, 0x07,
-0x08, 0xe5, 0x01, 0xe5, 0x11, 0x16, 0x0f, 0xe5,
-0x03, 0xe5, 0xe5, 0x01, 0x04, 0x03, 0x04, 0x05,
-0x06, 0x19, 0xe6, 0xe7, 0x05, 0xe5, 0x05, 0x09,
-0x03, 0x09, 0x04, 0x02, 0x01, 0x02, 0x01, 0x10,
-0x02, 0x01, 0x04, 0x01, 0x03, 0x20, 0x02, 0xe6,
-0x10, 0x18, 0xe5, 0x03, 0x04, 0x01, 0x05, 0x01,
-0x09, 0x04, 0x14, 0x16, 0xe5, 0x01, 0xe5, 0x12,
-0x0b, 0x04, 0x07, 0x0e, 0x02, 0xe5, 0x02, 0x06,
-0x05, 0x26, 0xe6, 0xe7, 0x12, 0xe5, 0x04, 0x0f,
-0x03, 0x0b, 0x04, 0x0e, 0x0f, 0x03, 0x18, 0x01,
-0xe5, 0x1a, 0xe5, 0x10, 0x05, 0x0a, 0x11, 0x14,
-0x14, 0xe5, 0xe5, 0x16, 0xe6, 0x02, 0x02, 0xe7,
-0x02, 0x03, 0xe6, 0x06, 0xe6, 0xe6, 0x03, 0xe5,
-0x08, 0xe7, 0xe5, 0x29, 0x03, 0x02, 0x10, 0x06,
-0x03, 0x05, 0x03, 0x01, 0x02, 0x0a, 0x03, 0x02,
-0x07, 0xe5, 0x04, 0x0a, 0x20, 0x01, 0x01, 0xe5,
-0x14, 0x17, 0x02, 0xe5, 0x19, 0x01, 0xe5, 0xe5,
-0xe5, 0x02, 0x03, 0x06, 0x0d, 0x07, 0xe6, 0x01,
-0x2e, 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x0b,
-0xe5, 0x09, 0x01, 0x1f, 0x01, 0xe6, 0x12, 0x0c,
-0x0e, 0x17, 0x05, 0x0d, 0x09, 0x14, 0x02, 0xe5,
-0xe5, 0x01, 0x0b, 0xe5, 0xe6, 0x05, 0x02, 0xe5,
-0x10, 0xe5, 0x01, 0x0e, 0xe8, 0x05, 0xe5, 0xe6,
-0xe5, 0x01, 0xe5, 0x1d, 0x02, 0x01, 0xe5, 0x01,
-0x0e, 0x01, 0xe5, 0x04, 0x03, 0x01, 0x0c, 0x03,
-0xe5, 0x01, 0x0b, 0xe5, 0x01, 0x01, 0xe5, 0x05,
-0xe5, 0x03, 0x03, 0x1b, 0x01, 0x01, 0xe5, 0xe5,
-0xe5, 0x03, 0x15, 0x12, 0x07, 0x0b, 0x01, 0x04,
-0xe5, 0x03, 0x06, 0x1a, 0x01, 0x02, 0x01, 0xe5,
-0xe6, 0xe7, 0xe5, 0x16, 0x10, 0x01, 0x07, 0x05,
-0xe5, 0x03, 0x01, 0x04, 0xe5, 0xe5, 0x01, 0x06,
-0x1a, 0xe5, 0x04, 0x02, 0x01, 0x01, 0xe5, 0xe5,
-0x18, 0x09, 0x04, 0x04, 0x04, 0x04, 0x08, 0x0c,
-0x04, 0x23, 0xe6, 0xe7, 0xe5, 0x01, 0x25, 0x04,
-0x04, 0x03, 0x07, 0x03, 0x01, 0x02, 0x04, 0x04,
-0xe5, 0x02, 0x1d, 0xe5, 0xe6, 0x01, 0x02, 0x18,
-0x02, 0x06, 0x02, 0x02, 0x01, 0x04, 0x02, 0x06,
-0x01, 0x02, 0x01, 0x03, 0xe5, 0x08, 0xe7, 0x20,
-0x06, 0xe5, 0x1a, 0x01, 0xe5, 0x05, 0xe7, 0xe5,
-0x03, 0x01, 0xe7, 0x02, 0xe7, 0x03, 0x01, 0x04,
-0x02, 0x03, 0xe5, 0xe5, 0x01, 0x25, 0x01, 0xe5,
-0x04, 0x14, 0x01, 0xe5, 0xe6, 0x02, 0x01, 0x09,
-0x07, 0x01, 0x0c, 0x01, 0xe5, 0x02, 0x01, 0x02,
-0x25, 0x01, 0x02, 0x01, 0x18, 0xe5, 0x07, 0xe5,
-0x11, 0xe5, 0x13, 0xe5, 0x01, 0x27, 0x02, 0xe6,
-0x0d, 0x09, 0xe6, 0x06, 0xe6, 0x06, 0x09, 0xe5,
-0x04, 0x04, 0x09, 0xe5, 0x01, 0x05, 0x02, 0x01,
-0x01, 0x02, 0x09, 0x0d, 0xe9, 0x01, 0x19, 0x09,
-0x09, 0x09, 0xe5, 0x01, 0x11, 0x2a, 0x02, 0x39,
-0x01, 0x13, 0x2b, 0x02, 0x17, 0x01, 0xe7, 0x06,
-0x01, 0x09, 0x06, 0xe7, 0x02, 0x02, 0x01, 0x04,
-0x05, 0xe6, 0xe5, 0xe6, 0xe5, 0x08, 0x18, 0xe8,
-0x16, 0x01, 0xe6, 0x08, 0x09, 0x04, 0x02, 0xe6,
-0x01, 0x04, 0x01, 0xe5, 0x04, 0x02, 0xe6, 0x04,
-0x01, 0xe5, 0x05, 0x02, 0x17, 0xe8, 0x15, 0x04,
-0x0c, 0x0e, 0x09, 0x01, 0x04, 0x04, 0x01, 0x05,
-0x01, 0x06, 0x02, 0x18, 0xe6, 0xe5, 0x14, 0xe5,
-0x05, 0xe6, 0x06, 0xe6, 0x08, 0xe5, 0x01, 0xe5,
-0x02, 0xe5, 0x02, 0x01, 0x04, 0xe5, 0x02, 0x04,
-0xe5, 0xe5, 0xe5, 0x03, 0xe5, 0xe5, 0x06, 0xe5,
-0x07, 0xe5, 0x0a, 0x17, 0x01, 0xe5, 0x03, 0x09,
-0x01, 0x01, 0x09, 0xe5, 0x07, 0x01, 0xe6, 0x06,
-0xe5, 0x11, 0x18, 0xe5, 0x01, 0x17, 0x01, 0x03,
-0x02, 0x06, 0x02, 0xe5, 0xe5, 0x08, 0x06, 0x02,
-0x01, 0x06, 0x02, 0xe5, 0x04, 0x09, 0xe5, 0x19,
-0xe8, 0x19, 0x03, 0xe5, 0x07, 0xe5, 0xe5, 0xe5,
-0x08, 0xe5, 0x02, 0x03, 0x02, 0x04, 0x04, 0x04,
-0x09, 0x04, 0x17, 0xe9, 0x1b, 0xe5, 0x07, 0xe5,
-0x02, 0x01, 0x02, 0x06, 0x02, 0x06, 0x02, 0x03,
-0x04, 0x02, 0x07, 0x03, 0x02, 0x1a, 0xe9, 0x09,
-0x09, 0x09, 0x08, 0x05, 0xe5, 0x07, 0x0c, 0x05,
-0x02, 0x06, 0x24, 0x03, 0x0b, 0x05, 0x01, 0x06,
-0xe5, 0xe5, 0x06, 0xe6, 0xe5, 0x04, 0x01, 0xe5,
-0x05, 0x01, 0x04, 0x04, 0xe7, 0x01, 0x03, 0x01,
-0xe6, 0x04, 0x01, 0x07, 0x01, 0xe5, 0xe5, 0x03,
-0x01, 0x0a, 0xe8, 0x0e, 0xe5, 0x09, 0x07, 0xe5,
-0x05, 0x08, 0xe5, 0xe5, 0x02, 0x08, 0xe6, 0xe5,
-0xe6, 0xe6, 0x01, 0x04, 0xe5, 0x0c, 0x0a, 0x06,
-0x02, 0x01, 0xe7, 0x13, 0x07, 0xe5, 0x01, 0x01,
-0x06, 0x0c, 0xe5, 0x03, 0x03, 0x03, 0x05, 0x12,
-0x1a, 0x01, 0x02, 0x0d, 0x01, 0x03, 0x09, 0x02,
-0x04, 0x01, 0xe5, 0xe5, 0x08, 0x09, 0xe5, 0x05,
-0x03, 0x01, 0x07, 0x01, 0x0d, 0x0f, 0xe5, 0x03,
-0x03, 0x03, 0xe5, 0x18, 0x0e, 0x12, 0xe7, 0x06,
-0x01, 0x09, 0x03, 0x19, 0x05, 0x02, 0xe5, 0x06,
-0x09, 0x09, 0xe5, 0x07, 0x02, 0x01, 0x05, 0x01,
-0x0b, 0x01, 0x07, 0x03, 0x01, 0x03, 0x01, 0x0f,
-0x10, 0x02, 0xe5, 0xe8, 0x08, 0x01, 0x06, 0x12,
-0x06, 0x09, 0x03, 0xe5, 0x01, 0x03, 0x03, 0x03,
-0xe6, 0x08, 0x06, 0x10, 0x01, 0x07, 0xe5, 0xe8,
-0xe5, 0x0c, 0x0f, 0x0b, 0x02, 0xe5, 0x04, 0x04,
-0x03, 0xe5, 0x02, 0x03, 0x02, 0x02, 0x01, 0x04,
-0x06, 0x0b, 0x10, 0x01, 0xe5, 0xe5, 0x11, 0x01,
-0x06, 0x14, 0x08, 0x02, 0x01, 0xe5, 0x03, 0xe5,
-0xe5, 0x01, 0x02, 0x04, 0x02, 0x02, 0x01, 0x1f,
-0x03, 0xe5, 0x0a, 0x09, 0x09, 0xe7, 0x02, 0x0d,
-0xe6, 0x06, 0xe6, 0x03, 0x05, 0x04, 0x27, 0xe7,
-0xe5, 0xe5, 0x06, 0x1a, 0x03, 0x0e, 0x07, 0x01,
-0x0a, 0x23, 0x0b, 0xe7, 0xe6, 0x11, 0x02, 0x0a,
-0xe5, 0xe5, 0x01, 0x02, 0x01, 0x07, 0x03, 0xe5,
-0x05, 0x0d, 0x02, 0x02, 0x05, 0x1b, 0x02, 0x01,
-0x03, 0x0f, 0x09, 0xe5, 0x06, 0x05, 0xe5, 0xe7,
-0x01, 0x01, 0xe6, 0xe5, 0x04, 0xe7, 0x05, 0x02,
-0xe5, 0x06, 0xe5, 0x04, 0x1d, 0x02, 0x17, 0x0d,
-0x06, 0x02, 0x06, 0x16, 0x09, 0x24, 0x01, 0x01,
-0x11, 0xe5, 0x08, 0x01, 0x0d, 0xe5, 0x04, 0x02,
-0xe5, 0x0b, 0x08, 0x05, 0x02, 0xe6, 0x06, 0xe5,
-0x13, 0x01, 0xe6, 0xe5, 0x01, 0x01, 0x0e, 0xe5,
-0x08, 0xe5, 0xe6, 0x03, 0xe5, 0x0f, 0x15, 0x06,
-0xe6, 0x09, 0x11, 0x01, 0x01, 0x02, 0xe6, 0x03,
-0x15, 0x08, 0xe5, 0x09, 0x05, 0x06, 0x01, 0x04,
-0x11, 0x01, 0x02, 0x15, 0x01, 0x02, 0x01, 0xe5,
-0xe6, 0x01, 0x02, 0x17, 0x06, 0x03, 0x01, 0xe5,
-0x12, 0x1a, 0x18, 0xe5, 0x04, 0x03, 0xe5, 0xe6,
-0xe5, 0x18, 0x06, 0x02, 0x03, 0xe5, 0x08, 0x01,
-0x05, 0x03, 0x04, 0x01, 0x01, 0x06, 0x02, 0xe5,
-0xe6, 0x02, 0x01, 0x1a, 0xe5, 0xe5, 0xe5, 0x01,
-0x1e, 0x03, 0x02, 0xe6, 0x01, 0x01, 0x01, 0x02,
-0xe5, 0xe5, 0xe5, 0x06, 0x04, 0x04, 0x08, 0xe5,
-0xe6, 0x01, 0x02, 0x15, 0x02, 0xe5, 0x03, 0xe5,
-0x01, 0x18, 0x07, 0x04, 0x01, 0x0a, 0x01, 0x09,
-0x01, 0x02, 0x01, 0x01, 0x08, 0x01, 0x01, 0x0c,
-0x12, 0x02, 0xe8, 0x1b, 0xe6, 0x01, 0x03, 0xe5,
-0xe5, 0x0b, 0x01, 0x09, 0x04, 0x01, 0x01, 0xe5,
-0x08, 0x01, 0xe5, 0x22, 0x01, 0xe5, 0x07, 0x10,
-0x01, 0xe5, 0x01, 0x03, 0x01, 0x02, 0x07, 0x02,
-0x06, 0xe5, 0x08, 0xe5, 0x01, 0x06, 0xe5, 0x07,
-0x09, 0x02, 0x10, 0x04, 0x0a, 0x01, 0x0d, 0xe5,
-0x01, 0x05, 0xe5, 0x15, 0x0b, 0xe5, 0x04, 0x02,
-0xe5, 0x07, 0xe6, 0x1a, 0x01, 0xe8, 0x06, 0x05,
-0x09, 0xe6, 0xe5, 0x04, 0xe5, 0x02, 0x01, 0x02,
-0x02, 0x06, 0x02, 0xe5, 0x01, 0x04, 0x09, 0x09,
-0xe5, 0x02, 0x01, 0x02, 0x09, 0x0d, 0x01, 0x02,
-0x02, 0x19, 0x03, 0x04, 0xe5, 0x02, 0x09, 0x08,
-0xe5, 0x06, 0x09, 0x03, 0x09, 0x1f, 0x1f, 0x05,
-0x03, 0x09, 0x09, 0x13, 0x09, 0x1e, 0x01, 0x01,
-0x17, 0x01, 0xe5, 0xe5, 0x05, 0xe7, 0x02, 0x02,
-0x07, 0x01, 0x04, 0x09, 0x01, 0x01, 0xe5, 0x03,
-0x04, 0x02, 0x08, 0x07, 0x01, 0x0e, 0xe5, 0xe6,
-0x15, 0xe5, 0xe7, 0x01, 0x02, 0x02, 0xe5, 0x01,
-0x02, 0x01, 0xe5, 0x05, 0x01, 0xe5, 0x09, 0x01,
-0x05, 0x02, 0xe5, 0xe5, 0x01, 0xe5, 0xe6, 0x05,
-0x02, 0x06, 0x01, 0xe5, 0x0c, 0x01, 0x01, 0x08,
-0x0b, 0x02, 0x0b, 0xe5, 0x05, 0x01, 0x09, 0x04,
-0x06, 0x07, 0x09, 0x09, 0x09, 0x01, 0x10, 0x01,
-0x15, 0xe6, 0x04, 0xe8, 0x04, 0xe8, 0xe5, 0x04,
-0xe6, 0xe5, 0x03, 0xe5, 0x0a, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x03, 0x05, 0xe6, 0xe5, 0x04, 0xe5,
-0x06, 0xe5, 0x01, 0x1a, 0x08, 0x09, 0xe5, 0x05,
-0x01, 0xe5, 0x09, 0x07, 0x01, 0x07, 0x0b, 0x1b,
-0xe5, 0x19, 0x02, 0x02, 0xe5, 0x05, 0x01, 0xe5,
-0xe5, 0x06, 0x01, 0xe5, 0x02, 0x01, 0x0b, 0xe5,
-0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0x19, 0x01,
-0x01, 0xe5, 0x15, 0x06, 0xe5, 0x02, 0x03, 0x01,
-0x01, 0x01, 0xe5, 0x07, 0x08, 0x02, 0x07, 0x09,
-0x09, 0x1b, 0xe7, 0x16, 0x04, 0xe5, 0xe7, 0x03,
-0x01, 0xe7, 0xe6, 0x05, 0x01, 0xe5, 0x02, 0x09,
-0x01, 0x02, 0x04, 0x04, 0x0b, 0x1a, 0x01, 0xe5,
-0x34, 0x01, 0x03, 0x04, 0x01, 0xe6, 0x01, 0xe5,
-0x03, 0xe5, 0x02, 0x01, 0x23, 0x01, 0x01, 0xe5,
-0x10, 0x01, 0x07, 0x01, 0xe5, 0x05, 0x01, 0x06,
-0xe5, 0xe6, 0x05, 0x01, 0x04, 0xe5, 0x02, 0x01,
-0x07, 0x01, 0x02, 0xe5, 0x02, 0x01, 0xe5, 0xe5,
-0x03, 0x01, 0xe6, 0x04, 0x01, 0x0a, 0x03, 0x16,
-0x02, 0xe5, 0x07, 0x06, 0x02, 0xe5, 0x04, 0x02,
-0xe5, 0x02, 0x08, 0x01, 0x03, 0x01, 0xe5, 0x08,
-0x02, 0x05, 0xe5, 0x01, 0x0a, 0x09, 0x01, 0x01,
-0xe5, 0x15, 0x01, 0x05, 0x0c, 0x09, 0xe5, 0xe5,
-0x01, 0x03, 0x06, 0x02, 0xe5, 0xe5, 0x02, 0xe5,
-0x01, 0x03, 0x01, 0x03, 0x08, 0x09, 0x06, 0xe5,
-0xe7, 0x04, 0x1d, 0x01, 0x07, 0x0a, 0xe5, 0x03,
-0xe5, 0x05, 0x03, 0x05, 0xe5, 0x01, 0x0c, 0x18,
-0xe9, 0x17, 0x05, 0x0a, 0x05, 0x09, 0x06, 0x06,
-0x04, 0x07, 0xe6, 0xe5, 0x0e, 0x0b, 0x05, 0xe5,
-0xe5, 0x15, 0xe5, 0x07, 0x0e, 0x01, 0x01, 0x0b,
-0x04, 0xe5, 0x02, 0x01, 0x05, 0xe6, 0xe5, 0x15,
-0x09, 0x02, 0x03, 0xe7, 0x17, 0x12, 0x0d, 0x03,
-0x0a, 0x09, 0x01, 0xe5, 0x02, 0x01, 0x1b, 0x01,
-0xe5, 0xe5, 0x11, 0x0d, 0x0a, 0xe6, 0x05, 0xe5,
-0x02, 0x05, 0xe5, 0x09, 0x01, 0x03, 0x06, 0x04,
-0x1b, 0x01, 0xe5, 0xe5, 0x1a, 0x0a, 0x0b, 0x01,
-0xe5, 0x05, 0x02, 0xe5, 0x04, 0xe6, 0x08, 0x09,
-0x14, 0x08, 0xe5, 0x01, 0x06, 0x11, 0x0c, 0x01,
-0x11, 0x04, 0xe5, 0x09, 0x05, 0x08, 0x1f, 0xe5,
-0xe7, 0x0a, 0x06, 0x03, 0x02, 0x06, 0x1e, 0x09,
-0x07, 0x0c, 0x04, 0x09, 0x0d, 0x02, 0xe5, 0x01,
-0x06, 0x09, 0x05, 0x03, 0x04, 0x06, 0x02, 0x10,
-0x06, 0x08, 0x03, 0x02, 0x01, 0x01, 0x07, 0x12,
-0x04, 0x04, 0x03, 0x18, 0x0d, 0x02, 0x0d, 0x04,
-0x05, 0x02, 0x03, 0x03, 0x05, 0x03, 0x05, 0x11,
-0x09, 0xe5, 0xe5, 0x1e, 0x05, 0x03, 0x01, 0x17,
-0x06, 0x09, 0x05, 0x02, 0xe5, 0x12, 0x07, 0x01,
-0x03, 0x06, 0x23, 0x06, 0x04, 0x0b, 0x10, 0x01,
-0x08, 0x11, 0x02, 0x02, 0xe5, 0xe6, 0x07, 0x07,
-0x14, 0x08, 0x06, 0x18, 0x09, 0x09, 0x09, 0x0e,
-0x02, 0xe6, 0x0a, 0x09, 0x09, 0x02, 0xe5, 0x1d,
-0xe5, 0x01, 0x01, 0x04, 0xe5, 0x24, 0xe6, 0xe9,
-0x01, 0x01, 0x08, 0x09, 0xe6, 0x06, 0xe6, 0xe5,
-0x1e, 0x02, 0x01, 0xe5, 0x2a, 0x01, 0x01, 0xe5,
-0xe5, 0x03, 0x08, 0x06, 0x01, 0x0a, 0x2c, 0xe5,
-0x26, 0x02, 0xe5, 0xe6, 0x01, 0x0a, 0x06, 0xe5,
-0x02, 0x04, 0x02, 0x01, 0x27, 0x06, 0xe5, 0x02,
-0x1c, 0x02, 0x01, 0xe6, 0xe6, 0x0c, 0x09, 0x01,
-0x02, 0x02, 0x01, 0x01, 0x03, 0x02, 0xe5, 0xe5,
-0x06, 0x01, 0x15, 0x01, 0xe5, 0xe5, 0xe5, 0x05,
-0x02, 0x19, 0xe6, 0xe7, 0x01, 0x0a, 0x03, 0x05,
-0x01, 0x02, 0x01, 0x01, 0xe5, 0xe5, 0xe5, 0x03,
-0xe5, 0xe5, 0xe5, 0x04, 0x01, 0x01, 0x16, 0x08,
-0x02, 0x01, 0x15, 0x02, 0x01, 0xe5, 0x02, 0xe5,
-0x03, 0xe5, 0x05, 0x0e, 0x04, 0x01, 0x03, 0xe6,
-0xe5, 0xe5, 0x06, 0x01, 0x15, 0x02, 0x0b, 0x1a,
-0x02, 0xe5, 0xe6, 0x05, 0x06, 0x0b, 0x07, 0x05,
-0xe5, 0x01, 0x01, 0x07, 0x01, 0x18, 0xe6, 0x07,
-0xe6, 0x18, 0x01, 0xe6, 0xe6, 0x12, 0x08, 0x0a,
-0x02, 0x25, 0x14, 0xe5, 0x0c, 0x02, 0x03, 0x02,
-0x0a, 0x09, 0x01, 0x11, 0xe5, 0x31, 0x09, 0xe5,
-0x12, 0x02, 0xe5, 0x09, 0x03, 0x05, 0xe5, 0x01,
-0x06, 0x02, 0x02, 0x06, 0x09, 0x0b, 0x09, 0x04,
-0x01, 0x02, 0x03, 0x05, 0x09, 0x0d, 0xe9, 0x01,
-0x12, 0x09, 0xe5, 0x2e, 0x03, 0x26, 0xe5, 0xe5,
-0x1e, 0x31, 0x2b, 0xe5, 0xe5, 0x0a, 0x01, 0x09,
-0x04, 0x02, 0x06, 0x1f, 0x07, 0x01, 0x0e, 0x1a,
-0x01, 0x0d, 0x01, 0xe5, 0x04, 0xe5, 0x01, 0xe5,
-0x07, 0x05, 0x03, 0x19, 0x06, 0x07, 0xe5, 0x04,
-0x02, 0xe5, 0x17, 0x02, 0x0c, 0x0c, 0x06, 0x3e,
-0x1a, 0x01, 0x01, 0x13, 0xe5, 0xe6, 0x04, 0xe6,
-0x06, 0xe6, 0x06, 0xe6, 0x08, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5, 0x07, 0xe5,
-0x06, 0x01, 0xe6, 0x13, 0x05, 0x04, 0x04, 0xe5,
-0x02, 0x01, 0x02, 0x03, 0xe5, 0x18, 0x0a, 0xe5,
-0x04, 0x1a, 0xe5, 0xe6, 0x15, 0x07, 0x01, 0x09,
-0xe5, 0x07, 0x18, 0x11, 0x1b, 0xe5, 0xe5, 0x12,
-0x01, 0xe5, 0x02, 0x02, 0x01, 0x07, 0xe6, 0xe5,
-0x01, 0x02, 0x01, 0x0c, 0x0c, 0x13, 0x18, 0x01,
-0xe6, 0x12, 0x06, 0x01, 0xe6, 0x04, 0x03, 0x02,
-0x02, 0x02, 0x1b, 0x02, 0x07, 0x08, 0x18, 0xe5,
-0x01, 0x0d, 0xe5, 0xe5, 0x05, 0x01, 0xe5, 0x02,
-0x02, 0x03, 0x0a, 0x02, 0x17, 0x02, 0x03, 0x05,
-0x0e, 0x11, 0x02, 0x01, 0x0a, 0x06, 0x01, 0xe5,
-0x01, 0x03, 0x01, 0x04, 0x02, 0x01, 0x07, 0x01,
-0x01, 0x05, 0x01, 0x02, 0x01, 0x04, 0x01, 0x01,
-0x05, 0x01, 0x07, 0x01, 0x02, 0x04, 0xe6, 0x06,
-0x01, 0x0b, 0x02, 0x09, 0x04, 0x0a, 0x09, 0xe5,
-0x01, 0x05, 0xe5, 0x13, 0xe5, 0x01, 0x03, 0xe5,
-0x01, 0x05, 0x05, 0x1e, 0x01, 0x01, 0xe5, 0xe5,
-0x01, 0x0b, 0x04, 0x05, 0x04, 0x01, 0x05, 0x03,
-0x12, 0xe5, 0xe5, 0x0b, 0x01, 0x06, 0x01, 0x1d,
-0x02, 0x01, 0x0b, 0x0d, 0x11, 0x0e, 0x04, 0x09,
-0x30, 0x03, 0xe5, 0x03, 0x02, 0x04, 0x01, 0x02,
-0x01, 0xe5, 0xe7, 0x04, 0x01, 0x01, 0x07, 0x01,
-0x0a, 0x0b, 0x08, 0x09, 0xe5, 0x05, 0x01, 0xe5,
-0x11, 0x05, 0x02, 0x02, 0x02, 0x09, 0x03, 0x04,
-0x0a, 0x0a, 0x02, 0x01, 0x07, 0x03, 0x11, 0x01,
-0x01, 0x05, 0x05, 0x0d, 0x06, 0x02, 0xe5, 0xe5,
-0xe6, 0x0b, 0x08, 0x06, 0xe8, 0xe5, 0x03, 0xe5,
-0xe5, 0xe5, 0x10, 0x04, 0x04, 0x01, 0x0a, 0xe5,
-0x01, 0x04, 0xe6, 0x16, 0x02, 0x01, 0x05, 0x0a,
-0x06, 0x02, 0x02, 0x04, 0x01, 0x15, 0x04, 0x05,
-0x04, 0x0a, 0x01, 0x21, 0x03, 0xe5, 0x05, 0x12,
-0x04, 0x07, 0x07, 0x10, 0x12, 0x27, 0xe8, 0x02,
-0x08, 0x0f, 0x16, 0x08, 0x02, 0x0a, 0x05, 0x03,
-0x07, 0x1c, 0xe6, 0xe6, 0xe5, 0x11, 0x1a, 0x01,
-0x02, 0x08, 0x01, 0x06, 0x1c, 0x16, 0xe5, 0xe6,
-0x08, 0xe5, 0x07, 0x0c, 0x02, 0xe5, 0x07, 0x09,
-0x10, 0x08, 0x05, 0xe5, 0x03, 0x01, 0x01, 0x17,
-0x01, 0xe7, 0x18, 0x08, 0xe5, 0x02, 0x05, 0x08,
-0xe5, 0x07, 0x16, 0x05, 0xe5, 0x01, 0x01, 0x18,
-0xe6, 0x18, 0x08, 0x08, 0xe5, 0x09, 0x17, 0x01,
-0x03, 0xe5, 0x08, 0x16, 0x03, 0x02, 0x03, 0x09,
-0x09, 0x13, 0x04, 0x20, 0xe5, 0x01, 0x02, 0x06,
-0x17, 0xe5, 0x01, 0x01, 0xe6, 0x0b, 0x0b, 0x02,
-0x0b, 0x01, 0xe7, 0x22, 0xe5, 0x02, 0x09, 0x14,
-0x01, 0x01, 0x03, 0xe5, 0x0c, 0x05, 0xe5, 0x0e,
-0x02, 0xe5, 0x04, 0x22, 0xe5, 0x03, 0x07, 0x0f,
-0xe5, 0x03, 0x01, 0x04, 0x01, 0xe5, 0xe5, 0x01,
-0x07, 0x19, 0xe5, 0x01, 0x01, 0xe5, 0x22, 0x04,
-0x04, 0xe5, 0xe5, 0x0e, 0xe5, 0x05, 0x02, 0x01,
-0x01, 0xe5, 0x0b, 0x12, 0xe5, 0x02, 0x05, 0x01,
-0x02, 0xe5, 0x01, 0x1e, 0x01, 0x02, 0x1f, 0xeb,
-0xe5, 0x09, 0x03, 0x09, 0x01, 0x01, 0xe6, 0x08,
-0x01, 0x04, 0x01, 0x20, 0x02, 0x06, 0x01, 0x01,
-0x01, 0x02, 0x0e, 0x05, 0xe6, 0x0b, 0x13, 0x09,
-0x01, 0x27, 0x01, 0x04, 0x04, 0x15, 0x04, 0xe7,
-0x0b, 0x13, 0x06, 0x01, 0xe5, 0xe5, 0xe5, 0x2b,
-0xe5, 0x02, 0x1a, 0xe6, 0x1c, 0x02, 0x05, 0xe5,
-0x07, 0xe5, 0x01, 0x06, 0x1c, 0x02, 0x01, 0xe5,
-0x05, 0x02, 0x0b, 0x04, 0xe5, 0x02, 0x0a, 0x13,
-0x06, 0x02, 0x01, 0x05, 0x01, 0x0b, 0x1d, 0x1d,
-0x01, 0xe7, 0x09, 0x03, 0x02, 0x06, 0x02, 0x02,
-0x03, 0x03, 0x05, 0xe5, 0xe5, 0xe7, 0x01, 0x0b,
-0x09, 0x04, 0x01, 0x02, 0x02, 0x01, 0xe6, 0x01,
-0x02, 0x06, 0x0d, 0x01, 0xe7, 0x15, 0x09, 0x05,
-0x03, 0x09, 0x1f, 0x09, 0x1b, 0xe8, 0x14, 0x09,
-0x08, 0x08, 0x20, 0x08, 0x1e, 0xe5, 0x01, 0x16,
-0xe5, 0xe5, 0x06, 0x01, 0x06, 0xe5, 0x07, 0x20,
-0x01, 0xe6, 0x04, 0x01, 0x19, 0x01, 0xe5, 0x01,
-0x14, 0x01, 0xe5, 0x05, 0x01, 0x01, 0x01, 0x06,
-0xe5, 0x07, 0x1c, 0x08, 0xe5, 0x01, 0x17, 0xe6,
-0xe6, 0x15, 0x01, 0x04, 0x40, 0x01, 0x18, 0xe8,
-0x14, 0xe5, 0x01, 0x05, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe6, 0x01,
-0x04, 0xe6, 0xe5, 0x04, 0xe5, 0x07, 0xe5, 0x06,
-0x02, 0xe5, 0x16, 0x01, 0x07, 0x01, 0x57, 0xe7,
-0x03, 0x12, 0x01, 0x07, 0x01, 0x13, 0x1f, 0x07,
-0x1c, 0xe6, 0x16, 0x01, 0x26, 0x14, 0x01, 0x07,
-0x1c, 0x01, 0x04, 0x12, 0x01, 0x07, 0x04, 0x09,
-0x26, 0x07, 0x15, 0x01, 0x04, 0xe6, 0x0c, 0x01,
-0xe5, 0x09, 0x05, 0xe5, 0xe5, 0x13, 0x1b, 0x06,
-0x02, 0x10, 0x04, 0x03, 0xe6, 0xe6, 0x02, 0xe5,
-0x06, 0x01, 0x02, 0x01, 0xe5, 0x05, 0x01, 0x04,
-0x02, 0xe6, 0x06, 0x01, 0x01, 0x05, 0x01, 0x04,
-0x04, 0x01, 0x02, 0x04, 0x01, 0x04, 0x02, 0x01,
-0x01, 0x02, 0x02, 0x01, 0x07, 0x01, 0x01, 0x04,
-0x05, 0xe6, 0x02, 0x12, 0x0e, 0x07, 0x03, 0x0c,
-0x08, 0x0c, 0x06, 0x1e, 0x01, 0xe7, 0x1d, 0x08,
-0x01, 0x0e, 0x24, 0x13, 0x06, 0xe5, 0xe5, 0xe5,
-0x14, 0x09, 0xe5, 0x07, 0xe5, 0x01, 0x01, 0x0a,
-0x02, 0x01, 0x05, 0x34, 0xe9, 0xe5, 0x01, 0x02,
-0x0e, 0x01, 0x07, 0x01, 0xe5, 0x05, 0xe7, 0x01,
-0xe5, 0x01, 0x0f, 0x0f, 0x09, 0x15, 0x07, 0xe5,
-0x16, 0x01, 0x0a, 0x03, 0x03, 0x06, 0x03, 0x02,
-0x04, 0x13, 0x03, 0x09, 0x03, 0x10, 0x02, 0x01,
-0xe5, 0xe6, 0x18, 0x06, 0x0b, 0xe6, 0x07, 0x06,
-0x06, 0x07, 0x0e, 0x1b, 0xe9, 0x0f, 0x05, 0x04,
-0x08, 0x06, 0xe5, 0x04, 0x05, 0x02, 0x03, 0x14,
-0x04, 0x03, 0x1b, 0x01, 0x02, 0x11, 0x0a, 0xe5,
-0x07, 0x06, 0x11, 0xe5, 0x39, 0x02, 0x0d, 0xe5,
-0x0b, 0x03, 0x0c, 0x10, 0x01, 0x39, 0x01, 0xe5,
-0xe5, 0x0c, 0x02, 0x05, 0x04, 0x10, 0x05, 0xe5,
-0x0a, 0x3a, 0xe5, 0xe6, 0x01, 0x16, 0x0d, 0x02,
-0x06, 0x05, 0xe5, 0x06, 0xe5, 0xe5, 0x0e, 0x25,
-0xe5, 0x01, 0xe5, 0x1b, 0x09, 0xe5, 0x04, 0x08,
-0xe5, 0x07, 0x02, 0x19, 0x11, 0x0b, 0x02, 0x17,
-0x15, 0x06, 0x02, 0x0a, 0x3a, 0xe7, 0x11, 0xe5,
-0x04, 0x0f, 0x4b, 0xe5, 0x02, 0xe6, 0x01, 0x01,
-0x0e, 0xe5, 0x05, 0x0f, 0xe6, 0x11, 0x34, 0x01,
-0x01, 0x03, 0xe5, 0x03, 0x05, 0x01, 0xe5, 0xe5,
-0x03, 0xe5, 0xe5, 0xe6, 0x0f, 0x01, 0x04, 0x01,
-0xe5, 0x01, 0x03, 0xe5, 0x02, 0x04, 0x28, 0xe5,
-0x03, 0x01, 0x03, 0x02, 0x02, 0x07, 0x02, 0x01,
-0x04, 0xe5, 0xe5, 0xe6, 0x0c, 0xe5, 0xe5, 0xe5,
-0x03, 0xe5, 0x02, 0x04, 0x32, 0xe5, 0x05, 0x02,
-0x01, 0x01, 0x0b, 0x01, 0x01, 0x02, 0x04, 0x21,
-0xe5, 0x01, 0xe5, 0xe5, 0x05, 0x02, 0x2d, 0xe7,
-0xe6, 0x01, 0x0a, 0x01, 0x02, 0x04, 0x13, 0x01,
-0x01, 0x01, 0x02, 0x05, 0x02, 0xe5, 0x05, 0x2e,
-0x02, 0x03, 0x01, 0xe6, 0x17, 0x11, 0x01, 0x07,
-0x07, 0x03, 0x35, 0x02, 0xe8, 0x11, 0x06, 0x11,
-0x01, 0x09, 0x03, 0xe5, 0x3d, 0x01, 0xe5, 0x11,
-0x09, 0x14, 0x02, 0x05, 0x3e, 0xe7, 0xe5, 0x1a,
-0xe5, 0x1e, 0x3d, 0xe5, 0x01, 0xe5, 0x0a, 0x02,
-0x09, 0x09, 0x09, 0x06, 0x02, 0x03, 0x02, 0x04,
-0x09, 0x09, 0x09, 0x09, 0x0d, 0xe9, 0x01, 0x08,
-0xe5, 0x04, 0x09, 0x14, 0x02, 0x05, 0x02, 0xe5,
-0x3a, 0xe5, 0xe6, 0x0a, 0x26, 0x08, 0x40, 0xe6,
-0x0c, 0x04, 0x04, 0x01, 0x02, 0x15, 0x0b, 0x04,
-0x36, 0xe8, 0x0e, 0x01, 0x02, 0x02, 0x01, 0xe6,
-0xe5, 0x0f, 0x0a, 0x09, 0xe5, 0x35, 0xe8, 0x08,
-0x02, 0x09, 0x01, 0x10, 0x07, 0x08, 0x07, 0x2e,
-0x08, 0xe7, 0x0e, 0x05, 0xe6, 0xe5, 0x04, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x09, 0xe5, 0x0c, 0x09, 0x01, 0x14, 0x14, 0x36,
-0x02, 0xe5, 0x0e, 0x07, 0x16, 0x4d, 0x01, 0xe5,
-0x0b, 0x09, 0x01, 0x11, 0x0b, 0x01, 0x06, 0x02,
-0x36, 0xe5, 0xe6, 0x02, 0x0b, 0x02, 0x04, 0x04,
-0x0e, 0x02, 0x11, 0x39, 0xe5, 0x01, 0x2b, 0x15,
-0x01, 0xe5, 0x20, 0x12, 0xe5, 0xe7, 0x10, 0x01,
-0x02, 0x03, 0xe5, 0xe5, 0x06, 0x01, 0x02, 0x04,
-0x01, 0x07, 0x01, 0x05, 0x03, 0x01, 0x07, 0x01,
-0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x0b, 0xe5,
-0xe5, 0x18, 0x12, 0x02, 0x09, 0x21, 0x01, 0x1c,
-0xe6, 0xe6, 0x13, 0x1c, 0x0b, 0x01, 0x13, 0x24,
-0xe5, 0x01, 0xe5, 0x18, 0x14, 0x10, 0x3b, 0x02,
-0x17, 0x01, 0x0e, 0x02, 0x01, 0x07, 0xe5, 0x09,
-0x01, 0x16, 0x1a, 0x05, 0x02, 0x17, 0x01, 0x13,
-0x0d, 0x03, 0x04, 0x03, 0x10, 0x1c, 0x02, 0x02,
-0xe6, 0x19, 0x09, 0x06, 0x05, 0x0f, 0x37, 0x01,
-0xe7, 0x25, 0x04, 0x01, 0x11, 0x08, 0x10, 0x1f,
-0x02, 0x01, 0x26, 0x08, 0x0f, 0x06, 0x33, 0x01,
-0x01, 0x0a, 0x10, 0x0f, 0x13, 0x07, 0x31, 0x02,
-0xe6, 0x11, 0x16, 0x01, 0x03, 0x0f, 0x3b, 0x02,
-0x14, 0x01, 0x16, 0xe5, 0x0c, 0x28, 0x13, 0x04,
-0xe5, 0x2b, 0x0a, 0x36, 0x0a, 0x01, 0x01, 0x2b,
-0xe5, 0x0d, 0x3e, 0xe8, 0xe5, 0x75, 0xe5, 0x03,
-0x02, 0x01, 0x28, 0x47, 0x01, 0x02, 0xe6, 0xe5,
-0x03, 0x23, 0x01, 0x4a, 0x04, 0xe5, 0x01, 0x02,
-0x74, 0x02, 0xe6, 0xe6, 0x04, 0x05, 0x21, 0x01,
-0x01, 0x01, 0x45, 0x01, 0xe6, 0x01, 0x08, 0x25,
-0x02, 0x3f, 0x02, 0x05, 0xe6, 0x72, 0x04, 0xe5,
-0xe5, 0xe5, 0x01, 0x2c, 0x4a, 0x03, 0xe6, 0x2d,
-0x43, 0x06, 0x01, 0xe5, 0x7a, 0xe8, 0x0d, 0x09,
-0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x0d, 0x03, 0xe5, 0x01, 0x27, 0x4c, 0x06, 0x29,
-0x52, 0x01, 0x2d, 0xe5, 0x48, 0x03, 0x01, 0x16,
-0x03, 0x14, 0x4a, 0xe6, 0xe5, 0x2c, 0x03, 0x4a,
-0xe6, 0x03, 0x10, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x09, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06, 0x02,
-0xe5, 0x16, 0x01, 0x13, 0x4c, 0x03, 0x17, 0x01,
-0x63, 0xe6, 0x15, 0x01, 0x13, 0x12, 0x39, 0x03,
-0x03, 0x13, 0x01, 0x16, 0x49, 0xe5, 0xe6, 0x2a,
-0x01, 0xe5, 0x49, 0x02, 0xe6, 0x10, 0x01, 0x01,
-0x05, 0x01, 0x02, 0x03, 0xe5, 0xe5, 0x02, 0x03,
-0x01, 0x01, 0x05, 0x01, 0x01, 0x02, 0x03, 0xe5,
-0xe5, 0x06, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07,
-0x01, 0x0a, 0xe5, 0x01, 0x5b, 0x22, 0xe5, 0x09,
-0x34, 0x07, 0x09, 0x0b, 0x1a, 0x02, 0x01, 0x3f,
-0x3a, 0xe6, 0xe5, 0x16, 0x10, 0x17, 0x07, 0x2b,
-0x08, 0xe5, 0x19, 0x16, 0x09, 0x03, 0x3b, 0xe7,
-0x23, 0x1a, 0x04, 0xe5, 0x33, 0x01, 0xe6, 0x1b,
-0x22, 0x0a, 0x0d, 0x23, 0x01, 0x3f, 0x3c, 0xe6,
-0x20, 0xe6, 0x15, 0x04, 0x2a, 0x09, 0x06, 0xe5,
-0xe5, 0x23, 0x1a, 0xe5, 0x28, 0x0f, 0x02, 0xe5,
-0x38, 0x41, 0xe5, 0xe6, 0xe5, 0x24, 0x04, 0x1a,
-0x30, 0x01, 0xe5, 0xe5, 0x2c, 0x4c, 0xe5, 0x01,
-0xe6, 0x75, 0xe8, 0xe5, 0x01, 0x01, 0x70, 0x01,
-0x03, 0xe5, 0xe5, 0x03, 0x70, 0x04, 0xe5, 0x01,
-0x02, 0x74, 0x02, 0x01, 0xe6, 0x01, 0x78, 0x02,
-0x74, 0x02, 0x02, 0xe8, 0x13, 0x5f, 0x04, 0x03,
-0xe5, 0x13, 0xe5, 0x63, 0x01, 0xe6, 0x08, 0x02,
-0x08, 0x64, 0xe5, 0x01, 0x0a, 0xe5, 0x6e, 0xe5,
-0xe6, 0x0d, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x09,
-0x09, 0x09, 0x09, 0x0d, 0xe9, 0x01, 0x74, 0x06,
-0x7a, 0x03, 0x01, 0x2b, 0x4d, 0xe5, 0xe5, 0x23,
-0x08, 0xe5, 0x47, 0x02, 0xe8, 0x2c, 0x4b, 0xe5,
-0x01, 0xe5, 0x12, 0x01, 0x07, 0xe6, 0x07, 0xe5,
-0x02, 0x03, 0x01, 0x09, 0xe5, 0x09, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x06,
-0x01, 0xe6, 0x0f, 0xe5, 0x02, 0x09, 0x01, 0x01,
-0xe5, 0x03, 0x03, 0x03, 0x01, 0x38, 0x0b, 0x01,
-0x01, 0x01, 0x13, 0x02, 0x09, 0xe5, 0xe6, 0x02,
-0x01, 0x02, 0x06, 0x37, 0x0d, 0x01, 0x01, 0x15,
-0x07, 0xe6, 0xe5, 0xe5, 0x04, 0x03, 0x05, 0x47,
-0xe5, 0xe5, 0x0f, 0x02, 0xe5, 0x07, 0xe5, 0x01,
-0x01, 0xe5, 0x01, 0xe5, 0x03, 0x03, 0xe5, 0x38,
-0x0e, 0x01, 0xe5, 0x2e, 0x33, 0x15, 0xe5, 0xe5,
-0xe5, 0x10, 0x01, 0x07, 0x01, 0x07, 0x01, 0xe5,
-0xe5, 0x03, 0x01, 0xe5, 0xe5, 0x02, 0xe5, 0xe6,
-0x07, 0x01, 0xe5, 0x05, 0x01, 0xe6, 0x04, 0xe7,
-0x05, 0x01, 0x07, 0x01, 0x0b, 0xe7, 0x3d, 0x15,
-0x21, 0x03, 0x03, 0xe5, 0x3e, 0x38, 0xe5, 0xe5,
-0xe5, 0x12, 0x02, 0x09, 0x1e, 0x07, 0x32, 0x03,
-0xe5, 0x19, 0x05, 0x01, 0x0a, 0x09, 0x06, 0x3a,
-0xe5, 0x01, 0x23, 0x03, 0x17, 0x3a, 0x03, 0xe5,
-0x1f, 0x1d, 0x16, 0xe5, 0x24, 0xe5, 0x1e, 0x09,
-0x12, 0x02, 0x15, 0x01, 0x23, 0xe7, 0x3e, 0x23,
-0x17, 0x01, 0xe5, 0x3e, 0x3c, 0xe6, 0x24, 0x19,
-0x3d, 0xe6, 0x1b, 0xe5, 0x04, 0x02, 0xe5, 0x08,
-0x38, 0x12, 0x33, 0x36, 0xe6, 0x0b, 0x01, 0xe5,
-0xe5, 0x6a, 0x10, 0xe6, 0x02, 0x0b, 0xe5, 0xe5,
-0x05, 0xe5, 0x07, 0xe5, 0x07, 0xe6, 0x06, 0xe5,
-0x07, 0xe7, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5,
-0x07, 0xe5, 0x0b, 0x03, 0xe5, 0x0f, 0x09, 0x09,
-0x09, 0x09, 0x04, 0x04, 0x01, 0x09, 0x09, 0x09,
-0x01, 0x07, 0x0d, 0xe5, 0xe6, 0x0e, 0x09, 0x03,
-0x05, 0x09, 0x09, 0x04, 0x06, 0x04, 0x04, 0x04,
-0x04, 0x04, 0x04, 0x09, 0x0e, 0x03, 0x26, 0x57,
-0x0f, 0x09, 0x09, 0x09, 0x09, 0x0b, 0x01, 0x07,
-0x09, 0x09, 0x02, 0x06, 0x0e, 0xe5, 0xe6, 0x0c,
-0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x09, 0xe5, 0x07, 0xe5, 0x07, 0xe5, 0x07,
-0xe5, 0x07, 0xe5, 0x0e, 0x03, 0x03, 0x09, 0x09,
-0x09, 0x09, 0x09, 0x0b, 0x09, 0x09, 0x09, 0x09,
-0x12, 0xe6, 0x0d, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5,
-0xe5, 0x07, 0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05,
-0xe5, 0xe5, 0x05, 0xe5, 0xe5, 0x05, 0xe5, 0xe5,
-0x0b, 0x03, 0x0e, 0x09, 0x09, 0x09, 0x09, 0x03,
-0x07, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x02, 0xe5,
-0x79, 0xe5, 0x01, 0x0e, 0x09, 0x09, 0x09, 0x09,
-0x08, 0x02, 0x09, 0x09, 0x09, 0x09, 0x11, 0xe6,
-0x3e, 0x3b, 0x02, 0x10, 0x09, 0x09, 0x09, 0x09,
-0x0b, 0x09, 0x09, 0x09, 0x09, 0x10, 0xe5, 0x7d,
-0x3f, 0x3a, 0xe5, 0x01, 0x3f, 0x36, 0x04, 0x02,
-0x7a, 0x01, 0x01, 0x13, 0x3d, 0x28, 0x01, 0x01,
-0x3f, 0x33, 0x0a, 0x3f, 0x34, 0x08, 0xe5, 0x79,
-0x01, 0x01, 0x14, 0x09, 0x09, 0x09, 0x09, 0x0b,
-0x09, 0x09, 0x09, 0x09, 0x09, 0xe5, 0x01, 0x0f,
-0x09, 0x09, 0x09, 0x09, 0x07, 0x03, 0x09, 0x09,
-0x09, 0x08, 0xe5, 0x0d, 0x03, 0x3a, 0x04, 0x3a,
-0x02, 0xe5, 0x0c, 0x09, 0x03, 0x05, 0x09, 0x09,
-0x03, 0x07, 0x09, 0x09, 0x07, 0x01, 0x1b, 0x01,
-0xe5, 0x0a, 0x02, 0x07, 0x05, 0x03, 0x01, 0x03,
-0x03, 0x01, 0x03, 0x03, 0x09, 0x06, 0xe5, 0x02,
-0x04, 0x04, 0x04, 0x02, 0x06, 0xe5, 0x02, 0x02,
-0x06, 0x02, 0xe5, 0x02, 0x03, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff,
index 91b4063ed168f14c0aaff4ba4ce2255e4cb8502a..cbdcfe33c5c128514f8114bea8046a856efad949 100644 (file)
@@ -5,7 +5,7 @@
  * based on - Driver for MV64360X ethernet ports
  * Copyright (C) 2002 rabeeh@galileo.co.il
  *
- * SPDX-License-Identifier:    GPL-2.0+
+ * SPDX-License-Identifier:    GPL-2.0
  */
 
 /*
@@ -1025,21 +1025,6 @@ bool db64360_eth_start (struct eth_device *dev)
  * based on Linux code
  * arch/powerpc/galileo/EVB64360/mv64360_eth.c - Driver for MV64360X ethernet ports
  * Copyright (C) 2002 rabeeh@galileo.co.il
-
- * 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.
- *
  */
 
 /********************************************************************************
index 5925bc6ec04dece992d1c709077d2128a9e799a5..38acca12bf397cfea773b360448df666f264deb5 100644 (file)
@@ -1,28 +1,6 @@
-/*------------------------------------------------------------------------------+ */
-/* */
-/*       This source code is dual-licensed.  You may use it under the terms */
-/*       of the GNU General Public License version 2, or under the license  */
-/*       below.                                                             */
-/*                                                                          */
-/*       This source code has been made available to you by IBM on an AS-IS */
-/*       basis.  Anyone receiving this source is licensed under IBM */
-/*       copyrights to use it in any way he or she deems fit, including */
-/*       copying it, modifying it, compiling it, and redistributing it either */
-/*       with or without modifications.  No license under IBM patents or */
-/*       patent applications is to be implied by the copyright license. */
-/* */
-/*       Any user of this software should understand that IBM cannot provide */
-/*       technical support for this software and will not be responsible for */
-/*       any consequences resulting from the use of this software. */
-/* */
-/*       Any person who transfers this source code or any derivative work */
-/*       must include the IBM copyright notice, this paragraph, and the */
-/*       preceding two paragraphs in the transferred software. */
-/* */
-/*       COPYRIGHT   I B M   CORPORATION 1995 */
-/*       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------------- */
-
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*----------------------------------------------------------------------------- */
 /* Function:     ext_bus_cntlr_init */
 /* Description:  Initializes the External Bus Controller for the external */
index 86e44eae0bd973618b7d672256109087f9f6717d..f74651c5209c1ea84793397d72973cbd6c7689aa 100644 (file)
 
 #include "../common/qixis.h"
 #include "../common/vsc3316_3308.h"
+#include "../common/idt8t49n222a_serdes_clk.h"
 #include "b4860qds.h"
 #include "b4860qds_qixis.h"
 #include "b4860qds_crossbar_con.h"
 
 #define CLK_MUX_SEL_MASK       0x4
 #define ETH_PHY_CLK_OUT                0x4
+#define PLL_NUM                        2
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -35,8 +37,6 @@ int checkboard(void)
        char buf[64];
        u8 sw;
        struct cpu_type *cpu = gd->arch.cpu;
-       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
-       unsigned int i;
        static const char *const freq[] = {"100", "125", "156.25", "161.13",
                                                "122.88", "122.88", "122.88"};
        int clock;
@@ -61,19 +61,6 @@ int checkboard(void)
        /* the timestamp string contains "\n" at the end */
        printf(" on %s", qixis_read_time(buf));
 
-       /* Display the RCW, so that no one gets confused as to what RCW
-        * we're actually using for this boot.
-        */
-       puts("Reset Configuration Word (RCW):");
-       for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
-               u32 rcw = in_be32(&gur->rcwsr[i]);
-
-               if ((i % 4) == 0)
-                       printf("\n       %08x:", i * 4);
-               printf(" %08x", rcw);
-       }
-       puts("\n");
-
        /*
         * Display the actual SERDES reference clocks as configured by the
         * dip switches on the board.  Note that the SWx registers could
@@ -252,6 +239,106 @@ int configure_vsc3316_3308(void)
        return 0;
 }
 
+int config_serdes1_refclks(void)
+{
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       serdes_corenet_t *srds_regs =
+               (void *)CONFIG_SYS_FSL_CORENET_SERDES_ADDR;
+       u32 serdes1_prtcl, lane;
+       unsigned int flag_sgmii_prtcl = 0;
+       int ret, i;
+
+       serdes1_prtcl = in_be32(&gur->rcwsr[4]) &
+                       FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
+       if (!serdes1_prtcl) {
+               printf("SERDES1 is not enabled\n");
+               return -1;
+       }
+       serdes1_prtcl >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
+       debug("Using SERDES1 Protocol: 0x%x:\n", serdes1_prtcl);
+
+       /* Clear SRDS_RSTCTL_RST bit for both PLLs before changing refclks
+        */
+       for (i = 0; i < PLL_NUM; i++)
+               clrbits_be32(&srds_regs->bank[i].rstctl, SRDS_RSTCTL_RST);
+       /* Reconfigure IDT idt8t49n222a device for CPRI to work
+        * For this SerDes1's Refclk1 and refclk2 need to be set
+        * to 122.88MHz
+        */
+       switch (serdes1_prtcl) {
+       case 0x2A:
+       case 0x2C:
+       case 0x2D:
+       case 0x2E:
+               debug("Configuring idt8t49n222a for CPRI SerDes clks:"
+                       " for srds_prctl:%x\n", serdes1_prtcl);
+               ret = select_i2c_ch_pca(I2C_CH_IDT);
+               if (!ret) {
+                       ret = set_serdes_refclk(IDT_SERDES1_ADDRESS, 1,
+                                       SERDES_REFCLK_122_88,
+                                       SERDES_REFCLK_122_88, 0);
+                       if (ret) {
+                               printf("IDT8T49N222A configuration failed.\n");
+                               return ret;
+                       } else
+                               printf("IDT8T49N222A configured.\n");
+               } else {
+                       return ret;
+               }
+               select_i2c_ch_pca(I2C_CH_DEFAULT);
+
+               /* Change SerDes1's Refclk1 to 125MHz for on board
+                * SGMIIs to work
+                */
+               for (lane = 0; lane < SRDS_MAX_LANES; lane++) {
+                       enum srds_prtcl lane_prtcl = serdes_get_prtcl
+                                               (0, serdes1_prtcl, lane);
+                       switch (lane_prtcl) {
+                       case SGMII_FM1_DTSEC1:
+                       case SGMII_FM1_DTSEC2:
+                       case SGMII_FM1_DTSEC3:
+                       case SGMII_FM1_DTSEC4:
+                       case SGMII_FM1_DTSEC5:
+                       case SGMII_FM1_DTSEC6:
+                               flag_sgmii_prtcl++;
+                               break;
+                       default:
+                               break;
+                       }
+               }
+
+               if (flag_sgmii_prtcl)
+                       QIXIS_WRITE(brdcfg[4], QIXIS_SRDS1CLK_125);
+
+               /* Steps For SerDes PLLs reset and reconfiguration after
+                * changing SerDes's refclks
+                */
+               for (i = 0; i < PLL_NUM; i++) {
+                       debug("For PLL%d reset and reconfiguration after"
+                              " changing refclks\n", i+1);
+                       clrbits_be32(&srds_regs->bank[i].rstctl,
+                                       SRDS_RSTCTL_SDRST_B);
+                       udelay(10);
+                       clrbits_be32(&srds_regs->bank[i].rstctl,
+                               (SRDS_RSTCTL_SDEN | SRDS_RSTCTL_PLLRST_B));
+                       udelay(10);
+                       setbits_be32(&srds_regs->bank[i].rstctl,
+                                       SRDS_RSTCTL_RST);
+                       setbits_be32(&srds_regs->bank[i].rstctl,
+                               (SRDS_RSTCTL_SDEN | SRDS_RSTCTL_PLLRST_B
+                               | SRDS_RSTCTL_SDRST_B));
+               }
+               break;
+       default:
+               printf("WARNING:IDT8T49N222A configuration not"
+                       " supported for:%x SerDes1 Protocol.\n",
+                       serdes1_prtcl);
+               return -1;
+       }
+
+       return 0;
+}
+
 int board_early_init_r(void)
 {
        const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
@@ -277,6 +364,16 @@ int board_early_init_r(void)
 #ifdef CONFIG_SYS_DPAA_QBMAN
        setup_portals();
 #endif
+       /* SerDes1 refclks need to be set again, as default clks
+        * are not suitable for CPRI and onboard SGMIIs to work
+        * simultaneously.
+        * This function will set SerDes1's Refclk1 and refclk2
+        * as per SerDes1 protocols
+        */
+       if (config_serdes1_refclks())
+               printf("SerDes1 Refclks couldn't set properly.\n");
+       else
+               printf("SerDes1 Refclks have been set.\n");
 
        /* Configure VSC3316 and VSC3308 crossbar switches */
        if (configure_vsc3316_3308())
index 6e64745b0fa374c5bc88012eceb4f191fc195a8a..db0cf28fffbb882d68115bc048f450558c42f766 100644 (file)
 static const int8_t vsc16_tx_amc[8][2] = { {15, 3}, {0, 2}, {7, 4}, {9, 10},
                                {5, 11}, {4, 5}, {2, 6}, {12, 9} };
 
-static const int8_t vsc16_tx_sfp[8][2] = { {15, 7}, {0, 1}, {7, 8}, {9, 0},
+static int8_t vsc16_tx_sfp[8][2] = { {15, 7}, {0, 1}, {7, 8}, {9, 0},
                                {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1} };
 
-static const int8_t vsc16_tx_4sfp_sgmii_12_56[8][2] = { {15, 7}, {0, 1},
+static int8_t vsc16_tx_4sfp_sgmii_12_56[8][2] = { {15, 7}, {0, 1},
                                {7, 8}, {9, 0}, {2, 14}, {12, 15},
                                {-1, -1}, {-1, -1} };
 
@@ -25,7 +25,7 @@ static const int8_t vsc16_tx_4sfp_sgmii_34[8][2] = { {15, 7}, {0, 1},
                                {-1, -1}, {-1, -1} };
 
 #ifdef CONFIG_PPC_B4420
-static const int8_t vsc16_tx_sgmii_lane_cd[8][2] = { {5, 14}, {4, 15},
+static int8_t vsc16_tx_sgmii_lane_cd[8][2] = { {5, 14}, {4, 15},
                {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1} };
 #endif
 
@@ -35,10 +35,10 @@ static const int8_t vsc16_tx_aurora[8][2] = { {2, 13}, {12, 12}, {-1, -1},
 static const int8_t vsc16_rx_amc[8][2] = { {3, 15}, {2, 1}, {4, 8}, {10, 9},
                                {11, 11}, {5, 10}, {6, 3}, {9, 12} };
 
-static const int8_t vsc16_rx_sfp[8][2] = { {8, 15}, {0, 1}, {7, 8}, {1, 9},
+static int8_t vsc16_rx_sfp[8][2] = { {8, 15}, {0, 1}, {7, 8}, {1, 9},
                                {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1} };
 
-static const int8_t vsc16_rx_4sfp_sgmii_12_56[8][2] = { {8, 15}, {0, 1},
+static int8_t vsc16_rx_4sfp_sgmii_12_56[8][2] = { {8, 15}, {0, 1},
                                {7, 8}, {1, 9}, {14, 3}, {15, 12},
                                {-1, -1}, {-1, -1} };
 
@@ -47,7 +47,7 @@ static const int8_t vsc16_rx_4sfp_sgmii_34[8][2] = { {8, 15}, {0, 1},
                                {-1, -1}, {-1, -1} };
 
 #ifdef CONFIG_PPC_B4420
-static const int8_t vsc16_rx_sgmii_lane_cd[8][2] = { {14, 11}, {15, 10},
+static int8_t vsc16_rx_sgmii_lane_cd[8][2] = { {14, 11}, {15, 10},
                {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1} };
 #endif
 
index 19ca66e3d035a9122ac03c9e34e9cf62e26d9181..dc4ef80fc883f4ef85c57d2ca16499636d49b0ae 100644 (file)
@@ -201,8 +201,6 @@ int board_eth_init(bd_t *bis)
                debug("Setting phy addresses for FM1_DTSEC5: %x and"
                        "FM1_DTSEC6: %x\n", CONFIG_SYS_FM1_DTSEC5_PHY_ADDR,
                        CONFIG_SYS_FM1_DTSEC6_PHY_ADDR);
-               /* Fixing Serdes clock by programming FPGA register */
-               QIXIS_WRITE(brdcfg[4], QIXIS_SRDS1CLK_125);
                fm_info_set_phy_address(FM1_DTSEC5,
                                CONFIG_SYS_FM1_DTSEC5_PHY_ADDR);
                fm_info_set_phy_address(FM1_DTSEC6,
index a4161ad649aad4794eb9d04eb80696d983f7ec71..c82fe0aab33b33ab7d1ddd9dce55d69f52be5557 100644 (file)
@@ -87,7 +87,7 @@ phys_size_t fixed_sdram(void)
        }
 
        ddr_size = (phys_size_t) CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
 
        if (set_ddr_laws(CONFIG_SYS_DDR_SDRAM_BASE, ddr_size,
                                        LAW_TRGT_IF_DDR_1) < 0) {
index 457489416ab9597227ee5913aab7b5ca6e7eb9b0..a895e4e297cb86319cb7aba224386d5aca438cbe 100644 (file)
@@ -125,6 +125,27 @@ void board_config_serdes_mux(void)
        }
 }
 
+/* Configure DSP DDR controller */
+void dsp_ddr_configure(void)
+{
+       /*
+        *There are separate DDR-controllers for DSP and PowerPC side DDR.
+        *copy the ddr controller settings from PowerPC side DDR controller
+        *to the DSP DDR controller as connected DDR memories are similar.
+        */
+       ccsr_ddr_t __iomem *pa_ddr =
+                       (ccsr_ddr_t __iomem *)CONFIG_SYS_MPC8xxx_DDR_ADDR;
+       ccsr_ddr_t temp_ddr;
+       ccsr_ddr_t __iomem *dsp_ddr =
+                       (ccsr_ddr_t __iomem *)CONFIG_SYS_FSL_DSP_CCSR_DDR_ADDR;
+
+       memcpy(&temp_ddr, pa_ddr, sizeof(ccsr_ddr_t));
+       temp_ddr.cs0_bnds = CONFIG_SYS_DDR1_CS0_BNDS;
+       temp_ddr.sdram_cfg &= ~SDRAM_CFG_MEM_EN;
+       memcpy(dsp_ddr, &temp_ddr, sizeof(ccsr_ddr_t));
+       dsp_ddr->sdram_cfg |= SDRAM_CFG_MEM_EN;
+}
+
 int board_early_init_r(void)
 {
 #ifndef CONFIG_SYS_NO_FLASH
@@ -153,6 +174,7 @@ int board_early_init_r(void)
                        0, flash_esel+1, BOOKE_PAGESZ_64M, 1);
 #endif
        board_config_serdes_mux();
+       dsp_ddr_configure();
        return 0;
 }
 
index 05bea8ad5248a96404e1c3d6ec9a126e485053e2..fdea19312926890f8c97d4b96f87aa47b484f1cb 100644 (file)
@@ -109,7 +109,7 @@ phys_size_t fixed_sdram(void)
                                        strmhz(buf, ddr_freq));
 
        ddr_size = (phys_size_t) CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
 
        if (set_ddr_laws(CONFIG_SYS_DDR_SDRAM_BASE, ddr_size,
                                        LAW_TRGT_IF_DDR_1) < 0) {
index fed2edf44a8f6d247f6fe176e34b525bff1361d8..e10de9adcf107779dd1719dfdd583e0dac93beef 100644 (file)
@@ -16,6 +16,14 @@ struct law_entry law_table[] = {
 #ifdef CONFIG_SYS_FPGA_BASE_PHYS
        SET_LAW(CONFIG_SYS_FPGA_BASE_PHYS, LAW_SIZE_128K, LAW_TRGT_IF_IFC),
 #endif
+       SET_LAW(CONFIG_SYS_FSL_DSP_CCSRBAR_PHYS, LAW_SIZE_1M,
+               LAW_TRGT_IF_DSP_CCSR),
+       SET_LAW(CONFIG_SYS_FSL_DSP_M2_RAM_ADDR, LAW_SIZE_32M,
+               LAW_TRGT_IF_OCN_DSP),
+       SET_LAW(CONFIG_SYS_FSL_DSP_M3_RAM_ADDR, LAW_SIZE_32K,
+               LAW_TRGT_IF_CLASS_DSP),
+       SET_LAW(CONFIG_SYS_FSL_DSP_DDR_ADDR, LAW_SIZE_1G,
+               LAW_TRGT_IF_CLASS_DSP)
 };
 
 int num_law_entries = ARRAY_SIZE(law_table);
index 6d823534166ace2b97eb3381b50ac454b8895260..02655e9bafd68275ffba14cb362341d4a5de22a5 100644 (file)
@@ -41,6 +41,11 @@ struct fsl_e_tlb_entry tlb_table[] = {
                        MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                        0, 1, BOOKE_PAGESZ_1M, 1),
 
+       /* CCSRBAR (DSP) */
+       SET_TLB_ENTRY(1, CONFIG_SYS_FSL_DSP_CCSRBAR,
+                     CONFIG_SYS_FSL_DSP_CCSRBAR_PHYS, MAS3_SW|MAS3_SR,
+                     MAS2_I|MAS2_G, 0, 2, BOOKE_PAGESZ_1M, 1),
+
 #ifndef CONFIG_SPL_BUILD
        SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
                        MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
similarity index 57%
rename from board/esd/canbt/Makefile
rename to board/freescale/c29xpcie/Makefile
index e5caf2331ada52a51b58af002b7b60c6177931a1..ab8eb8f729fc93a853ef9eb050878895408ceacd 100644 (file)
@@ -1,24 +1,23 @@
 #
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+# Copyright 2013 Freescale Semiconductor, Inc.
 #
 # SPDX-License-Identifier:     GPL-2.0+
-#
 
 include $(TOPDIR)/config.mk
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
 
 LIB    = $(obj)lib$(BOARD).o
 
-COBJS  = $(BOARD).o flash.o ../common/misc.o
+COBJS-y        += $(BOARD).o
+COBJS-y        += cpld.o
+COBJS-y        += ddr.o
+COBJS-y        += law.o
+COBJS-y        += tlb.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(COBJS))
+SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
 SOBJS  := $(addprefix $(obj),$(SOBJS))
 
-$(LIB):        $(OBJS) $(SOBJS)
+$(LIB):        $(obj).depend $(OBJS) $(SOBJS)
        $(call cmd_link_o_target, $(OBJS))
 
 #########################################################################
diff --git a/board/freescale/c29xpcie/README b/board/freescale/c29xpcie/README
new file mode 100644 (file)
index 0000000..430f082
--- /dev/null
@@ -0,0 +1,100 @@
+Overview
+=========
+C29XPCIE board is a series of Freescale PCIe add-in cards to perform
+as public key crypto accelerator or secure key management module.
+It includes C293PCIE board, C293PCIE board and C291PCIE board.
+The Freescale C29x family is a high performance crypto co-processor.
+It combines a single e500v2 core with necessary SEC engines.
+(maximum core frequency 1000/1200 MHz).
+
+The C29xPCIE board features are as follows:
+Memory subsystem:
+       - 512Mbyte unbuffered DDR3 SDRAM discrete devices (32-bit bus)
+       - 64 Mbyte NOR flash single-chip memory
+       - 4 Gbyte NAND flash memory
+       - 1 Mbit AT24C1024 I2C EEPROM
+       - 16 Mbyte SPI memory
+
+Interfaces:
+       - 10/100/1000 BaseT Ethernet ports:
+               - eTSEC1, RGMII: one 10/100/1000 port
+               - eTSEC2, RGMII: one 10/100/1000 port
+       - DUART interface:
+               - DUART interface: supports two UARTs up to 115200 bps for
+                  console display
+
+Board connectors:
+       - Mini-ITX power supply connector
+       - JTAG/COP for debugging
+
+Physical Memory Map on C29xPCIE
+===============================
+Address Start   Address End   Memory type
+0x0_0000_0000 - 0x0_1fff_ffff   512MB DDR
+0xc_0000_0000 - 0xc_8fff_ffff   256MB PCIE memory
+0xf_ec00_0000 - 0xf_efff_ffff   64MB NOR flash
+0xf_ffb0_0000 - 0xf_ffb7_ffff   512KB SRAM
+0xf_ffc0_0000 - 0xf_ffc0_ffff   64KB PCIE IO
+0xf_ffdf_0000 - 0xf_ffdf_0fff   4KB CPLD
+0xf_ffe0_0000 - 0xf_ffef_ffff   1MB CCSR
+
+Serial Port Configuration on C29xPCIE
+=====================================
+Configure the serial port of the attached computer with the following values:
+       -Data rate: 115200 bps
+       -Number of data bits: 8
+       -Parity: None
+       -Number of Stop bits: 1
+       -Flow Control: Hardware/None
+
+Settings of DIP-switch
+======================
+  SW5[1:4]= 1111 and SW5[6]=0 for boot from 16bit NOR flash
+  SW5[1:4]= 0110 and SW5[6]=0 for boot from SPI flash
+Note: 1 stands for 'off', 0 stands for 'on'
+
+Build and program u-boot to NOR flash
+==================================
+1. Build u-boot.bin image example:
+       export ARCH=powerpc
+       export CROSS_COMPILE=/your_path/powerpc-linux-gnu-
+       make C293PCIE
+
+2. Program u-boot.bin into NOR flash
+       => tftp $loadaddr $uboot
+       => protect off eff80000 +$filesize
+       => erase eff80000 +$filesize
+       => cp.b $loadaddr eff80000 $filesize
+
+3. Check SW5[1:4]= 1111 and SW5[6]=0, then power on.
+
+Alternate NOR bank
+==================
+There are four banks in C29XPCIE board, example to change bank booting:
+1. Program u-boot.bin into alternate NOR bank
+       => tftp $loadaddr $uboot
+       => protect off e9f80000 +$filesize
+       => erase e9f80000 +$filesize
+       => cp.b $loadaddr e9f80000 $filesize
+
+2. Switch to alternate NOR bank
+       => cpld_cmd reset altbank [bank]
+       - [bank] bank value select 1-4
+       - bank 1 on the flash 0x0000000~0x0ffffff
+       - bank 2 on the flash 0x1000000~0x1ffffff
+       - bank 3 on the flash 0x2000000~0x2ffffff
+       - bank 4 on the flash 0x3000000~0x3ffffff
+       or set SW5[7]= ON/OFF and SW5[7]= ON/OFF, then power on again.
+
+Build and program u-boot to SPI flash
+==================================
+1. Build u-boot-spi.bin image
+       make C29xPCIE_SPIFLASH_config; make
+       Need the boot_format tool to generate u-boot-spi.bin from the u-boot.bin.
+
+2. Program u-boot-spi.bin into SPI flash
+       => tftp $loadaddr $uboot-spi
+       => sf erase 0 100000
+       => sf write $loadaddr 0 $filesize
+
+3. Check SW5[1:4]= 0110 and SW5[6]=0, then power on.
diff --git a/board/freescale/c29xpcie/c29xpcie.c b/board/freescale/c29xpcie/c29xpcie.c
new file mode 100644 (file)
index 0000000..48c4b30
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <asm/mmu.h>
+#include <asm/cache.h>
+#include <asm/immap_85xx.h>
+#include <asm/io.h>
+#include <miiphy.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <fsl_mdio.h>
+#include <tsec.h>
+#include <mmc.h>
+#include <netdev.h>
+#include <pci.h>
+#include <asm/fsl_ifc.h>
+#include <asm/fsl_pci.h>
+
+#include "cpld.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int checkboard(void)
+{
+       struct cpu_type *cpu = gd->arch.cpu;
+       struct cpld_data *cpld_data = (void *)(CONFIG_SYS_CPLD_BASE);
+
+       printf("Board: %sPCIe, ", cpu->name);
+       printf("CPLD Ver: 0x%02x\n", in_8(&cpld_data->cpldver));
+
+       return 0;
+}
+
+int board_early_init_f(void)
+{
+       struct fsl_ifc *ifc = (void *)CONFIG_SYS_IFC_ADDR;
+
+       /* Clock configuration to access CPLD using IFC(GPCM) */
+       setbits_be32(&ifc->ifc_gcr, 1 << IFC_GCR_TBCTL_TRN_TIME_SHIFT);
+
+       return 0;
+}
+
+int board_early_init_r(void)
+{
+       const unsigned long flashbase = CONFIG_SYS_FLASH_BASE;
+       const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+
+       /*
+        * Remap Boot flash region to caching-inhibited
+        * so that flash can be erased properly.
+        */
+
+       /* Flush d-cache and invalidate i-cache of any FLASH data */
+       flush_dcache();
+       invalidate_icache();
+
+       /* invalidate existing TLB entry for flash */
+       disable_tlb(flash_esel);
+
+       set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, flash_esel, BOOKE_PAGESZ_64M, 1);
+
+       return 0;
+}
+
+#ifdef CONFIG_PCI
+void pci_init_board(void)
+{
+       fsl_pcie_init_board(0);
+}
+#endif /* ifdef CONFIG_PCI */
+
+#ifdef CONFIG_TSEC_ENET
+int board_eth_init(bd_t *bis)
+{
+       struct fsl_pq_mdio_info mdio_info;
+       struct tsec_info_struct tsec_info[2];
+       int num = 0;
+
+#ifdef CONFIG_TSEC1
+       SET_STD_TSEC_INFO(tsec_info[num], 1);
+       num++;
+#endif
+#ifdef CONFIG_TSEC2
+       SET_STD_TSEC_INFO(tsec_info[num], 2);
+       num++;
+#endif
+       if (!num) {
+               printf("No TSECs initialized\n");
+               return 0;
+       }
+
+       /* Register 1G MDIO bus */
+       mdio_info.regs = (struct tsec_mii_mng *)CONFIG_SYS_MDIO_BASE_ADDR;
+       mdio_info.name = DEFAULT_MII_NAME;
+
+       fsl_pq_mdio_init(bis, &mdio_info);
+
+       tsec_eth_init(bis, tsec_info, num);
+
+       return pci_eth_init(bis);
+}
+#endif
+
+#if defined(CONFIG_OF_BOARD_SETUP)
+void fdt_del_sec(void *blob, int offset)
+{
+       int nodeoff = 0;
+
+       while ((nodeoff = fdt_node_offset_by_compat_reg(blob, "fsl,sec-v6.0",
+                       CONFIG_SYS_CCSRBAR_PHYS + CONFIG_SYS_FSL_SEC_OFFSET
+                       + offset * 0x20000)) >= 0) {
+               fdt_del_node(blob, nodeoff);
+               offset++;
+       }
+}
+
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       phys_addr_t base;
+       phys_size_t size;
+       struct cpu_type *cpu;
+
+       cpu = gd->arch.cpu;
+
+       ft_cpu_setup(blob, bd);
+
+       base = getenv_bootm_low();
+       size = getenv_bootm_size();
+
+#if defined(CONFIG_PCI)
+       FT_FSL_PCI_SETUP;
+#endif
+
+       fdt_fixup_memory(blob, (u64)base, (u64)size);
+       if (cpu->soc_ver == SVR_C291)
+               fdt_del_sec(blob, 1);
+       else if (cpu->soc_ver == SVR_C292)
+               fdt_del_sec(blob, 2);
+}
+#endif
diff --git a/board/freescale/c29xpcie/cpld.c b/board/freescale/c29xpcie/cpld.c
new file mode 100644 (file)
index 0000000..5cbccff
--- /dev/null
@@ -0,0 +1,131 @@
+/**
+ * Copyright 2013 Freescale Semiconductor
+ * Author: Mingkai Hu <Mingkai.hu@freescale.com>
+ *         Po Liu <Po.Liu@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * This file provides support for the board-specific CPLD used on some Freescale
+ * reference boards.
+ *
+ * The following macros need to be defined:
+ *
+ * CONFIG_SYS_CPLD_BASE - The virtual address of the base of the
+ * CPLD register map
+ *
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/io.h>
+
+#include "cpld.h"
+/**
+ * Set the boot bank to the alternate bank
+ */
+void cpld_set_altbank(u8 banksel)
+{
+       struct cpld_data *cpld_data = (void *)(CONFIG_SYS_CPLD_BASE);
+       u8 reg11;
+
+       reg11 = in_8(&cpld_data->flhcsr);
+
+       switch (banksel) {
+       case 1:
+               out_8(&cpld_data->flhcsr, (reg11 & CPLD_BANKSEL_MASK)
+                       | CPLD_BANKSEL_EN | CPLD_SELECT_BANK1);
+               break;
+       case 2:
+               out_8(&cpld_data->flhcsr, (reg11 & CPLD_BANKSEL_MASK)
+                       | CPLD_BANKSEL_EN | CPLD_SELECT_BANK2);
+               break;
+       case 3:
+               out_8(&cpld_data->flhcsr, (reg11 & CPLD_BANKSEL_MASK)
+                       | CPLD_BANKSEL_EN | CPLD_SELECT_BANK3);
+               break;
+       case 4:
+               out_8(&cpld_data->flhcsr, (reg11 & CPLD_BANKSEL_MASK)
+                       | CPLD_BANKSEL_EN | CPLD_SELECT_BANK4);
+               break;
+       default:
+               printf("Invalid value! [1-4]\n");
+               return;
+       }
+
+       udelay(100);
+       do_reset(NULL, 0, 0, NULL);
+}
+
+/**
+ * Set the boot bank to the default bank
+ */
+void cpld_set_defbank(void)
+{
+       cpld_set_altbank(4);
+}
+
+#ifdef DEBUG
+static void cpld_dump_regs(void)
+{
+       struct cpld_data *cpld_data = (void *)(CONFIG_SYS_CPLD_BASE);
+
+       printf("chipid1         = 0x%02x\n", in_8(&cpld_data->chipid1));
+       printf("chipid2         = 0x%02x\n", in_8(&cpld_data->chipid2));
+       printf("hwver           = 0x%02x\n", in_8(&cpld_data->hwver));
+       printf("cpldver         = 0x%02x\n", in_8(&cpld_data->cpldver));
+       printf("rstcon          = 0x%02x\n", in_8(&cpld_data->rstcon));
+       printf("flhcsr          = 0x%02x\n", in_8(&cpld_data->flhcsr));
+       printf("wdcsr           = 0x%02x\n", in_8(&cpld_data->wdcsr));
+       printf("wdkick          = 0x%02x\n", in_8(&cpld_data->wdkick));
+       printf("fancsr          = 0x%02x\n", in_8(&cpld_data->fancsr));
+       printf("ledcsr          = 0x%02x\n", in_8(&cpld_data->ledcsr));
+       printf("misc            = 0x%02x\n", in_8(&cpld_data->misccsr));
+       printf("bootor          = 0x%02x\n", in_8(&cpld_data->bootor));
+       printf("bootcfg1        = 0x%02x\n", in_8(&cpld_data->bootcfg1));
+       printf("bootcfg2        = 0x%02x\n", in_8(&cpld_data->bootcfg2));
+       printf("bootcfg3        = 0x%02x\n", in_8(&cpld_data->bootcfg3));
+       printf("bootcfg4        = 0x%02x\n", in_8(&cpld_data->bootcfg4));
+       putc('\n');
+}
+#endif
+
+int cpld_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       int rc = 0;
+       unsigned char value;
+
+       if (argc <= 1)
+               return cmd_usage(cmdtp);
+
+       if (strcmp(argv[1], "reset") == 0) {
+               if (!strcmp(argv[2], "altbank") && argv[3]) {
+                       value = (u8)simple_strtoul(argv[3], NULL, 16);
+                       cpld_set_altbank(value);
+               } else if (!argv[2])
+                       cpld_set_defbank();
+               else
+                       cmd_usage(cmdtp);
+#ifdef DEBUG
+       } else if (strcmp(argv[1], "dump") == 0) {
+               cpld_dump_regs();
+#endif
+       } else
+               rc = cmd_usage(cmdtp);
+
+       return rc;
+}
+
+U_BOOT_CMD(
+       cpld_cmd, CONFIG_SYS_MAXARGS, 1, cpld_cmd,
+       "Reset the board using the CPLD sequencer",
+       "reset - hard reset to default bank 4\n"
+       "cpld_cmd reset altbank [bank]- reset to alternate bank\n"
+       "       - [bank] bank value select 1-4\n"
+       "       - bank 1 on the flash 0x0000000~0x0ffffff\n"
+       "       - bank 2 on the flash 0x1000000~0x1ffffff\n"
+       "       - bank 3 on the flash 0x2000000~0x2ffffff\n"
+       "       - bank 4 on the flash 0x3000000~0x3ffffff\n"
+#ifdef DEBUG
+       "cpld_cmd dump - display the CPLD registers\n"
+#endif
+       );
diff --git a/board/freescale/c29xpcie/cpld.h b/board/freescale/c29xpcie/cpld.h
new file mode 100644 (file)
index 0000000..20862a3
--- /dev/null
@@ -0,0 +1,40 @@
+/**
+ * Copyright 2013 Freescale Semiconductor
+ * Author: Mingkai Hu <Mingkai.Hu@freescale.com>
+ *         Po Liu <Po.Liu@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * This file provides support for the ngPIXIS, a board-specific FPGA used on
+ * some Freescale reference boards.
+ */
+
+/*
+ * CPLD register set. Feel free to add board-specific #ifdefs where necessary.
+ */
+struct cpld_data {
+       u8 chipid1;     /* 0x0 - CPLD Chip ID1 Register */
+       u8 chipid2;     /* 0x1 - CPLD Chip ID2 Register */
+       u8 hwver;       /* 0x2 - Hardware Version Register */
+       u8 cpldver;     /* 0x3 - Software Version Register */
+       u8 res[12];
+       u8 rstcon;      /* 0x10 - Reset control register */
+       u8 flhcsr;      /* 0x11 - Flash control and status Register */
+       u8 wdcsr;       /* 0x12 - Watchdog control and status Register */
+       u8 wdkick;      /* 0x13 - Watchdog kick Register */
+       u8 fancsr;      /* 0x14 - Fan control and status Register */
+       u8 ledcsr;      /* 0x15 - LED control and status Register */
+       u8 misccsr;     /* 0x16 - Misc control and status Register */
+       u8 bootor;      /* 0x17 - Boot configure override Register */
+       u8 bootcfg1;    /* 0x18 - Boot configure 1 Register */
+       u8 bootcfg2;    /* 0x19 - Boot configure 2 Register */
+       u8 bootcfg3;    /* 0x1a - Boot configure 3 Register */
+       u8 bootcfg4;    /* 0x1b - Boot configure 4 Register */
+};
+
+#define CPLD_BANKSEL_EN                0x02
+#define CPLD_BANKSEL_MASK      0x3f
+#define CPLD_SELECT_BANK1      0xc0
+#define CPLD_SELECT_BANK2      0x80
+#define CPLD_SELECT_BANK3      0x40
+#define CPLD_SELECT_BANK4      0x00
diff --git a/board/freescale/c29xpcie/ddr.c b/board/freescale/c29xpcie/ddr.c
new file mode 100644 (file)
index 0000000..b017cfd
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_ddr_sdram.h>
+#include <asm/fsl_ddr_dimm_params.h>
+
+/*
+ * Micron MT41J128M16HA-15E
+ * */
+dimm_params_t ddr_raw_timing = {
+       .n_ranks = 1,
+       .rank_density = 536870912u,
+       .capacity = 536870912u,
+       .primary_sdram_width = 32,
+       .ec_sdram_width = 8,
+       .registered_dimm = 0,
+       .mirrored_dimm = 0,
+       .n_row_addr = 14,
+       .n_col_addr = 10,
+       .n_banks_per_sdram_device = 8,
+       .edc_config = 2,
+       .burst_lengths_bitmask = 0x0c,
+
+       .tCKmin_X_ps = 1650,
+       .caslat_X = 0x7e << 4,  /* 5,6,7,8,9,10 */
+       .tAA_ps = 14050,
+       .tWR_ps = 15000,
+       .tRCD_ps = 13500,
+       .tRRD_ps = 75000,
+       .tRP_ps = 13500,
+       .tRAS_ps = 40000,
+       .tRC_ps = 49500,
+       .tRFC_ps = 160000,
+       .tWTR_ps = 75000,
+       .tRTP_ps = 75000,
+       .refresh_rate_ps = 7800000,
+       .tFAW_ps = 30000,
+};
+
+int fsl_ddr_get_dimm_params(dimm_params_t *pdimm,
+               unsigned int controller_number,
+               unsigned int dimm_number)
+{
+       const char dimm_model[] = "Fixed DDR on board";
+
+       if ((controller_number == 0) && (dimm_number == 0)) {
+               memcpy(pdimm, &ddr_raw_timing, sizeof(dimm_params_t));
+               memset(pdimm->mpart, 0, sizeof(pdimm->mpart));
+               memcpy(pdimm->mpart, dimm_model, sizeof(dimm_model) - 1);
+       }
+
+       return 0;
+}
+
+void fsl_ddr_board_options(memctl_options_t *popts,
+                               dimm_params_t *pdimm,
+                               unsigned int ctrl_num)
+{
+       int i;
+       popts->clk_adjust = 2;
+       popts->cpo_override = 0x1f;
+       popts->write_data_delay = 4;
+       popts->half_strength_driver_enable = 1;
+       popts->bstopre = 0x3cf;
+       popts->quad_rank_present = 1;
+       popts->rtt_override = 1;
+       popts->rtt_override_value = 1;
+       popts->dynamic_power = 1;
+       /* Write leveling override */
+       popts->wrlvl_en = 1;
+       popts->wrlvl_override = 1;
+       popts->wrlvl_sample = 0xf;
+       popts->wrlvl_start = 0x4;
+       popts->trwt_override = 1;
+       popts->trwt = 0;
+
+       for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+               popts->cs_local_opts[i].odt_rd_cfg = FSL_DDR_ODT_NEVER;
+               popts->cs_local_opts[i].odt_wr_cfg = FSL_DDR_ODT_CS;
+       }
+}
diff --git a/board/freescale/c29xpcie/law.c b/board/freescale/c29xpcie/law.c
new file mode 100644 (file)
index 0000000..cd8fc21
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_law.h>
+#include <asm/mmu.h>
+
+struct law_entry law_table[] = {
+       SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_64M, LAW_TRGT_IF_IFC),
+       SET_LAW(CONFIG_SYS_CPLD_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_IFC),
+       SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_16K, LAW_TRGT_IF_IFC),
+       SET_LAW(CONFIG_SYS_PLATFORM_SRAM_BASE_PHYS, LAW_SIZE_512K,
+                                       LAW_TRGT_IF_PLATFORM_SRAM),
+};
+
+int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/c29xpcie/tlb.c b/board/freescale/c29xpcie/tlb.c
new file mode 100644 (file)
index 0000000..ddd1ef8
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/mmu.h>
+
+struct fsl_e_tlb_entry tlb_table[] = {
+       /* TLB 0 - for temp stack in cache */
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 ,
+                       CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 ,
+                       CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 ,
+                       CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+
+       /* TLB 1 */
+       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 0, BOOKE_PAGESZ_1M, 1),
+
+       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
+                       MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
+                       0, 1, BOOKE_PAGESZ_64M, 1),
+
+#ifdef CONFIG_PCI
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 2, BOOKE_PAGESZ_256M, 1),
+
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 3, BOOKE_PAGESZ_256K, 1),
+#endif
+
+       SET_TLB_ENTRY(1, CONFIG_SYS_CPLD_BASE, CONFIG_SYS_CPLD_BASE_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 4, BOOKE_PAGESZ_4K, 1),
+
+       SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 5, BOOKE_PAGESZ_16K, 1),
+
+       SET_TLB_ENTRY(1, CONFIG_SYS_PLATFORM_SRAM_BASE,
+                       CONFIG_SYS_PLATFORM_SRAM_BASE_PHYS,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 6, BOOKE_PAGESZ_256K, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_PLATFORM_SRAM_BASE + 0x40000,
+                       CONFIG_SYS_PLATFORM_SRAM_BASE_PHYS + 0x40000,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 7, BOOKE_PAGESZ_256K, 1),
+
+#ifdef CONFIG_SYS_RAMBOOT
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE,
+                       CONFIG_SYS_DDR_SDRAM_BASE,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 8, BOOKE_PAGESZ_256M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000,
+                       CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 9, BOOKE_PAGESZ_256M, 1),
+#endif
+};
+
+int num_tlb_entries = ARRAY_SIZE(tlb_table);
index d451f6ff010a9b2855280f10d7021a16f47bc0db..f9550c48ceba642e6db2707615d962ffad80158c 100644 (file)
@@ -45,15 +45,14 @@ COBJS-$(CONFIG_MPC8555CDS)  += cds_pci_ft.o
 
 COBJS-$(CONFIG_MPC8536DS)      += ics307_clk.o
 COBJS-$(CONFIG_MPC8572DS)      += ics307_clk.o
-ifndef CONFIG_SPL_BUILD
 COBJS-$(CONFIG_P1022DS)                += ics307_clk.o
-endif
 COBJS-$(CONFIG_P2020DS)                += ics307_clk.o
 COBJS-$(CONFIG_P3041DS)                += ics307_clk.o
 COBJS-$(CONFIG_P4080DS)                += ics307_clk.o
 COBJS-$(CONFIG_P5020DS)                += ics307_clk.o
 COBJS-$(CONFIG_P5040DS)                += ics307_clk.o
 COBJS-$(CONFIG_VSC_CROSSBAR)    += vsc3316_3308.o
+COBJS-$(CONFIG_IDT8T49N222A)   += idt8t49n222a_serdes_clk.o
 
 # deal with common files for P-series corenet based devices
 SUBLIB-$(CONFIG_P2041RDB)      += p_corenet/libp_corenet.o
diff --git a/board/freescale/common/idt8t49n222a_serdes_clk.c b/board/freescale/common/idt8t49n222a_serdes_clk.c
new file mode 100644 (file)
index 0000000..d347162
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ * Author: Shaveta Leekha <shaveta@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "idt8t49n222a_serdes_clk.h"
+
+#define DEVICE_ID_REG          0x00
+
+static int check_pll_status(u8 idt_addr)
+{
+       u8 val = 0;
+       int ret;
+
+       ret = i2c_read(idt_addr, 0x17, 1, &val, 1);
+       if (ret < 0) {
+               printf("IDT:0x%x could not read status register from device.\n",
+                       idt_addr);
+               return ret;
+       }
+
+       if (val & 0x04) {
+               debug("idt8t49n222a PLL is LOCKED: %x\n", val);
+       } else {
+               printf("idt8t49n222a PLL is not LOCKED: %x\n", val);
+               return -1;
+       }
+
+       return 0;
+}
+
+int set_serdes_refclk(u8 idt_addr, u8 serdes_num,
+                       enum serdes_refclk refclk1,
+                       enum serdes_refclk refclk2, u8 feedback)
+{
+       u8 dev_id = 0;
+       int i, ret;
+
+       debug("IDT:Configuring idt8t49n222a device at I2C address: 0x%2x\n",
+               idt_addr);
+
+       ret = i2c_read(idt_addr, DEVICE_ID_REG, 1, &dev_id, 1);
+       if (ret < 0) {
+               debug("IDT:0x%x could not read DEV_ID from device.\n",
+                       idt_addr);
+               return ret;
+       }
+
+       if ((dev_id != 0x00) && (dev_id != 0x24) && (dev_id != 0x2a)) {
+               debug("IDT: device at address 0x%x is not idt8t49n222a.\n",
+                       idt_addr);
+       }
+
+       if (serdes_num != 1 && serdes_num != 2) {
+               debug("serdes_num should be 1 for SerDes1 and"
+                       " 2 for SerDes2.\n");
+               return -1;
+       }
+
+       if ((refclk1 == SERDES_REFCLK_122_88 && refclk2 != SERDES_REFCLK_122_88)
+               || (refclk1 != SERDES_REFCLK_122_88
+                       && refclk2 == SERDES_REFCLK_122_88)) {
+               debug("Only one refclk at 122.88MHz is not supported."
+                       " Please set both refclk1 & refclk2 to 122.88MHz"
+                       " or both not to 122.88MHz.\n");
+               return -1;
+       }
+
+       if (refclk1 != SERDES_REFCLK_100 && refclk1 != SERDES_REFCLK_122_88
+                                       && refclk1 != SERDES_REFCLK_125
+                                       && refclk1 != SERDES_REFCLK_156_25) {
+               debug("refclk1 should be 100MHZ, 122.88MHz, 125MHz"
+                       " or 156.25MHz.\n");
+               return -1;
+       }
+
+       if (refclk2 != SERDES_REFCLK_100 && refclk2 != SERDES_REFCLK_122_88
+                                       && refclk2 != SERDES_REFCLK_125
+                                       && refclk2 != SERDES_REFCLK_156_25) {
+               debug("refclk2 should be 100MHZ, 122.88MHz, 125MHz"
+                       " or 156.25MHz.\n");
+               return -1;
+       }
+
+       if (feedback != 0 && feedback != 1) {
+               debug("valid values for feedback are 0(default) or 1.\n");
+               return -1;
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 122.88MHz  Refclk2 = 122.88MHz
+        */
+       if (refclk1 == SERDES_REFCLK_122_88 &&
+                       refclk2 == SERDES_REFCLK_122_88) {
+               printf("Setting refclk1:122.88 and refclk2:122.88\n");
+               for (i = 0; i < NUM_IDT_REGS; i++)
+                       i2c_reg_write(idt_addr, idt_conf_122_88[i][0],
+                                               idt_conf_122_88[i][1]);
+
+               if (feedback) {
+                       for (i = 0; i < NUM_IDT_REGS_FEEDBACK; i++)
+                               i2c_reg_write(idt_addr,
+                                       idt_conf_122_88_feedback[i][0],
+                                       idt_conf_122_88_feedback[i][1]);
+               }
+       }
+
+       if (refclk1 != SERDES_REFCLK_122_88 &&
+                       refclk2 != SERDES_REFCLK_122_88) {
+               for (i = 0; i < NUM_IDT_REGS; i++)
+                       i2c_reg_write(idt_addr, idt_conf_not_122_88[i][0],
+                                               idt_conf_not_122_88[i][1]);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 100MHz  Refclk2 = 125MHz
+        */
+       if (refclk1 == SERDES_REFCLK_100 && refclk2 == SERDES_REFCLK_125) {
+               printf("Setting refclk1:100 and refclk2:125\n");
+               i2c_reg_write(idt_addr, 0x11, 0x10);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 125MHz  Refclk2 = 125MHz
+        */
+       if (refclk1 == SERDES_REFCLK_125 && refclk2 == SERDES_REFCLK_125) {
+               printf("Setting refclk1:125 and refclk2:125\n");
+               i2c_reg_write(idt_addr, 0x10, 0x10);
+               i2c_reg_write(idt_addr, 0x11, 0x10);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 125MHz  Refclk2 = 100MHz
+        */
+       if (refclk1 == SERDES_REFCLK_125 && refclk2 == SERDES_REFCLK_100) {
+               printf("Setting refclk1:125 and refclk2:100\n");
+               i2c_reg_write(idt_addr, 0x10, 0x10);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 156.25MHz  Refclk2 = 156.25MHz
+        */
+       if (refclk1 == SERDES_REFCLK_156_25 &&
+                       refclk2 == SERDES_REFCLK_156_25) {
+               printf("Setting refclk1:156.25 and refclk2:156.25\n");
+               for (i = 0; i < NUM_IDT_REGS_156_25; i++)
+                       i2c_reg_write(idt_addr, idt_conf_156_25[i][0],
+                                               idt_conf_156_25[i][1]);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 100MHz  Refclk2 = 156.25MHz
+        */
+       if (refclk1 == SERDES_REFCLK_100 &&
+                       refclk2 == SERDES_REFCLK_156_25) {
+               printf("Setting refclk1:100 and refclk2:156.25\n");
+               for (i = 0; i < NUM_IDT_REGS_156_25; i++)
+                       i2c_reg_write(idt_addr, idt_conf_100_156_25[i][0],
+                                               idt_conf_100_156_25[i][1]);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 125MHz  Refclk2 = 156.25MHz
+        */
+       if (refclk1 == SERDES_REFCLK_125 &&
+                       refclk2 == SERDES_REFCLK_156_25) {
+               printf("Setting refclk1:125 and refclk2:156.25\n");
+               for (i = 0; i < NUM_IDT_REGS_156_25; i++)
+                       i2c_reg_write(idt_addr, idt_conf_125_156_25[i][0],
+                                               idt_conf_125_156_25[i][1]);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 156.25MHz  Refclk2 = 100MHz
+        */
+       if (refclk1 == SERDES_REFCLK_156_25 &&
+                       refclk2 == SERDES_REFCLK_100) {
+               printf("Setting refclk1:156.25 and refclk2:100\n");
+               for (i = 0; i < NUM_IDT_REGS_156_25; i++)
+                       i2c_reg_write(idt_addr, idt_conf_156_25_100[i][0],
+                                               idt_conf_156_25_100[i][1]);
+       }
+
+       /* Configuring IDT for output refclks as
+        * Refclk1 = 156.25MHz  Refclk2 = 125MHz
+        */
+       if (refclk1 == SERDES_REFCLK_156_25 &&
+                       refclk2 == SERDES_REFCLK_125) {
+               printf("Setting refclk1:156.25 and refclk2:125\n");
+               for (i = 0; i < NUM_IDT_REGS_156_25; i++)
+                       i2c_reg_write(idt_addr, idt_conf_156_25_125[i][0],
+                                               idt_conf_156_25_125[i][1]);
+       }
+
+       /* waiting for maximum of 1 second if PLL doesn'r get locked
+        * initially. then check the status again.
+        */
+       if (check_pll_status(idt_addr)) {
+               mdelay(1000);
+               if (check_pll_status(idt_addr))
+                       return -1;
+       }
+
+       return 0;
+}
diff --git a/board/freescale/common/idt8t49n222a_serdes_clk.h b/board/freescale/common/idt8t49n222a_serdes_clk.h
new file mode 100644 (file)
index 0000000..787bdd9
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ * Author: Shaveta Leekha <shaveta@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __IDT8T49N222A_SERDES_CLK_H_
+#define __IDT8T49N222A_SERDES_CLK_H_   1
+
+#include <common.h>
+#include <i2c.h>
+#include "qixis.h"
+#include "../b4860qds/b4860qds_qixis.h"
+#include <errno.h>
+
+#define NUM_IDT_REGS           23
+#define NUM_IDT_REGS_FEEDBACK  12
+#define NUM_IDT_REGS_156_25    11
+
+/* CLK */
+enum serdes_refclk {
+       SERDES_REFCLK_100,      /* refclk 100Mhz */
+       SERDES_REFCLK_122_88,   /* refclk 122.88Mhz */
+       SERDES_REFCLK_125,      /* refclk 125Mhz */
+       SERDES_REFCLK_156_25,   /* refclk 156.25Mhz */
+       SERDES_REFCLK_NONE = -1,
+};
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 = 122.88MHz Refclk2 = 122.88MHz
+ */
+static const u8 idt_conf_122_88[23][2] = { {0x00, 0x3C}, {0x01, 0x00},
+               {0x02, 0x9F}, {0x03, 0x00}, {0x04, 0x0B}, {0x05, 0x00},
+               {0x06, 0x00}, {0x07, 0x00}, {0x08, 0x7D}, {0x09, 0x00},
+               {0x0A, 0x08}, {0x0B, 0x00}, {0x0C, 0xDC}, {0x0D, 0x00},
+               {0x0E, 0x00}, {0x0F, 0x00}, {0x10, 0x12}, {0x11, 0x12},
+               {0x12, 0xB9}, {0x13, 0xBC}, {0x14, 0x40}, {0x15, 0x08},
+               {0x16, 0xA0} };
+
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 not equal to 122.88MHz Refclk2 not equal to 122.88MHz
+ */
+static const u8 idt_conf_not_122_88[23][2] = { {0x00, 0x00}, {0x01, 0x00},
+               {0x02, 0x00}, {0x03, 0x00}, {0x04, 0x0A}, {0x05, 0x00},
+               {0x06, 0x00}, {0x07, 0x00}, {0x08, 0x7D}, {0x09, 0x00},
+               {0x0A, 0x08}, {0x0B, 0x00}, {0x0C, 0xDC}, {0x0D, 0x00},
+               {0x0E, 0x00}, {0x0F, 0x00}, {0x10, 0x14}, {0x11, 0x14},
+               {0x12, 0x35}, {0x13, 0xBC}, {0x14, 0x40}, {0x15, 0x08},
+               {0x16, 0xA0} };
+
+/* Reconfiguration values for some of IDT registers for
+ * Output Refclks:
+ * Refclk1 = 122.88MHz Refclk2 = 122.88MHz
+ * and with feedback as 1
+ */
+static const u8 idt_conf_122_88_feedback[12][2] = { {0x00, 0x50}, {0x02, 0xD7},
+               {0x04, 0x89}, {0x06, 0xC3}, {0x08, 0xC0}, {0x0A, 0x07},
+               {0x0C, 0x80}, {0x10, 0x10}, {0x11, 0x10}, {0x12, 0x1B},
+               {0x14, 0x00}, {0x15, 0xE8} };
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 : 156.25MHz Refclk2 : 156.25MHz
+ */
+static const u8 idt_conf_156_25[11][2] = { {0x04, 0x19}, {0x06, 0x03},
+               {0x08, 0xC0}, {0x0A, 0x07}, {0x0C, 0xA1}, {0x0E, 0x20},
+               {0x10, 0x10}, {0x11, 0x10}, {0x12, 0xB5}, {0x13, 0x3C},
+               {0x15, 0xE8} };
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 : 100MHz Refclk2 : 156.25MHz
+ */
+static const u8 idt_conf_100_156_25[11][2] = { {0x04, 0x19}, {0x06, 0x03},
+               {0x08, 0xC0}, {0x0A, 0x07}, {0x0C, 0xA1}, {0x0E, 0x20},
+               {0x10, 0x19}, {0x11, 0x10}, {0x12, 0xB5}, {0x13, 0x3C},
+               {0x15, 0xE8} };
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 : 125MHz Refclk2 : 156.25MHz
+ */
+static const u8 idt_conf_125_156_25[11][2] = { {0x04, 0x19}, {0x06, 0x03},
+               {0x08, 0xC0}, {0x0A, 0x07}, {0x0C, 0xA1}, {0x0E, 0x20},
+               {0x10, 0x14}, {0x11, 0x10}, {0x12, 0xB5}, {0x13, 0x3C},
+               {0x15, 0xE8} };
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 : 156.25MHz Refclk2 : 100MHz
+ */
+static const u8 idt_conf_156_25_100[11][2] = { {0x04, 0x19}, {0x06, 0x03},
+               {0x08, 0xC0}, {0x0A, 0x07}, {0x0C, 0xA1}, {0x0E, 0x20},
+               {0x10, 0x10}, {0x11, 0x19}, {0x12, 0xB5}, {0x13, 0x3C},
+               {0x15, 0xE8} };
+
+/* configuration values for IDT registers for Output Refclks:
+ * Refclk1 : 156.25MHz Refclk2 : 125MHz
+ */
+static const u8 idt_conf_156_25_125[11][2] = { {0x04, 0x19}, {0x06, 0x03},
+               {0x08, 0xC0}, {0x0A, 0x07}, {0x0C, 0xA1}, {0x0E, 0x20},
+               {0x10, 0x10}, {0x11, 0x14}, {0x12, 0xB5}, {0x13, 0x3C},
+               {0x15, 0xE8} };
+
+int set_serdes_refclk(u8 idt_addr, u8 serdes_num,
+                       enum serdes_refclk refclk1,
+                       enum serdes_refclk refclk2, u8 feedback);
+
+#endif /*__IDT8T49N222A_SERDES_CLK_H_ */
index 40ce6b082d1d6b77f108d91fe865361101accfcd..a49e3006d9d7897358cfa4d6d7baecf401df99e5 100644 (file)
@@ -107,6 +107,26 @@ const char *byte_to_binary_mask(u8 val, u8 mask, char *buf)
        return buf;
 }
 
+#ifdef QIXIS_RST_FORCE_MEM
+void board_assert_mem_reset(void)
+{
+       u8 rst;
+
+       rst = QIXIS_READ(rst_frc[0]);
+       if (!(rst & QIXIS_RST_FORCE_MEM))
+               QIXIS_WRITE(rst_frc[0], rst | QIXIS_RST_FORCE_MEM);
+}
+
+void board_deassert_mem_reset(void)
+{
+       u8 rst;
+
+       rst = QIXIS_READ(rst_frc[0]);
+       if (rst & QIXIS_RST_FORCE_MEM)
+               QIXIS_WRITE(rst_frc[0], rst & ~QIXIS_RST_FORCE_MEM);
+}
+#endif
+
 void qixis_reset(void)
 {
        QIXIS_WRITE(rst_ctl, QIXIS_RST_CTL_RESET);
index 8a3dc33b66c748ccc85665c087368be2362ab452..97a25e838ed414080c7140baba7e6e4ebcf63b0d 100644 (file)
@@ -31,7 +31,7 @@ int vsc_if_enable(unsigned int vsc_addr)
        return i2c_write(vsc_addr, INTERFACE_MODE_REG, 1, &data, 1);
 }
 
-int vsc3316_config(unsigned int vsc_addr, const int8_t con_arr[][2],
+int vsc3316_config(unsigned int vsc_addr, int8_t con_arr[][2],
                unsigned int num_con)
 {
        unsigned int i;
index 4003fcdb23d82f2e112c4641fcfe44ddbed2cd7a..2a491877792fdeef574a66929da6f692f9cccb7c 100644 (file)
@@ -12,7 +12,7 @@
 #include <errno.h>
 
 int vsc_if_enable(unsigned int vsc_addr);
-int vsc3316_config(unsigned int vsc_addr, const int8_t con_arr[][2],
+int vsc3316_config(unsigned int vsc_addr, int8_t con_arr[][2],
                unsigned int num_con);
 int vsc3308_config(unsigned int vsc_addr, const int8_t con_arr[][2],
                unsigned int num_con);
index fffb0c817a3261a46b5e5bc29c84a31aea337715..60e2100af3089144759b42f6ed66d82bc15ae96c 100644 (file)
@@ -27,8 +27,10 @@ int checkboard (void)
 {
        u8 sw;
        struct cpu_type *cpu = gd->arch.cpu;
-       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
+#if defined(CONFIG_P3041DS) || defined(CONFIG_P5020DS) || \
+       defined(CONFIG_P5040DS)
        unsigned int i;
+#endif
        static const char * const freq[] = {"100", "125", "156.25", "212.5" };
 
        printf("Board: %sDS, ", cpu->name);
@@ -47,19 +49,6 @@ int checkboard (void)
        else
                printf("invalid setting of SW%u\n", PIXIS_LBMAP_SWITCH);
 
-       /* Display the RCW, so that no one gets confused as to what RCW
-        * we're actually using for this boot.
-        */
-       puts("Reset Configuration Word (RCW):");
-       for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
-               u32 rcw = in_be32(&gur->rcwsr[i]);
-
-               if ((i % 4) == 0)
-                       printf("\n       %08x:", i * 4);
-               printf(" %08x", rcw);
-       }
-       puts("\n");
-
        /* Display the actual SERDES reference clocks as configured by the
         * dip switches on the board.  Note that the SWx registers could
         * technically be set to force the reference clocks to match the
index da284cde9556aa330acf85adcdf544e6614919fe..517e87ff4c256a766503ddb630f10dc309c80ada 100644 (file)
@@ -56,14 +56,14 @@ phys_size_t fixed_sdram(void)
 
        ddr_size = (phys_size_t) CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
        ddr_cfg_regs.ddr_cdr1 = DDR_CDR1_DHC_EN;
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
 
 #if (CONFIG_NUM_DDR_CONTROLLERS == 2)
        memcpy(&ddr_cfg_regs,
                fixed_ddr_parm_1[i].ddr_settings,
                sizeof(ddr_cfg_regs));
        ddr_cfg_regs.ddr_cdr1 = DDR_CDR1_DHC_EN;
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 1);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 1, 0);
 #endif
 
        /*
index 7a84cd295a2d5ea3c6bf69193c02aba1e8508ffd..2fb40374283cdb07bc132cadc78a45bd49e865bb 100644 (file)
@@ -68,7 +68,7 @@ local_bus_init(void)
 
        get_sys_info(&sysinfo);
        clkdiv = lbc->lcrr & LCRR_CLKDIV;
-       lbc_hz = sysinfo.freqSystemBus / 1000000 / clkdiv;
+       lbc_hz = sysinfo.freq_systembus / 1000000 / clkdiv;
 
        if (lbc_hz < 66) {
                lbc->lcrr = CONFIG_SYS_LBC_LCRR | LCRR_DBYP;    /* DLL Bypass */
index 3d2dabd1169a52087d644796a48ddb26288c2514..1e21a664c1f424af2e15a7c788a3063271ed53f8 100644 (file)
@@ -250,7 +250,7 @@ local_bus_init(void)
 
        get_sys_info(&sysinfo);
        clkdiv = lbc->lcrr & LCRR_CLKDIV;
-       lbc_hz = sysinfo.freqSystemBus / 1000000 / clkdiv;
+       lbc_hz = sysinfo.freq_systembus / 1000000 / clkdiv;
 
        if (lbc_hz < 66) {
                lbc->lcrr |= LCRR_DBYP; /* DLL Bypass */
index d4e7abebd43449dc68a1aa6c690e94acc0d9c439..ee9269504cb3c558a63479e0b671138865e61385 100644 (file)
@@ -248,7 +248,7 @@ local_bus_init(void)
 
        get_sys_info(&sysinfo);
        clkdiv = lbc->lcrr & LCRR_CLKDIV;
-       lbc_hz = sysinfo.freqSystemBus / 1000000 / clkdiv;
+       lbc_hz = sysinfo.freq_systembus / 1000000 / clkdiv;
 
        if (lbc_hz < 66) {
                lbc->lcrr |= LCRR_DBYP; /* DLL Bypass */
index a45a5583c9362ad3739bdd771f337ee458417a11..162636ef8c0bbdeb98b6183c6b62e6f9cd00727b 100644 (file)
@@ -273,7 +273,7 @@ local_bus_init(void)
 
        get_sys_info(&sysinfo);
        clkdiv = lbc->lcrr & LCRR_CLKDIV;
-       lbc_hz = sysinfo.freqSystemBus / 1000000 / clkdiv;
+       lbc_hz = sysinfo.freq_systembus / 1000000 / clkdiv;
 
        if (lbc_hz < 66) {
                lbc->lcrr = CONFIG_SYS_LBC_LCRR | LCRR_DBYP;    /* DLL Bypass */
index aa8badab48e9fce35d1c66f11291670916230753..681f052e41c238c309d0e65a73e2272b0cdc5bcb 100644 (file)
@@ -139,7 +139,7 @@ phys_size_t fixed_sdram(void)
        }
 
        ddr_size = (phys_size_t) CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
 
        if (set_ddr_laws(CONFIG_SYS_DDR_SDRAM_BASE, ddr_size,
                                        LAW_TRGT_IF_DDR_1) < 0) {
index 73289f3656d93702e2bf2389813f1bc4c3f92bcd..d0e712eb303112fadc49e5182b28867d336ab244 100644 (file)
@@ -26,7 +26,7 @@ void sdram_init(void)
 
        ddr_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_DDR_RATIO;
        ddr_ratio = ddr_ratio >> MPC85xx_PORPLLSR_DDR_RATIO_SHIFT;
-       ddr_freq_mhz = (CONFIG_SYS_CLK_FREQ * ddr_ratio) / 0x1000000;
+       ddr_freq_mhz = (CONFIG_SYS_CLK_FREQ * ddr_ratio) / 1000000;
 
        /* mask off E bit */
        u32 svr = SVR_SOC_VER(mfspr(SPRN_SVR));
index cfc05f71243c1979d986f7355d4f4d46542e1409..3bc4f4325f0593eeb07f3fa6a017f91794f55629 100644 (file)
@@ -21,6 +21,9 @@ ifdef MINIMAL
 COBJS-y        += spl_minimal.o tlb.o law.o
 
 else
+ifdef CONFIG_SPL_BUILD
+COBJS-y += spl.o
+endif
 COBJS-y        += $(BOARD).o
 COBJS-y        += ddr.o
 COBJS-y        += law.o
diff --git a/board/freescale/p1022ds/spl.c b/board/freescale/p1022ds/spl.c
new file mode 100644 (file)
index 0000000..b9dbf81
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <ns16550.h>
+#include <malloc.h>
+#include <mmc.h>
+#include <nand.h>
+#include <i2c.h>
+#include "../common/ngpixis.h"
+#include <fsl_esdhc.h>
+#include <spi_flash.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static const u32 sysclk_tbl[] = {
+       66666000, 7499900, 83332500, 8999900,
+       99999000, 11111000, 12499800, 13333200
+};
+
+ulong get_effective_memsize(void)
+{
+       return CONFIG_SYS_L2_SIZE;
+}
+
+void board_init_f(ulong bootflag)
+{
+       int px_spd;
+       u32 plat_ratio, sys_clk, bus_clk;
+       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
+
+       console_init_f();
+
+       /* Set pmuxcr to allow both i2c1 and i2c2 */
+       setbits_be32(&gur->pmuxcr, in_be32(&gur->pmuxcr) | 0x1000);
+       setbits_be32(&gur->pmuxcr,
+                    in_be32(&gur->pmuxcr) | MPC85xx_PMUXCR_SD_DATA);
+
+#ifdef CONFIG_SPL_SPI_BOOT
+       /* Enable the SPI */
+       clrsetbits_8(&pixis->brdcfg0, PIXIS_ELBC_SPI_MASK, PIXIS_SPI);
+#endif
+
+       /* Read back the register to synchronize the write. */
+       in_be32(&gur->pmuxcr);
+
+       /* initialize selected port with appropriate baud rate */
+       px_spd = in_8((unsigned char *)(PIXIS_BASE + PIXIS_SPD));
+       sys_clk = sysclk_tbl[px_spd & PIXIS_SPD_SYSCLK_MASK];
+       plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO;
+       bus_clk = sys_clk * plat_ratio / 2;
+
+       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+                    bus_clk / 16 / CONFIG_BAUDRATE);
+#ifdef CONFIG_SPL_MMC_BOOT
+       puts("\nSD boot...\n");
+#elif defined(CONFIG_SPL_SPI_BOOT)
+       puts("\nSPI Flash boot...\n");
+#endif
+
+       /* copy code to RAM and jump to it - this should not return */
+       /* NOTE - code has to be copied out of NAND buffer before
+        * other blocks can be read.
+        */
+       relocate_code(CONFIG_SPL_RELOC_STACK, 0, CONFIG_SPL_RELOC_TEXT_BASE);
+}
+
+void board_init_r(gd_t *gd, ulong dest_addr)
+{
+       /* Pointer is writable since we allocated a register for it */
+       gd = (gd_t *)CONFIG_SPL_GD_ADDR;
+       bd_t *bd;
+
+       memset(gd, 0, sizeof(gd_t));
+       bd = (bd_t *)(CONFIG_SPL_GD_ADDR + sizeof(gd_t));
+       memset(bd, 0, sizeof(bd_t));
+       gd->bd = bd;
+       bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
+       bd->bi_memsize = CONFIG_SYS_L2_SIZE;
+
+       probecpu();
+       get_clocks();
+       mem_malloc_init(CONFIG_SPL_RELOC_MALLOC_ADDR,
+                       CONFIG_SPL_RELOC_MALLOC_SIZE);
+#ifndef CONFIG_SPL_NAND_BOOT
+       env_init();
+#endif
+#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);
+
+       gd->env_addr  = (ulong)(CONFIG_ENV_ADDR);
+       gd->env_valid = 1;
+#else
+       env_relocate();
+#endif
+
+       i2c_init(CONFIG_SYS_FSL_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+
+       gd->ram_size = initdram(0);
+#ifdef CONFIG_SPL_NAND_BOOT
+       puts("Tertiary program loader running in sram...");
+#else
+       puts("Second program loader running in sram...\n");
+#endif
+
+#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 d150d95a2f0bc9bce9ef17399f5b5b720a15d8d7..8b343968437be445424cc94d06d71f7c20e9f115 100644 (file)
 #include <asm/fsl_ddr_sdram.h>
 
 
-/*
- * Fixed sdram init -- doesn't use serial presence detect.
- */
-void sdram_init(void)
-{
-       volatile ccsr_ddr_t *ddr = (ccsr_ddr_t *)CONFIG_SYS_MPC8xxx_DDR_ADDR;
-
-       __raw_writel(CONFIG_SYS_DDR_CS0_BNDS, &ddr->cs0_bnds);
-       __raw_writel(CONFIG_SYS_DDR_CS0_CONFIG, &ddr->cs0_config);
-#if CONFIG_CHIP_SELECTS_PER_CTRL > 1
-       __raw_writel(CONFIG_SYS_DDR_CS1_BNDS, &ddr->cs1_bnds);
-       __raw_writel(CONFIG_SYS_DDR_CS1_CONFIG, &ddr->cs1_config);
-#endif
-       __raw_writel(CONFIG_SYS_DDR_TIMING_3, &ddr->timing_cfg_3);
-       __raw_writel(CONFIG_SYS_DDR_TIMING_0, &ddr->timing_cfg_0);
-       __raw_writel(CONFIG_SYS_DDR_TIMING_1, &ddr->timing_cfg_1);
-       __raw_writel(CONFIG_SYS_DDR_TIMING_2, &ddr->timing_cfg_2);
-
-       __raw_writel(CONFIG_SYS_DDR_CONTROL_2, &ddr->sdram_cfg_2);
-       __raw_writel(CONFIG_SYS_DDR_MODE_1, &ddr->sdram_mode);
-       __raw_writel(CONFIG_SYS_DDR_MODE_2, &ddr->sdram_mode_2);
-
-       __raw_writel(CONFIG_SYS_DDR_INTERVAL, &ddr->sdram_interval);
-       __raw_writel(CONFIG_SYS_DDR_DATA_INIT, &ddr->sdram_data_init);
-       __raw_writel(CONFIG_SYS_DDR_CLK_CTRL, &ddr->sdram_clk_cntl);
-
-       __raw_writel(CONFIG_SYS_DDR_TIMING_4, &ddr->timing_cfg_4);
-       __raw_writel(CONFIG_SYS_DDR_TIMING_5, &ddr->timing_cfg_5);
-       __raw_writel(CONFIG_SYS_DDR_ZQ_CONTROL, &ddr->ddr_zq_cntl);
-       __raw_writel(CONFIG_SYS_DDR_WRLVL_CONTROL, &ddr->ddr_wrlvl_cntl);
-
-       /* Set, but do not enable the memory */
-       __raw_writel(CONFIG_SYS_DDR_CONTROL & ~SDRAM_CFG_MEM_EN,
-                       &ddr->sdram_cfg);
-
-       in_be32(&ddr->sdram_cfg);
-       udelay(500);
-
-       /* Let the controller go */
-       out_be32(&ddr->sdram_cfg, in_be32(&ddr->sdram_cfg) | SDRAM_CFG_MEM_EN);
-       in_be32(&ddr->sdram_cfg);
-
-       set_next_law(0, CONFIG_SYS_SDRAM_SIZE_LAW, LAW_TRGT_IF_DDR_1);
-}
-
 const static u32 sysclk_tbl[] = {
        66666000, 7499900, 83332500, 8999900,
        99999000, 11111000, 12499800, 13333200
@@ -68,6 +23,10 @@ void board_init_f(ulong bootflag)
        u32 plat_ratio, sys_clk, bus_clk;
        ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
 
+#if defined(CONFIG_SYS_NAND_BR_PRELIM) && defined(CONFIG_SYS_NAND_OR_PRELIM)
+       set_lbc_br(0, CONFIG_SYS_NAND_BR_PRELIM);
+       set_lbc_or(0, CONFIG_SYS_NAND_OR_PRELIM);
+#endif
        /* for FPGA */
        set_lbc_br(2, CONFIG_SYS_BR2_PRELIM);
        set_lbc_or(2, CONFIG_SYS_OR2_PRELIM);
@@ -83,9 +42,6 @@ void board_init_f(ulong bootflag)
 
        puts("\nNAND boot... ");
 
-       /* Initialize the DDR3 */
-       sdram_init();
-
        /* copy code to RAM and jump to it - this should not return */
        /* NOTE - code has to be copied out of NAND buffer before
         * other blocks can be read.
@@ -96,6 +52,7 @@ void board_init_f(ulong bootflag)
 
 void board_init_r(gd_t *gd, ulong dest_addr)
 {
+       puts("\nSecond program loader running in sram...");
        nand_boot();
 }
 
index 2eef6adbfa86717107571d319ab1a58705f1cb82..e7ae2e25b224acf62009cc39760c2b4e36ea5f30 100644 (file)
@@ -71,25 +71,32 @@ struct fsl_e_tlb_entry tlb_table[] = {
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 7, BOOKE_PAGESZ_4K, 1),
 
-#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_SPL)
+#if defined(CONFIG_SYS_RAMBOOT) || \
+       (defined(CONFIG_SPL) && !defined(CONFIG_SPL_COMMON_INIT_DDR))
        /* **** - eSDHC/eSPI/NAND boot */
        SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
-                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                       0, 8, BOOKE_PAGESZ_1G, 1),
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 8, BOOKE_PAGESZ_1G, 1),
        /* **** - eSDHC/eSPI/NAND boot - second 1GB of memory */
        SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
-                       CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
-                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                       0, 9, BOOKE_PAGESZ_1G, 1),
+                     CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 9, BOOKE_PAGESZ_1G, 1),
 #endif
 
 #ifdef CONFIG_SYS_NAND_BASE
        /* *I*G - NAND */
        SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
-                       MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                       0, 10, BOOKE_PAGESZ_16K, 1),
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 10, BOOKE_PAGESZ_16K, 1),
 #endif
 
+#ifdef CONFIG_SYS_INIT_L2_ADDR
+       /* *I*G - L2SRAM */
+       SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L2_ADDR, CONFIG_SYS_INIT_L2_ADDR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_G,
+                     0, 11, BOOKE_PAGESZ_256K, 1)
+#endif
 };
 
 int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 0038077fcc3d54cb84bce49ddd9e5d7ab26a9ea7..5bee22e638044a282f69b44030560cb7e6ef1afe 100644 (file)
@@ -220,7 +220,7 @@ phys_size_t fixed_sdram (void)
                ddr_cfg_regs.cs[0].bnds = 0x0000001F;
        }
 
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
 
        set_ddr_laws(0, ddr_size, LAW_TRGT_IF_DDR_1);
        return ddr_size;
index 44377317dd0b47e3ee374fbfa4b87c17ee5fb944..f4cc43fbfac130dcc4d58d9817980d23b5678210 100644 (file)
@@ -3,6 +3,7 @@ Overview
 P1_P2_RDB_PC represents a set of boards including
     P1020MSBG-PC
     P1020RDB-PC
+    P1020RDB-PD
     P1020UTM-PC
     P1021RDB-PC
     P1024RDB
index 9355536b35d072a3a84f045db39fa5cf25045b7a..c0b72e035e924a9e295165b6d92c9e4a48ee5fa4 100644 (file)
@@ -80,7 +80,7 @@ dimm_params_t ddr_raw_timing = {
        .refresh_rate_ps = 7800000,
        .tFAW_ps = 30000,
 };
-#elif defined(CONFIG_P1020MBG)
+#elif (defined(CONFIG_P1020MBG) || defined(CONFIG_P1020RDB_PD))
 /* Micron MT41J512M8_187E */
 dimm_params_t ddr_raw_timing = {
        .n_ranks = 2,
@@ -111,7 +111,7 @@ dimm_params_t ddr_raw_timing = {
        .refresh_rate_ps = 7800000,
        .tFAW_ps = 37500,
 };
-#elif defined(CONFIG_P1020RDB)
+#elif defined(CONFIG_P1020RDB_PC)
 /*
  * Samsung K4B2G0846C-HCF8
  * The following timing are for "downshift"
@@ -247,11 +247,11 @@ phys_size_t fixed_sdram(void)
 
        get_sys_info(&sysinfo);
        printf("Configuring DDR for %s MT/s data rate\n",
-                       strmhz(buf, sysinfo.freqDDRBus));
+                       strmhz(buf, sysinfo.freq_ddrbus));
 
        ddr_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
 
-       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0);
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
 
        if (set_ddr_laws(CONFIG_SYS_DDR_SDRAM_BASE,
                                ddr_size, LAW_TRGT_IF_DDR_1) < 0) {
index 93896dc7194f158e9e5b85adbfc662d57df018c3..d4561c7643d6130a86beafeb8a9a885ba299adfa 100644 (file)
@@ -94,7 +94,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                        MAS3_SX|MAS3_SW|MAS3_SR, 0,
                        0, 8, BOOKE_PAGESZ_1G, 1),
 
-#ifdef CONFIG_P1020MBG
+#if defined(CONFIG_P1020MBG) || defined(CONFIG_P1020RDB_PD)
        /* 2G DDR on P1020MBG, map the second 1G */
        SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
                        CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000,
diff --git a/board/freescale/p1_twr/Makefile b/board/freescale/p1_twr/Makefile
new file mode 100644 (file)
index 0000000..915b9bc
--- /dev/null
@@ -0,0 +1,35 @@
+#
+# Copyright 2013 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(BOARD).o
+
+COBJS-y        += $(BOARD).o
+COBJS-y        += ddr.o
+COBJS-y        += law.o
+COBJS-y        += tlb.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(obj).depend $(OBJS) $(SOBJS)
+       $(call cmd_link_o_target, $(OBJS))
+
+clean:
+       rm -f $(OBJS) $(SOBJS)
+
+distclean:     clean
+       rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/freescale/p1_twr/ddr.c b/board/freescale/p1_twr/ddr.c
new file mode 100644 (file)
index 0000000..67f69d7
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/mmu.h>
+#include <asm/immap_85xx.h>
+#include <asm/processor.h>
+#include <asm/fsl_ddr_sdram.h>
+#include <asm/fsl_ddr_dimm_params.h>
+#include <asm/io.h>
+#include <asm/fsl_law.h>
+
+/* Fixed sdram init -- doesn't use serial presence detect. */
+phys_size_t fixed_sdram(void)
+{
+       sys_info_t sysinfo;
+       char buf[32];
+       size_t ddr_size;
+       fsl_ddr_cfg_regs_t ddr_cfg_regs = {
+               .cs[0].bnds = CONFIG_SYS_DDR_CS0_BNDS,
+               .cs[0].config = CONFIG_SYS_DDR_CS0_CONFIG,
+               .cs[0].config_2 = CONFIG_SYS_DDR_CS0_CONFIG_2,
+#if CONFIG_CHIP_SELECTS_PER_CTRL > 1
+               .cs[1].bnds = CONFIG_SYS_DDR_CS1_BNDS,
+               .cs[1].config = CONFIG_SYS_DDR_CS1_CONFIG,
+               .cs[1].config_2 = CONFIG_SYS_DDR_CS1_CONFIG_2,
+#endif
+               .timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3,
+               .timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0,
+               .timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1,
+               .timing_cfg_2 = CONFIG_SYS_DDR_TIMING_2,
+               .ddr_sdram_cfg = CONFIG_SYS_DDR_CONTROL,
+               .ddr_sdram_cfg_2 = CONFIG_SYS_DDR_CONTROL_2,
+               .ddr_sdram_mode = CONFIG_SYS_DDR_MODE_1,
+               .ddr_sdram_mode_2 = CONFIG_SYS_DDR_MODE_2,
+               .ddr_sdram_md_cntl = CONFIG_SYS_DDR_MODE_CONTROL,
+               .ddr_sdram_interval = CONFIG_SYS_DDR_INTERVAL,
+               .ddr_data_init = CONFIG_SYS_DDR_DATA_INIT,
+               .ddr_sdram_clk_cntl = CONFIG_SYS_DDR_CLK_CTRL,
+               .ddr_init_addr = CONFIG_SYS_DDR_INIT_ADDR,
+               .ddr_init_ext_addr = CONFIG_SYS_DDR_INIT_EXT_ADDR,
+               .timing_cfg_4 = CONFIG_SYS_DDR_TIMING_4,
+               .timing_cfg_5 = CONFIG_SYS_DDR_TIMING_5,
+               .ddr_zq_cntl = CONFIG_SYS_DDR_ZQ_CONTROL,
+               .ddr_wrlvl_cntl = CONFIG_SYS_DDR_WRLVL_CONTROL,
+               .ddr_sr_cntr = CONFIG_SYS_DDR_SR_CNTR,
+               .ddr_sdram_rcw_1 = CONFIG_SYS_DDR_RCW_1,
+               .ddr_sdram_rcw_2 = CONFIG_SYS_DDR_RCW_2
+       };
+
+       get_sys_info(&sysinfo);
+       printf("Configuring DDR for %s MT/s data rate\n",
+                       strmhz(buf, sysinfo.freq_ddrbus));
+
+       ddr_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
+
+       fsl_ddr_set_memctl_regs(&ddr_cfg_regs, 0, 0);
+
+       if (set_ddr_laws(CONFIG_SYS_DDR_SDRAM_BASE,
+                               ddr_size, LAW_TRGT_IF_DDR_1) < 0) {
+               printf("ERROR setting Local Access Windows for DDR\n");
+               return 0;
+       };
+
+       return ddr_size;
+}
diff --git a/board/freescale/p1_twr/law.c b/board/freescale/p1_twr/law.c
new file mode 100644 (file)
index 0000000..e79d8a4
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_law.h>
+#include <asm/mmu.h>
+
+struct law_entry law_table[] = {
+       SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_64M, LAW_TRGT_IF_LBC),
+       SET_LAW(CONFIG_SYS_SSD_BASE_PHYS, LAW_SIZE_1M, LAW_TRGT_IF_LBC)
+};
+
+int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/p1_twr/p1_twr.c b/board/freescale/p1_twr/p1_twr.c
new file mode 100644 (file)
index 0000000..ea8db6f
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <hwconfig.h>
+#include <pci.h>
+#include <i2c.h>
+#include <asm/processor.h>
+#include <asm/mmu.h>
+#include <asm/cache.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_pci.h>
+#include <asm/fsl_ddr_sdram.h>
+#include <asm/io.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_lbc.h>
+#include <asm/mp.h>
+#include <miiphy.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <fsl_mdio.h>
+#include <tsec.h>
+#include <ioports.h>
+#include <asm/fsl_serdes.h>
+#include <netdev.h>
+
+#define SYSCLK_64      64000000
+#define SYSCLK_66      66666666
+
+unsigned long get_board_sys_clk(ulong dummy)
+{
+       ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       par_io_t *par_io = (par_io_t *) &(gur->qe_par_io);
+       unsigned int cpdat_val = 0;
+
+       /* Set-up up pin muxing based on board switch settings */
+       cpdat_val = par_io[1].cpdat;
+
+       /* Check switch setting for SYSCLK select (PB3)  */
+       if (cpdat_val & 0x10000000)
+               return SYSCLK_64;
+       else
+               return SYSCLK_66;
+
+       return 0;
+}
+
+#ifdef CONFIG_QE
+
+#define PCA_IOPORT_I2C_ADDR            0x23
+#define PCA_IOPORT_OUTPUT_CMD          0x2
+#define PCA_IOPORT_CFG_CMD             0x6
+
+const qe_iop_conf_t qe_iop_conf_tab[] = {
+
+#ifdef CONFIG_TWR_P1025
+       /* GPIO */
+       {1,  0, 1, 0, 0},
+       {1,  18, 1, 0, 0},
+
+       /* GPIO for switch options */
+       {1,  2, 2, 0, 0}, /* PROFIBUS_MODE_SEL */
+       {1,  3, 2, 0, 0}, /* SYS_CLK_SELECT */
+       {1,  29, 2, 0, 0}, /* LOCALBUS_QE_MUXSEL */
+       {1,  30, 2, 0, 0}, /* ETH_TDM_SEL */
+
+       /* QE_MUX_MDC */
+       {1,  19, 1, 0, 1}, /* QE_MUX_MDC */
+
+       /* QE_MUX_MDIO */
+       {1,  20, 3, 0, 1}, /* QE_MUX_MDIO */
+
+       /* UCC_1_MII */
+       {0, 23, 2, 0, 2}, /* CLK12 */
+       {0, 24, 2, 0, 1}, /* CLK9 */
+       {0,  7, 1, 0, 2}, /* ENET1_TXD0_SER1_TXD0 */
+       {0,  9, 1, 0, 2}, /* ENET1_TXD1_SER1_TXD1 */
+       {0, 11, 1, 0, 2}, /* ENET1_TXD2_SER1_TXD2 */
+       {0, 12, 1, 0, 2}, /* ENET1_TXD3_SER1_TXD3 */
+       {0,  6, 2, 0, 2}, /* ENET1_RXD0_SER1_RXD0 */
+       {0, 10, 2, 0, 2}, /* ENET1_RXD1_SER1_RXD1 */
+       {0, 14, 2, 0, 2}, /* ENET1_RXD2_SER1_RXD2 */
+       {0, 15, 2, 0, 2}, /* ENET1_RXD3_SER1_RXD3 */
+       {0,  5, 1, 0, 2}, /* ENET1_TX_EN_SER1_RTS_B */
+       {0, 13, 1, 0, 2}, /* ENET1_TX_ER */
+       {0,  4, 2, 0, 2}, /* ENET1_RX_DV_SER1_CTS_B */
+       {0,  8, 2, 0, 2}, /* ENET1_RX_ER_SER1_CD_B */
+       {0, 17, 2, 0, 2}, /* ENET1_CRS */
+       {0, 16, 2, 0, 2}, /* ENET1_COL */
+
+       /* UCC_5_RMII */
+       {1, 11, 2, 0, 1}, /* CLK13 */
+       {1, 7,  1, 0, 2}, /* ENET5_TXD0_SER5_TXD0 */
+       {1, 10, 1, 0, 2}, /* ENET5_TXD1_SER5_TXD1 */
+       {1, 6, 2, 0, 2}, /* ENET5_RXD0_SER5_RXD0 */
+       {1, 9, 2, 0, 2}, /* ENET5_RXD1_SER5_RXD1 */
+       {1, 5, 1, 0, 2}, /* ENET5_TX_EN_SER5_RTS_B */
+       {1, 4, 2, 0, 2}, /* ENET5_RX_DV_SER5_CTS_B */
+       {1, 8, 2, 0, 2}, /* ENET5_RX_ER_SER5_CD_B */
+
+       /* TDMA - clock option is configured in OS based on board setting */
+       {1, 23, 2, 0, 2}, /* TDMA_TXD */
+       {1, 25, 2, 0, 2}, /* TDMA_RXD */
+       {1, 26, 1, 0, 2}, /* TDMA_SYNC */
+#endif
+
+       {0,  0, 0, 0, QE_IOP_TAB_END} /* END of table */
+};
+#endif
+
+int board_early_init_f(void)
+{
+       ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+
+       setbits_be32(&gur->pmuxcr,
+                       (MPC85xx_PMUXCR_SDHC_CD | MPC85xx_PMUXCR_SDHC_WP));
+
+       /* SDHC_DAT[4:7] not exposed to pins (use as SPI) */
+       clrbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_SD_DATA);
+
+       return 0;
+}
+
+int checkboard(void)
+{
+       ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u8 boot_status;
+
+       printf("Board: %s\n", CONFIG_BOARDNAME);
+
+       boot_status = ((gur->porbmsr) >> MPC85xx_PORBMSR_ROMLOC_SHIFT) & 0xf;
+       puts("rom_loc: ");
+       if (boot_status == PORBMSR_ROMLOC_NOR)
+               puts("nor flash");
+       else if (boot_status == PORBMSR_ROMLOC_SDHC)
+               puts("sd");
+       else
+               puts("unknown");
+       puts("\n");
+
+       return 0;
+}
+
+#ifdef CONFIG_PCI
+void pci_init_board(void)
+{
+       fsl_pcie_init_board(0);
+}
+#endif
+
+int board_early_init_r(void)
+{
+       const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
+       const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+
+       /*
+        * Remap Boot flash region to caching-inhibited
+        * so that flash can be erased properly.
+        */
+
+       /* Flush d-cache and invalidate i-cache of any FLASH data */
+       flush_dcache();
+       invalidate_icache();
+
+       /* invalidate existing TLB entry for flash */
+       disable_tlb(flash_esel);
+
+       set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, /* tlb, epn, rpn */
+               MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,           /* perms, wimge */
+               0, flash_esel, BOOKE_PAGESZ_64M, 1);/* ts, esel, tsize, iprot */
+       return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       struct fsl_pq_mdio_info mdio_info;
+       struct tsec_info_struct tsec_info[4];
+       ccsr_gur_t *gur __attribute__((unused)) =
+               (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       int num = 0;
+
+#ifdef CONFIG_TSEC1
+       SET_STD_TSEC_INFO(tsec_info[num], 1);
+       num++;
+#endif
+#ifdef CONFIG_TSEC2
+       SET_STD_TSEC_INFO(tsec_info[num], 2);
+       if (is_serdes_configured(SGMII_TSEC2)) {
+               printf("eTSEC2 is in sgmii mode.\n");
+               tsec_info[num].flags |= TSEC_SGMII;
+       }
+       num++;
+#endif
+#ifdef CONFIG_TSEC3
+       SET_STD_TSEC_INFO(tsec_info[num], 3);
+       num++;
+#endif
+
+       if (!num) {
+               printf("No TSECs initialized\n");
+               return 0;
+       }
+
+       mdio_info.regs = (struct tsec_mii_mng *)CONFIG_SYS_MDIO_BASE_ADDR;
+       mdio_info.name = DEFAULT_MII_NAME;
+
+       fsl_pq_mdio_init(bis, &mdio_info);
+
+       tsec_eth_init(bis, tsec_info, num);
+
+#if defined(CONFIG_UEC_ETH)
+       /* QE0 and QE3 need to be exposed for UCC1
+        * and UCC5 Eth mode (in PMUXCR register).
+        * Currently QE/LBC muxed pins assumed to be
+        * LBC for U-Boot and PMUXCR updated by OS if required */
+
+       uec_standard_init(bis);
+#endif
+
+       return pci_eth_init(bis);
+}
+
+#if defined(CONFIG_QE)
+static void fdt_board_fixup_qe_pins(void *blob)
+{
+       int node;
+
+       if (!hwconfig("qe")) {
+               /* For QE and eLBC pins multiplexing,
+                * When don't use QE function, remove
+                * qe node from dt blob.
+                */
+               node = fdt_path_offset(blob, "/qe");
+               if (node >= 0)
+                       fdt_del_node(blob, node);
+       } else {
+               /* For TWR Peripheral Modules - TWR-SER2
+                * board only can support Signal Port MII,
+                * so delete one UEC node when use MII port.
+                */
+               if (hwconfig("mii"))
+                       node = fdt_path_offset(blob, "/qe/ucc@2400");
+               else
+                       node = fdt_path_offset(blob, "/qe/ucc@2000");
+               if (node >= 0)
+                       fdt_del_node(blob, node);
+       }
+
+       return;
+}
+#endif
+
+#ifdef CONFIG_OF_BOARD_SETUP
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       phys_addr_t base;
+       phys_size_t size;
+
+       ft_cpu_setup(blob, bd);
+
+       base = getenv_bootm_low();
+       size = getenv_bootm_size();
+
+       fdt_fixup_memory(blob, (u64)base, (u64)size);
+
+       FT_FSL_PCI_SETUP;
+
+#ifdef CONFIG_QE
+       do_fixup_by_compat(blob, "fsl,qe", "status", "okay",
+                       sizeof("okay"), 0);
+#endif
+#if defined(CONFIG_TWR_P1025)
+       fdt_board_fixup_qe_pins(blob);
+#endif
+       fdt_fixup_dr_usb(blob, bd);
+}
+#endif
diff --git a/board/freescale/p1_twr/tlb.c b/board/freescale/p1_twr/tlb.c
new file mode 100644 (file)
index 0000000..308335c
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/mmu.h>
+
+struct fsl_e_tlb_entry tlb_table[] = {
+       /* TLB 0 - for temp stack in cache */
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR,
+                       CONFIG_SYS_INIT_RAM_ADDR_PHYS,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 ,
+                       CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 ,
+                       CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 ,
+                       CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 0, BOOKE_PAGESZ_4K, 0),
+
+       /* TLB 1 */
+       /* *I*** - Covers boot page */
+       SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
+                       MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I,
+                       0, 0, BOOKE_PAGESZ_4K, 1),
+
+       /* *I*G* - CCSRBAR */
+       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 1, BOOKE_PAGESZ_1M, 1),
+
+#ifndef CONFIG_SPL_BUILD
+       /* W**G* - Flash, localbus */
+       /* This will be changed to *I*G* after relocation to RAM. */
+       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
+                       MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
+                       0, 2, BOOKE_PAGESZ_64M, 1),
+
+       /* W**G* - Flash, localbus */
+       /* This will be changed to *I*G* after relocation to RAM. */
+       SET_TLB_ENTRY(1, CONFIG_SYS_SSD_BASE, CONFIG_SYS_SSD_BASE_PHYS,
+                       MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 5, BOOKE_PAGESZ_1M, 1),
+
+#ifdef CONFIG_PCI
+       /* *I*G* - PCI memory 1.5G */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 3, BOOKE_PAGESZ_1G, 1),
+
+       /* *I*G* - PCI I/O effective: 192K  */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
+                       MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 4, BOOKE_PAGESZ_256K, 1),
+#endif
+
+#endif
+
+#ifdef CONFIG_SYS_RAMBOOT
+       /* *I*G - eSDHC boot */
+       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
+                       MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                       0, 8, BOOKE_PAGESZ_1G, 1),
+#endif
+
+};
+
+int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 08d10bc9c832f0e5b60532ed18e6c0b310a24484..60694a6723d1cb7c79edf4b6c6ff8747de91a361 100644 (file)
@@ -28,7 +28,6 @@ int checkboard(void)
 {
        u8 sw;
        struct cpu_type *cpu = gd->arch.cpu;
-       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
        unsigned int i;
 
        printf("Board: %sRDB, ", cpu->name);
@@ -38,20 +37,6 @@ int checkboard(void)
        sw = CPLD_READ(fbank_sel);
        printf("vBank: %d\n", sw & 0x1);
 
-       /*
-        * Display the RCW, so that no one gets confused as to what RCW
-        * we're actually using for this boot.
-        */
-       puts("Reset Configuration Word (RCW):");
-       for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
-               u32 rcw = in_be32(&gur->rcwsr[i]);
-
-               if ((i % 4) == 0)
-                       printf("\n       %08x:", i * 4);
-               printf(" %08x", rcw);
-       }
-       puts("\n");
-
        /*
         * Display the actual SERDES reference clocks as configured by the
         * dip switches on the board.  Note that the SWx registers could
index 85df06690633fa783cc1eb1b5243c0c893f49b80..a2167b377bbb94207289ed0e3fad89630ed82495 100644 (file)
@@ -8,7 +8,8 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(BOARD).o
 
-COBJS-y        += $(BOARD).o
+COBJS-$(CONFIG_T4240QDS) += t4240qds.o
+COBJS-$(CONFIG_T4240EMU) += t4240emu.o
 COBJS-y        += ddr.o
 COBJS-$(CONFIG_T4240QDS)+= eth.o
 COBJS-$(CONFIG_PCI)    += pci.o
index 058d62511f5979fef8c9fc72502af540b79aed33..26ac2a54d253ab0434d1f1f3c20755cba056bcb4 100644 (file)
 #include <asm/fsl_ddr_sdram.h>
 #include <asm/fsl_ddr_dimm_params.h>
 #include <asm/fsl_law.h>
+#include "ddr.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct board_specific_parameters {
-       u32 n_ranks;
-       u32 datarate_mhz_high;
-       u32 rank_gb;
-       u32 clk_adjust;
-       u32 wrlvl_start;
-       u32 wrlvl_ctl_2;
-       u32 wrlvl_ctl_3;
-       u32 cpo;
-       u32 write_data_delay;
-       u32 force_2T;
-};
-
-/*
- * This table contains all valid speeds we want to override with board
- * specific parameters. datarate_mhz_high values need to be in ascending order
- * for each n_ranks group.
- */
-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 |
-        */
-       {2,  1350, 4, 4,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
-       {2,  1350, 0, 5,     7, 0x0709090b, 0x0c0c0d09,   0xff,    2,  0},
-       {2,  1666, 4, 4,     8, 0x080a0a0d, 0x0d10100b,   0xff,    2,  0},
-       {2,  1666, 0, 5,     7, 0x080a0a0c, 0x0d0d0e0a,   0xff,    2,  0},
-       {2,  1900, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
-       {2,  2140, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
-       {1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
-       {1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-       {1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
-       {1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
-       {}
-};
-
-/*
- * The three slots have slightly different timing. The center values are good
- * for all slots. We use identical speed tables for them. In future use, if
- * DIMMs require separated tables, make more entries as needed.
- */
-static const struct board_specific_parameters *udimms[] = {
-       udimm0,
-};
-
-static const struct board_specific_parameters rdimm0[] = {
-       /*
-        * memory controller 0
-        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
-        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
-        */
-       {4,  1350, 0, 5,     9, 0x08070605, 0x07080805,   0xff,    2,  0},
-       {4,  1666, 0, 5,     8, 0x08070605, 0x07080805,   0xff,    2,  0},
-       {4,  2140, 0, 5,     8, 0x08070605, 0x07081805,   0xff,    2,  0},
-       {2,  1350, 0, 5,     7, 0x0809090b, 0x0c0c0d09,   0xff,    2,  0},
-       {2,  1666, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-       {2,  2140, 0, 5,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
-       {1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
-       {1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-       {1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
-       {1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
-       {}
-};
-
-/*
- * The three slots have slightly different timing. See comments above.
- */
-static const struct board_specific_parameters *rdimms[] = {
-       rdimm0,
-};
-
 void fsl_ddr_board_options(memctl_options_t *popts,
                                dimm_params_t *pdimm,
                                unsigned int ctrl_num)
diff --git a/board/freescale/t4qds/ddr.h b/board/freescale/t4qds/ddr.h
new file mode 100644 (file)
index 0000000..d0a0951
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __DDR_H__
+#define __DDR_H__
+struct board_specific_parameters {
+       u32 n_ranks;
+       u32 datarate_mhz_high;
+       u32 rank_gb;
+       u32 clk_adjust;
+       u32 wrlvl_start;
+       u32 wrlvl_ctl_2;
+       u32 wrlvl_ctl_3;
+       u32 cpo;
+       u32 write_data_delay;
+       u32 force_2T;
+};
+
+/*
+ * These tables contain all valid speeds we want to override with board
+ * specific parameters. datarate_mhz_high values need to be in ascending order
+ * for each n_ranks group.
+ */
+
+#ifdef CONFIG_T4240QDS
+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 |
+        */
+       {2,  1350, 4, 4,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
+       {2,  1350, 0, 5,     7, 0x0709090b, 0x0c0c0d09,   0xff,    2,  0},
+       {2,  1666, 4, 4,     8, 0x080a0a0d, 0x0d10100b,   0xff,    2,  0},
+       {2,  1666, 0, 5,     7, 0x080a0a0c, 0x0d0d0e0a,   0xff,    2,  0},
+       {2,  1900, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
+       {2,  2140, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
+       {1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
+       {1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
+       {1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
+       {1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
+       {}
+};
+
+static const struct board_specific_parameters rdimm0[] = {
+       /*
+        * memory controller 0
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
+        */
+       {4,  1350, 0, 5,     9, 0x08070605, 0x06070806,   0xff,    2,  0},
+       {4,  1666, 0, 5,    11, 0x0a080706, 0x07090906,   0xff,    2,  0},
+       {4,  2140, 0, 5,    12, 0x0b090807, 0x080a0b07,   0xff,    2,  0},
+       {2,  1350, 0, 5,     9, 0x08070605, 0x06070806,   0xff,    2,  0},
+       {2,  1666, 0, 5,    11, 0x0a090806, 0x08090a06,   0xff,    2,  0},
+       {2,  2140, 0, 5,    12, 0x0b090807, 0x080a0b07,   0xff,    2,  0},
+       {1,  1350, 0, 5,     9, 0x08070605, 0x06070806,   0xff,    2,  0},
+       {1,  1666, 0, 5,    11, 0x0a090806, 0x08090a06,   0xff,    2,  0},
+       {1,  2140, 0, 4,    12, 0x0b090807, 0x080a0b07,   0xff,    2,  0},
+       {}
+};
+
+#else  /* CONFIG_T4240EMU */
+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 |
+        */
+       {2,  2140, 0, 4,     8, 0x0, 0x0,   0xff,    2,  0},
+       {1,  2140, 0, 4,     8, 0x0, 0x0,   0xff,    2,  0},
+       {}
+};
+
+static const struct board_specific_parameters rdimm0[] = {
+       /*
+        * memory controller 0
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
+        */
+       {4,  2140, 0, 5,     8, 0x0, 0x0,   0xff,    2,  0},
+       {2,  2140, 0, 5,     8, 0x0, 0x0,   0xff,    2,  0},
+       {1,  2140, 0, 4,     8, 0x0, 0x0,   0xff,    2,  0},
+       {}
+};
+#endif /* CONFIG_T4240EMU */
+
+/*
+ * The three slots have slightly different timing. The center values are good
+ * for all slots. We use identical speed tables for them. In future use, if
+ * DIMMs require separated tables, make more entries as needed.
+ */
+static const struct board_specific_parameters *udimms[] = {
+       udimm0,
+};
+
+/*
+ * The three slots have slightly different timing. See comments above.
+ */
+static const struct board_specific_parameters *rdimms[] = {
+       rdimm0,
+};
+
+
+#endif
index c771e17952c888b01c6963c90fdc56f8737063b5..b5f488bcba46c6d6de8b70db79cd3afd354ba5b9 100644 (file)
@@ -172,7 +172,10 @@ static int t4240qds_mdio_init(char *realbusname, u8 muxval)
 void board_ft_fman_fixup_port(void *blob, char * prop, phys_addr_t pa,
                                enum fm_port port, int offset)
 {
-       if (fm_info_get_enet_if(port) == PHY_INTERFACE_MODE_SGMII) {
+       int interface = fm_info_get_enet_if(port);
+
+       if (interface == PHY_INTERFACE_MODE_SGMII ||
+           interface == PHY_INTERFACE_MODE_QSGMII) {
                switch (port) {
                case FM1_DTSEC1:
                        if (qsgmiiphy_fix[port])
@@ -272,6 +275,7 @@ void fdt_fixup_board_enet(void *fdt)
        for (i = FM1_DTSEC1; i < NUM_FM_PORTS; i++) {
                switch (fm_info_get_enet_if(i)) {
                case PHY_INTERFACE_MODE_SGMII:
+               case PHY_INTERFACE_MODE_QSGMII:
                        switch (mdio_mux[i]) {
                        case EMI1_SLOT1:
                                fdt_status_okay_by_alias(fdt, "emi1_slot1");
@@ -393,7 +397,7 @@ static void initialize_qsgmiiphy_fix(void)
 int board_eth_init(bd_t *bis)
 {
 #if defined(CONFIG_FMAN_ENET)
-       int i, idx, lane, slot;
+       int i, idx, lane, slot, interface;
        struct memac_mdio_info dtsec_mdio_info;
        struct memac_mdio_info tgec_mdio_info;
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
@@ -470,9 +474,9 @@ int board_eth_init(bd_t *bis)
                fm_info_set_phy_address(FM1_DTSEC6, slot_qsgmii_phyaddr[1][1]);
                if ((srds_prtcl_s2 != 56) && (srds_prtcl_s2 != 57)) {
                        fm_info_set_phy_address(FM1_DTSEC9,
-                                               slot_qsgmii_phyaddr[1][3]);
-                       fm_info_set_phy_address(FM1_DTSEC10,
                                                slot_qsgmii_phyaddr[1][2]);
+                       fm_info_set_phy_address(FM1_DTSEC10,
+                                               slot_qsgmii_phyaddr[1][3]);
                }
                break;
        case 40:
@@ -482,9 +486,9 @@ int board_eth_init(bd_t *bis)
                fm_info_set_phy_address(FM1_DTSEC6, slot_qsgmii_phyaddr[1][1]);
                if ((srds_prtcl_s2 != 56) && (srds_prtcl_s2 != 57)) {
                        fm_info_set_phy_address(FM1_DTSEC10,
-                                               slot_qsgmii_phyaddr[1][3]);
-                       fm_info_set_phy_address(FM1_DTSEC9,
                                                slot_qsgmii_phyaddr[1][2]);
+                       fm_info_set_phy_address(FM1_DTSEC9,
+                                               slot_qsgmii_phyaddr[1][3]);
                }
                fm_info_set_phy_address(FM1_DTSEC1, slot_qsgmii_phyaddr[2][0]);
                fm_info_set_phy_address(FM1_DTSEC2, slot_qsgmii_phyaddr[2][1]);
@@ -498,15 +502,31 @@ int board_eth_init(bd_t *bis)
 
        for (i = FM1_DTSEC1; i < FM1_DTSEC1 + CONFIG_SYS_NUM_FM1_DTSEC; i++) {
                idx = i - FM1_DTSEC1;
-               switch (fm_info_get_enet_if(i)) {
+               interface = fm_info_get_enet_if(i);
+               switch (interface) {
                case PHY_INTERFACE_MODE_SGMII:
-                       lane = serdes_get_first_lane(FSL_SRDS_1,
+               case PHY_INTERFACE_MODE_QSGMII:
+                       if (interface == PHY_INTERFACE_MODE_QSGMII) {
+                               if (idx <= 3)
+                                       lane = serdes_get_first_lane(FSL_SRDS_1,
+                                                       QSGMII_FM1_A);
+                               else
+                                       lane = serdes_get_first_lane(FSL_SRDS_1,
+                                                       QSGMII_FM1_B);
+                               if (lane < 0)
+                                       break;
+                               slot = lane_to_slot_fsm1[lane];
+                               debug("FM1@DTSEC%u expects QSGMII in slot %u\n",
+                                     idx + 1, slot);
+                       } else {
+                               lane = serdes_get_first_lane(FSL_SRDS_1,
                                                SGMII_FM1_DTSEC1 + idx);
-                       if (lane < 0)
-                               break;
-                       slot = lane_to_slot_fsm1[lane];
-                       debug("FM1@DTSEC%u expects SGMII in slot %u\n",
-                               idx + 1, slot);
+                               if (lane < 0)
+                                       break;
+                               slot = lane_to_slot_fsm1[lane];
+                               debug("FM1@DTSEC%u expects SGMII in slot %u\n",
+                                     idx + 1, slot);
+                       }
                        if (QIXIS_READ(present2) & (1 << (slot - 1)))
                                fm_disable_port(i);
                        switch (slot) {
@@ -600,8 +620,8 @@ int board_eth_init(bd_t *bis)
                fm_info_set_phy_address(FM2_DTSEC4, slot_qsgmii_phyaddr[4][3]);
                fm_info_set_phy_address(FM2_DTSEC5, slot_qsgmii_phyaddr[3][0]);
                fm_info_set_phy_address(FM2_DTSEC6, slot_qsgmii_phyaddr[3][1]);
-               fm_info_set_phy_address(FM2_DTSEC9, slot_qsgmii_phyaddr[3][3]);
-               fm_info_set_phy_address(FM2_DTSEC10, slot_qsgmii_phyaddr[3][2]);
+               fm_info_set_phy_address(FM2_DTSEC9, slot_qsgmii_phyaddr[3][2]);
+               fm_info_set_phy_address(FM2_DTSEC10, slot_qsgmii_phyaddr[3][3]);
                break;
        case 40:
        case 46:
@@ -641,15 +661,31 @@ int board_eth_init(bd_t *bis)
 
        for (i = FM2_DTSEC1; i < FM2_DTSEC1 + CONFIG_SYS_NUM_FM2_DTSEC; i++) {
                idx = i - FM2_DTSEC1;
-               switch (fm_info_get_enet_if(i)) {
+               interface = fm_info_get_enet_if(i);
+               switch (interface) {
                case PHY_INTERFACE_MODE_SGMII:
-                       lane = serdes_get_first_lane(FSL_SRDS_2,
+               case PHY_INTERFACE_MODE_QSGMII:
+                       if (interface == PHY_INTERFACE_MODE_QSGMII) {
+                               if (idx <= 3)
+                                       lane = serdes_get_first_lane(FSL_SRDS_2,
+                                                       QSGMII_FM2_A);
+                               else
+                                       lane = serdes_get_first_lane(FSL_SRDS_2,
+                                                       QSGMII_FM2_B);
+                               if (lane < 0)
+                                       break;
+                               slot = lane_to_slot_fsm2[lane];
+                               debug("FM2@DTSEC%u expects QSGMII in slot %u\n",
+                                     idx + 1, slot);
+                       } else {
+                               lane = serdes_get_first_lane(FSL_SRDS_2,
                                                SGMII_FM2_DTSEC1 + idx);
-                       if (lane < 0)
-                               break;
-                       slot = lane_to_slot_fsm2[lane];
-                       debug("FM2@DTSEC%u expects SGMII in slot %u\n",
-                               idx + 1, slot);
+                               if (lane < 0)
+                                       break;
+                               slot = lane_to_slot_fsm2[lane];
+                               debug("FM2@DTSEC%u expects SGMII in slot %u\n",
+                                     idx + 1, slot);
+                       }
                        if (QIXIS_READ(present2) & (1 << (slot - 1)))
                                fm_disable_port(i);
                        switch (slot) {
index 63549df2aa1ab155df4f79528b4f7dd8c87de7af..367783bfe4311c7a58665a1788510eeebbbb9cbf 100644 (file)
@@ -19,7 +19,9 @@ struct law_entry law_table[] = {
 #ifdef CONFIG_SYS_QMAN_MEM_PHYS
        SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
 #endif
+#ifdef QIXIS_BASE_PHYS
        SET_LAW(QIXIS_BASE_PHYS, LAW_SIZE_4K, LAW_TRGT_IF_IFC),
+#endif
 #ifdef CONFIG_SYS_DCSRBAR_PHYS
        /* Limit DCSR to 32M to access NPC Trace Buffer */
        SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_DCSR),
diff --git a/board/freescale/t4qds/t4240emu.c b/board/freescale/t4qds/t4240emu.c
new file mode 100644 (file)
index 0000000..7a61036
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <i2c.h>
+#include <netdev.h>
+#include <linux/compiler.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/cache.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int checkboard(void)
+{
+       struct cpu_type *cpu = gd->arch.cpu;
+
+       printf("Board: %sEMU\n", cpu->name);
+
+       return 0;
+}
+
+int board_early_init_r(void)
+{
+       const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
+       const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
+
+       /*
+        * Remap Boot flash + PROMJET region to caching-inhibited
+        * so that flash can be erased properly.
+        */
+
+       /* Flush d-cache and invalidate i-cache of any FLASH data */
+       flush_dcache();
+       invalidate_icache();
+
+       /* invalidate existing TLB entry for flash */
+       disable_tlb(flash_esel);
+
+       set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
+               MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+               0, flash_esel, BOOKE_PAGESZ_256M, 1);
+
+       set_liodns();
+#ifdef CONFIG_SYS_DPAA_QBMAN
+       setup_portals();
+#endif
+
+       return 0;
+}
+
+int misc_init_r(void)
+{
+       return 0;
+}
+
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       phys_addr_t base;
+       phys_size_t size;
+
+       ft_cpu_setup(blob, bd);
+
+       base = getenv_bootm_low();
+       size = getenv_bootm_size();
+
+       fdt_fixup_memory(blob, (u64)base, (u64)size);
+
+       fdt_fixup_liodn(blob);
+       fdt_fixup_dr_usb(blob, bd);
+}
similarity index 88%
rename from board/freescale/t4qds/t4qds.c
rename to board/freescale/t4qds/t4240qds.c
index aa6a217f39dd52440feff393d06590ad3a3e4473..0c1a4fbd9ff7b4f6a44656f740290a8e15f23f15 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static const int8_t vsc3316_fsm1_tx[8][2] = { {0, 0}, {1, 1}, {6, 6}, {7, 7},
+static int8_t vsc3316_fsm1_tx[8][2] = { {0, 0}, {1, 1}, {6, 6}, {7, 7},
                                {8, 8}, {9, 9}, {14, 14}, {15, 15} };
 
-static const int8_t vsc3316_fsm2_tx[8][2] = { {2, 2}, {3, 3}, {4, 4}, {5, 5},
+static int8_t vsc3316_fsm2_tx[8][2] = { {2, 2}, {3, 3}, {4, 4}, {5, 5},
                                {10, 10}, {11, 11}, {12, 12}, {13, 13} };
 
-static const int8_t vsc3316_fsm1_rx[8][2] = { {2, 12}, {3, 13}, {4, 5}, {5, 4},
+static int8_t vsc3316_fsm1_rx[8][2] = { {2, 12}, {3, 13}, {4, 5}, {5, 4},
                                {10, 11}, {11, 10}, {12, 2}, {13, 3} };
 
-static const int8_t vsc3316_fsm2_rx[8][2] = { {0, 15}, {1, 14}, {6, 7}, {7, 6},
+static int8_t vsc3316_fsm2_rx[8][2] = { {0, 15}, {1, 14}, {6, 7}, {7, 6},
                                {8, 9}, {9, 8}, {14, 1}, {15, 0} };
 
 int checkboard(void)
@@ -43,12 +43,11 @@ int checkboard(void)
        char buf[64];
        u8 sw;
        struct cpu_type *cpu = gd->arch.cpu;
-       ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
        unsigned int i;
 
        printf("Board: %sQDS, ", cpu->name);
        printf("Sys ID: 0x%02x, Sys Ver: 0x%02x, ",
-               QIXIS_READ(id), QIXIS_READ(arch));
+              QIXIS_READ(id), QIXIS_READ(arch));
 
        sw = QIXIS_READ(brdcfg[0]);
        sw = (sw & QIXIS_LBMAP_MASK) >> QIXIS_LBMAP_SHIFT;
@@ -63,24 +62,11 @@ int checkboard(void)
                printf("invalid setting of SW%u\n", QIXIS_LBMAP_SWITCH);
 
        printf("FPGA: v%d (%s), build %d",
-               (int)QIXIS_READ(scver), qixis_read_tag(buf),
-               (int)qixis_read_minor());
+              (int)QIXIS_READ(scver), qixis_read_tag(buf),
+              (int)qixis_read_minor());
        /* the timestamp string contains "\n" at the end */
        printf(" on %s", qixis_read_time(buf));
 
-       /* Display the RCW, so that no one gets confused as to what RCW
-        * we're actually using for this boot.
-        */
-       puts("Reset Configuration Word (RCW):");
-       for (i = 0; i < ARRAY_SIZE(gur->rcwsr); i++) {
-               u32 rcw = in_be32(&gur->rcwsr[i]);
-
-               if ((i % 4) == 0)
-                       printf("\n       %08x:", i * 4);
-               printf(" %08x", rcw);
-       }
-       puts("\n");
-
        /*
         * Display the actual SERDES reference clocks as configured by the
         * dip switches on the board.  Note that the SWx registers could
@@ -92,7 +78,7 @@ int checkboard(void)
        puts("SERDES Reference Clocks: ");
        sw = QIXIS_READ(brdcfg[2]);
        for (i = 0; i < MAX_SERDES; i++) {
-               static const char *freq[] = {
+               static const char * const freq[] = {
                        "100", "125", "156.25", "161.1328125"};
                unsigned int clock = (sw >> (6 - 2 * i)) & 3;
 
@@ -367,25 +353,60 @@ int config_frontside_crossbar_vsc3316(void)
        srds_prtcl_s1 = in_be32(&gur->rcwsr[4]) &
                        FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
        srds_prtcl_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
-       if (srds_prtcl_s1) {
+       switch (srds_prtcl_s1) {
+       case 38:
+               /* swap first lane and third lane on slot1 */
+               vsc3316_fsm1_tx[0][1] = 14;
+               vsc3316_fsm1_tx[6][1] = 0;
+               vsc3316_fsm1_rx[1][1] = 2;
+               vsc3316_fsm1_rx[6][1] = 13;
+       case 40:
+       case 46:
+       case 48:
+               /* swap first lane and third lane on slot2 */
+               vsc3316_fsm1_tx[2][1] = 8;
+               vsc3316_fsm1_tx[4][1] = 6;
+               vsc3316_fsm1_rx[2][1] = 10;
+               vsc3316_fsm1_rx[5][1] = 5;
+       default:
                ret = vsc3316_config(VSC3316_FSM_TX_ADDR, vsc3316_fsm1_tx, 8);
                if (ret)
                        return ret;
                ret = vsc3316_config(VSC3316_FSM_RX_ADDR, vsc3316_fsm1_rx, 8);
                if (ret)
                        return ret;
+               break;
        }
 
        srds_prtcl_s2 = in_be32(&gur->rcwsr[4]) &
                                FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
        srds_prtcl_s2 >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
-       if (srds_prtcl_s2) {
+       switch (srds_prtcl_s2) {
+       case 38:
+               /* swap first lane and third lane on slot3 */
+               vsc3316_fsm2_tx[2][1] = 11;
+               vsc3316_fsm2_tx[5][1] = 4;
+               vsc3316_fsm2_rx[2][1] = 9;
+               vsc3316_fsm2_rx[4][1] = 7;
+       case 40:
+       case 46:
+       case 48:
+       case 50:
+       case 52:
+       case 54:
+               /* swap first lane and third lane on slot4 */
+               vsc3316_fsm2_tx[6][1] = 3;
+               vsc3316_fsm2_tx[1][1] = 12;
+               vsc3316_fsm2_rx[0][1] = 1;
+               vsc3316_fsm2_rx[6][1] = 15;
+       default:
                ret = vsc3316_config(VSC3316_FSM_TX_ADDR, vsc3316_fsm2_tx, 8);
                if (ret)
                        return ret;
                ret = vsc3316_config(VSC3316_FSM_RX_ADDR, vsc3316_fsm2_rx, 8);
                if (ret)
                        return ret;
+               break;
        }
 
        return 0;
@@ -430,7 +451,7 @@ int config_backside_crossbar_mux(void)
                break;
        default:
                printf("WARNING: unsupported for SerDes3 Protocol %d\n",
-                               srds_prtcl_s3);
+                      srds_prtcl_s3);
                return -1;
        }
 
@@ -470,7 +491,7 @@ int config_backside_crossbar_mux(void)
                break;
        default:
                printf("WARNING: unsupported for SerDes4 Protocol %d\n",
-                               srds_prtcl_s4);
+                      srds_prtcl_s4);
                return -1;
        }
 
@@ -495,8 +516,8 @@ int board_early_init_r(void)
        disable_tlb(flash_esel);
 
        set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
-                       MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                       0, flash_esel, BOOKE_PAGESZ_256M, 1);
+               MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+               0, flash_esel, BOOKE_PAGESZ_256M, 1);
 
        set_liodns();
 #ifdef CONFIG_SYS_DPAA_QBMAN
@@ -634,9 +655,8 @@ int misc_init_r(void)
                u32 pllcr0 = srds_regs->bank[i].pllcr0;
                u32 expected = pllcr0 & SRDS_PLLCR0_RFCK_SEL_MASK;
                if (expected != actual[i]) {
-                       printf("Warning: SERDES%u expects reference clock"
-                              " %sMHz, but actual is %sMHz\n", i + 1,
-                              serdes_clock_to_string(expected),
+                       printf("Warning: SERDES%u expects reference clock %sMHz, but actual is %sMHz\n",
+                              i + 1, serdes_clock_to_string(expected),
                               serdes_clock_to_string(actual[i]));
                }
        }
@@ -795,42 +815,44 @@ void qixis_dump_switch(void)
        }
 
        sw[0] = dutcfg[0];
-       sw[1] = (dutcfg[1] << 0x07)             | \
-               ((dutcfg[12] & 0xC0) >> 1)      | \
-               ((dutcfg[11] & 0xE0) >> 3)      | \
-               ((dutcfg[6] & 0x80) >> 6)       | \
+       sw[1] = (dutcfg[1] << 0x07)             |
+               ((dutcfg[12] & 0xC0) >> 1)      |
+               ((dutcfg[11] & 0xE0) >> 3)      |
+               ((dutcfg[6] & 0x80) >> 6)       |
                ((dutcfg[1] & 0x80) >> 7);
-       sw[2] = ((brdcfg[1] & 0x0f) << 4)       | \
-               ((brdcfg[1] & 0x30) >> 2)       | \
-               ((brdcfg[1] & 0x40) >> 5)       | \
+       sw[2] = ((brdcfg[1] & 0x0f) << 4)       |
+               ((brdcfg[1] & 0x30) >> 2)       |
+               ((brdcfg[1] & 0x40) >> 5)       |
                ((brdcfg[1] & 0x80) >> 7);
        sw[3] = brdcfg[2];
-       sw[4] = ((dutcfg[2] & 0x01) << 7)       | \
-               ((dutcfg[2] & 0x06) << 4)       | \
-               ((~QIXIS_READ(present)) & 0x10) | \
-               ((brdcfg[3] & 0x80) >> 4)       | \
-               ((brdcfg[3] & 0x01) << 2)       | \
-               ((brdcfg[6] == 0x62) ? 3 :      \
-               ((brdcfg[6] == 0x5a) ? 2 :      \
+       sw[4] = ((dutcfg[2] & 0x01) << 7)       |
+               ((dutcfg[2] & 0x06) << 4)       |
+               ((~QIXIS_READ(present)) & 0x10) |
+               ((brdcfg[3] & 0x80) >> 4)       |
+               ((brdcfg[3] & 0x01) << 2)       |
+               ((brdcfg[6] == 0x62) ? 3 :
+               ((brdcfg[6] == 0x5a) ? 2 :
                ((brdcfg[6] == 0x5e) ? 1 : 0)));
-       sw[5] = ((brdcfg[0] & 0x0f) << 4)       | \
-               ((QIXIS_READ(rst_ctl) & 0x30) >> 2) | \
+       sw[5] = ((brdcfg[0] & 0x0f) << 4)       |
+               ((QIXIS_READ(rst_ctl) & 0x30) >> 2) |
                ((brdcfg[0] & 0x40) >> 5);
        sw[6] = (brdcfg[11] & 0x20)             |
                ((brdcfg[5] & 0x02) << 3);
-       sw[7] = (((~QIXIS_READ(rst_ctl)) & 0x40) << 1) | \
+       sw[7] = (((~QIXIS_READ(rst_ctl)) & 0x40) << 1) |
                ((brdcfg[5] & 0x10) << 2);
-       sw[8] = ((brdcfg[12] & 0x08) << 4)      | \
+       sw[8] = ((brdcfg[12] & 0x08) << 4)      |
                ((brdcfg[12] & 0x03) << 5);
 
        puts("DIP switch (reverse-engineering)\n");
        for (i = 0; i < 9; i++) {
                printf("SW%d         = 0b%s (0x%02x)\n",
-                       i + 1, byte_to_binary_mask(sw[i], mask[i], buf), sw[i]);
+                      i + 1, byte_to_binary_mask(sw[i], mask[i], buf), sw[i]);
        }
 }
 
-static int do_vdd_adjust(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_vdd_adjust(cmd_tbl_t *cmdtp,
+                        int flag, int argc,
+                        char * const argv[])
 {
        ulong override;
 
index b27356a5f7fa46ac32e00e0326799043097f81be..b701e7520938d0d98321ece92f7836af1d98fc3a 100644 (file)
@@ -120,9 +120,11 @@ struct fsl_e_tlb_entry tlb_table[] = {
                        MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                        0, 16, BOOKE_PAGESZ_64K, 1),
 #endif
+#ifdef QIXIS_BASE_PHYS
        SET_TLB_ENTRY(1, QIXIS_BASE, QIXIS_BASE_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 17, BOOKE_PAGESZ_4K, 1),
+#endif
 #ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
        /*
         * SRIO_PCIE_BOOT-SLAVE. 1M space from 0xffe00000 for
index f0df2e39e6a9159c5a2641d66cd40ccc9dc2cd66..426dc05c7d3cea53fda73193e25a3a2e40007aa2 100644 (file)
 #define REFLECTION_TESTPATTERN 0xdede
 #define REFLECTION_TESTPATTERN_INV (~REFLECTION_TESTPATTERN & 0xffff)
 
+#ifdef CONFIG_SYS_FPGA_NO_RFL_HI
+#define REFLECTION_TESTREG reflection_low
+#else
+#define REFLECTION_TESTREG reflection_high
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 
 int get_fpga_state(unsigned dev)
@@ -90,23 +96,17 @@ int board_early_init_r(void)
        gd405ep_set_fpga_reset(0);
 
        for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) {
-               struct ihs_fpga *fpga =
-                       (struct ihs_fpga *)CONFIG_SYS_FPGA_BASE(k);
-#ifdef CONFIG_SYS_FPGA_NO_RFL_HI
-               u16 *reflection_target = &fpga->reflection_low;
-#else
-               u16 *reflection_target = &fpga->reflection_high;
-#endif
                /*
                 * wait for fpga out of reset
                 */
                ctr = 0;
                while (1) {
-                       out_le16(&fpga->reflection_low,
-                               REFLECTION_TESTPATTERN);
+                       u16 val;
+
+                       FPGA_SET_REG(k, reflection_low, REFLECTION_TESTPATTERN);
 
-                       if (in_le16(reflection_target) ==
-                               REFLECTION_TESTPATTERN_INV)
+                       FPGA_GET_REG(k, REFLECTION_TESTREG, &val);
+                       if (val == REFLECTION_TESTPATTERN_INV)
                                break;
 
                        udelay(100000);
index 48d878643bf275c9b95c7d9de1d9700b42953369..35dfbbc577aa9c6864017a2831257baf36192fa3 100644 (file)
@@ -55,6 +55,8 @@ enum {
        RAM_DDR2_64 = 2,
 };
 
+struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
+
 int misc_init_r(void)
 {
        /* startup fans */
@@ -79,10 +81,9 @@ static unsigned int get_mc2_present(void)
 
 static void print_fpga_info(unsigned dev)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(dev);
-       u16 versions = in_le16(&fpga->versions);
-       u16 fpga_version = in_le16(&fpga->fpga_version);
-       u16 fpga_features = in_le16(&fpga->fpga_features);
+       u16 versions;
+       u16 fpga_version;
+       u16 fpga_features;
        unsigned unit_type;
        unsigned hardware_version;
        unsigned feature_rs232;
@@ -96,6 +97,10 @@ static void print_fpga_info(unsigned dev)
 
        printf("FPGA%d: ", dev);
 
+       FPGA_GET_REG(dev, versions, &versions);
+       FPGA_GET_REG(dev, fpga_version, &fpga_version);
+       FPGA_GET_REG(dev, fpga_features, &fpga_features);
+
        hardware_version = versions & 0x000f;
 
        if (fpga_state
@@ -247,8 +252,9 @@ int checkboard(void)
 
 int last_stage_init(void)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(0);
-       u16 versions = in_le16(&fpga->versions);
+       u16 versions;
+
+       FPGA_GET_REG(0, versions, &versions);
 
        print_fpga_info(0);
        if (get_mc2_present())
index eee9ba0aaa15c8b809a84f30c17892c5fe97d471..03d796cdb89b1b09eb9662328ea862341629d3a9 100644 (file)
@@ -37,6 +37,8 @@ enum {
        HWVER_122 = 3,
 };
 
+struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
+
 int misc_init_r(void)
 {
        /* startup fans */
@@ -101,15 +103,18 @@ int checkboard(void)
 
 static void print_fpga_info(void)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(0);
-       u16 versions = in_le16(&fpga->versions);
-       u16 fpga_version = in_le16(&fpga->fpga_version);
-       u16 fpga_features = in_le16(&fpga->fpga_features);
+       u16 versions;
+       u16 fpga_version;
+       u16 fpga_features;
        unsigned unit_type;
        unsigned hardware_version;
        unsigned feature_channels;
        unsigned feature_expansion;
 
+       FPGA_GET_REG(0, versions, &versions);
+       FPGA_GET_REG(0, fpga_version, &fpga_version);
+       FPGA_GET_REG(0, fpga_features, &fpga_features);
+
        unit_type = (versions & 0xf000) >> 12;
        hardware_version = versions & 0x000f;
        feature_channels = fpga_features & 0x007f;
@@ -163,7 +168,6 @@ static void print_fpga_info(void)
  */
 int last_stage_init(void)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(0);
        unsigned int k;
 
        print_fpga_info();
@@ -175,7 +179,7 @@ int last_stage_init(void)
                configure_gbit_phy(k);
 
        /* take fpga serdes blocks out of reset */
-       out_le16(&fpga->quad_serdes_reset, 0);
+       FPGA_SET_REG(0, quad_serdes_reset, 0);
 
        return 0;
 }
index c728bc7b73accde0d68827e80dccbe4d6280b724..7a98e41d0aacc2c444030924a5c6a7856184d37f 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <errno.h>
 #include <asm/processor.h>
 #include <asm/io.h>
 #include <asm/ppc4xx-gpio.h>
 #include <gdsys_fpga.h>
 
 #include "../common/osd.h"
+#include "../common/mclink.h"
+
+#include <i2c.h>
+#include <pca953x.h>
+#include <pca9698.h>
+
+#include <miiphy.h>
+
+DECLARE_GLOBAL_DATA_PTR;
 
 #define LATCH0_BASE (CONFIG_SYS_LATCH_BASE)
 #define LATCH1_BASE (CONFIG_SYS_LATCH_BASE + 0x100)
 #define LATCH2_BASE (CONFIG_SYS_LATCH_BASE + 0x200)
 
+#define MAX_MUX_CHANNELS 2
+
 enum {
        UNITTYPE_MAIN_SERVER = 0,
        UNITTYPE_MAIN_USER = 1,
@@ -31,11 +43,22 @@ enum {
        HWVER_100 = 0,
        HWVER_104 = 1,
        HWVER_110 = 2,
+       HWVER_120 = 3,
+       HWVER_200 = 4,
+       HWVER_210 = 5,
+       HWVER_220 = 6,
+       HWVER_230 = 7,
+};
+
+enum {
+       FPGA_HWVER_200 = 0,
+       FPGA_HWVER_210 = 1,
 };
 
 enum {
        COMPRESSION_NONE = 0,
-       COMPRESSION_TYPE1_DELTA,
+       COMPRESSION_TYPE1_DELTA = 1,
+       COMPRESSION_TYPE1_TYPE2_DELTA = 3,
 };
 
 enum {
@@ -51,8 +74,75 @@ enum {
 
 enum {
        RAM_DDR2_32 = 0,
+       RAM_DDR3_32 = 1,
 };
 
+enum {
+       CARRIER_SPEED_1G = 0,
+       CARRIER_SPEED_2_5G = 1,
+};
+
+enum {
+       MCFPGA_DONE = 1 << 0,
+       MCFPGA_INIT_N = 1 << 1,
+       MCFPGA_PROGRAM_N = 1 << 2,
+       MCFPGA_UPDATE_ENABLE_N = 1 << 3,
+       MCFPGA_RESET_N = 1 << 4,
+};
+
+enum {
+       GPIO_MDC = 1 << 14,
+       GPIO_MDIO = 1 << 15,
+};
+
+unsigned int mclink_fpgacount;
+struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
+
+static int setup_88e1518(const char *bus, unsigned char addr);
+
+int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data)
+{
+       int res;
+
+       switch (fpga) {
+       case 0:
+               out_le16(reg, data);
+               break;
+       default:
+               res = mclink_send(fpga - 1, regoff, data);
+               if (res < 0) {
+                       printf("mclink_send reg %02lx data %04x returned %d\n",
+                              regoff, data, res);
+                       return res;
+               }
+               break;
+       }
+
+       return 0;
+}
+
+int fpga_get_reg(u32 fpga, u16 *reg, off_t regoff, u16 *data)
+{
+       int res;
+
+       switch (fpga) {
+       case 0:
+               *data = in_le16(reg);
+               break;
+       default:
+               if (fpga > mclink_fpgacount)
+                       return -EINVAL;
+               res = mclink_receive(fpga - 1, regoff, data);
+               if (res < 0) {
+                       printf("mclink_receive reg %02lx returned %d\n",
+                              regoff, res);
+                       return res;
+               }
+       }
+
+       return 0;
+}
+
 /*
  * Check Board Identity:
  */
@@ -74,12 +164,11 @@ int checkboard(void)
        return 0;
 }
 
-static void print_fpga_info(void)
+static void print_fpga_info(unsigned int fpga, bool rgmii2_present)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(0);
-       u16 versions = in_le16(&fpga->versions);
-       u16 fpga_version = in_le16(&fpga->fpga_version);
-       u16 fpga_features = in_le16(&fpga->fpga_features);
+       u16 versions;
+       u16 fpga_version;
+       u16 fpga_features;
        unsigned unit_type;
        unsigned hardware_version;
        unsigned feature_compression;
@@ -87,19 +176,29 @@ static void print_fpga_info(void)
        unsigned feature_audio;
        unsigned feature_sysclock;
        unsigned feature_ramconfig;
+       unsigned feature_carrier_speed;
        unsigned feature_carriers;
        unsigned feature_video_channels;
 
+       int legacy = get_fpga_state(0) & FPGA_STATE_PLATFORM;
+
+       FPGA_GET_REG(0, versions, &versions);
+       FPGA_GET_REG(0, fpga_version, &fpga_version);
+       FPGA_GET_REG(0, fpga_features, &fpga_features);
+
        unit_type = (versions & 0xf000) >> 12;
-       hardware_version = versions & 0x000f;
        feature_compression = (fpga_features & 0xe000) >> 13;
        feature_osd = fpga_features & (1<<11);
        feature_audio = (fpga_features & 0x0600) >> 9;
        feature_sysclock = (fpga_features & 0x0180) >> 7;
        feature_ramconfig = (fpga_features & 0x0060) >> 5;
+       feature_carrier_speed = fpga_features & (1<<4);
        feature_carriers = (fpga_features & 0x000c) >> 2;
        feature_video_channels = fpga_features & 0x0003;
 
+       if (legacy)
+               printf("legacy ");
+
        switch (unit_type) {
        case UNITTYPE_MAIN_USER:
                printf("Mainchannel");
@@ -114,27 +213,78 @@ static void print_fpga_info(void)
                break;
        }
 
-       switch (hardware_version) {
-       case HWVER_100:
-               printf(" HW-Ver 1.00\n");
-               break;
-
-       case HWVER_104:
-               printf(" HW-Ver 1.04\n");
-               break;
-
-       case HWVER_110:
-               printf(" HW-Ver 1.10\n");
-               break;
+       if (unit_type == UNITTYPE_MAIN_USER) {
+               if (legacy)
+                       hardware_version =
+                               (in_le16((void *)LATCH2_BASE)>>8) & 0x0f;
+               else
+                       hardware_version =
+                                 (!!pca9698_get_value(0x20, 24) << 0)
+                               | (!!pca9698_get_value(0x20, 25) << 1)
+                               | (!!pca9698_get_value(0x20, 26) << 2)
+                               | (!!pca9698_get_value(0x20, 27) << 3);
+               switch (hardware_version) {
+               case HWVER_100:
+                       printf(" HW-Ver 1.00,");
+                       break;
+
+               case HWVER_104:
+                       printf(" HW-Ver 1.04,");
+                       break;
+
+               case HWVER_110:
+                       printf(" HW-Ver 1.10,");
+                       break;
+
+               case HWVER_120:
+                       printf(" HW-Ver 1.20-1.21,");
+                       break;
+
+               case HWVER_200:
+                       printf(" HW-Ver 2.00,");
+                       break;
+
+               case HWVER_210:
+                       printf(" HW-Ver 2.10,");
+                       break;
+
+               case HWVER_220:
+                       printf(" HW-Ver 2.20,");
+                       break;
+
+               case HWVER_230:
+                       printf(" HW-Ver 2.30,");
+                       break;
+
+               default:
+                       printf(" HW-Ver %d(not supported),",
+                              hardware_version);
+                       break;
+               }
+               if (rgmii2_present)
+                       printf(" RGMII2,");
+       }
 
-       default:
-               printf(" HW-Ver %d(not supported)\n",
-                      hardware_version);
-               break;
+       if (unit_type == UNITTYPE_VIDEO_USER) {
+               hardware_version = versions & 0x000f;
+               switch (hardware_version) {
+               case FPGA_HWVER_200:
+                       printf(" HW-Ver 2.00,");
+                       break;
+
+               case FPGA_HWVER_210:
+                       printf(" HW-Ver 2.10,");
+                       break;
+
+               default:
+                       printf(" HW-Ver %d(not supported),",
+                              hardware_version);
+                       break;
+               }
        }
 
-       printf("       FPGA V %d.%02d, features:",
-               fpga_version / 100, fpga_version % 100);
+       printf(" FPGA V %d.%02d\n       features:",
+              fpga_version / 100, fpga_version % 100);
 
 
        switch (feature_compression) {
@@ -146,6 +296,10 @@ static void print_fpga_info(void)
                printf(" type1-deltacompression");
                break;
 
+       case COMPRESSION_TYPE1_TYPE2_DELTA:
+               printf(" type1-deltacompression, type2-inlinecompression");
+               break;
+
        default:
                printf(" compression %d(not supported)", feature_compression);
                break;
@@ -192,53 +346,145 @@ static void print_fpga_info(void)
                printf(", RAM 32 bit DDR2");
                break;
 
+       case RAM_DDR3_32:
+               printf(", RAM 32 bit DDR3");
+               break;
+
        default:
                printf(", RAM %d(not supported)", feature_ramconfig);
                break;
        }
 
-       printf(", %d carrier(s)", feature_carriers);
+       printf(", %d carrier(s) %s", feature_carriers,
+              feature_carrier_speed ? "2.5Gbit/s" : "1Gbit/s");
 
        printf(", %d video channel(s)\n", feature_video_channels);
 }
 
 int last_stage_init(void)
 {
-       print_fpga_info();
+       int slaves;
+       unsigned int k;
+       unsigned int mux_ch;
+       unsigned char mclink_controllers[] = { 0x24, 0x25, 0x26 };
+       int legacy = get_fpga_state(0) & FPGA_STATE_PLATFORM;
+       u16 fpga_features;
+       int feature_carrier_speed = fpga_features & (1<<4);
+       bool ch0_rgmii2_present = false;
+
+       FPGA_GET_REG(0, fpga_features, &fpga_features);
+
+       if (!legacy)
+               ch0_rgmii2_present = !pca9698_get_value(0x20, 30);
+
+       print_fpga_info(0, ch0_rgmii2_present);
+       osd_probe(0);
+
+       /* wait for FPGA done */
+       for (k = 0; k < ARRAY_SIZE(mclink_controllers); ++k) {
+               unsigned int ctr = 0;
+
+               if (i2c_probe(mclink_controllers[k]))
+                       continue;
+
+               while (!(pca953x_get_val(mclink_controllers[k])
+                      & MCFPGA_DONE)) {
+                       udelay(100000);
+                       if (ctr++ > 5) {
+                               printf("no done for mclink_controller %d\n", k);
+                               break;
+                       }
+               }
+       }
+
+       if (!legacy && (feature_carrier_speed == CARRIER_SPEED_1G)) {
+               miiphy_register(bb_miiphy_buses[0].name, bb_miiphy_read,
+                               bb_miiphy_write);
+               for (mux_ch = 0; mux_ch < MAX_MUX_CHANNELS; ++mux_ch) {
+                       if ((mux_ch == 1) && !ch0_rgmii2_present)
+                               continue;
+
+                       setup_88e1518(bb_miiphy_buses[0].name, mux_ch);
+               }
+       }
+
+       /* wait for slave-PLLs to be up and running */
+       udelay(500000);
+
+       mclink_fpgacount = CONFIG_SYS_MCLINK_MAX;
+       slaves = mclink_probe();
+       mclink_fpgacount = 0;
+
+       if (slaves <= 0)
+               return 0;
+
+       mclink_fpgacount = slaves;
+
+       for (k = 1; k <= slaves; ++k) {
+               FPGA_GET_REG(k, fpga_features, &fpga_features);
+               feature_carrier_speed = fpga_features & (1<<4);
+
+               print_fpga_info(k, false);
+               osd_probe(k);
+               if (feature_carrier_speed == CARRIER_SPEED_1G) {
+                       miiphy_register(bb_miiphy_buses[k].name,
+                                       bb_miiphy_read, bb_miiphy_write);
+                       setup_88e1518(bb_miiphy_buses[k].name, 0);
+               }
+       }
 
-       return osd_probe(0);
+       return 0;
 }
 
 /*
  * provide access to fpga gpios (for I2C bitbang)
+ * (these may look all too simple but make iocon.h much more readable)
  */
-void fpga_gpio_set(int pin)
+void fpga_gpio_set(unsigned int bus, int pin)
 {
-       out_le16((void *)(CONFIG_SYS_FPGA0_BASE + 0x18), pin);
+       FPGA_SET_REG(bus, gpio.set, pin);
 }
 
-void fpga_gpio_clear(int pin)
+void fpga_gpio_clear(unsigned int bus, int pin)
 {
-       out_le16((void *)(CONFIG_SYS_FPGA0_BASE + 0x16), pin);
+       FPGA_SET_REG(bus, gpio.clear, pin);
 }
 
-int fpga_gpio_get(int pin)
+int fpga_gpio_get(unsigned int bus, int pin)
 {
-       return in_le16((void *)(CONFIG_SYS_FPGA0_BASE + 0x14)) & pin;
+       u16 val;
+
+       FPGA_GET_REG(bus, gpio.read, &val);
+
+       return val & pin;
 }
 
 void gd405ep_init(void)
 {
+       unsigned int k;
+
+       if (i2c_probe(0x20)) { /* i2c_probe returns 0 on success */
+               for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k)
+                       gd->arch.fpga_state[k] |= FPGA_STATE_PLATFORM;
+       } else {
+               pca9698_direction_output(0x20, 4, 1);
+       }
 }
 
 void gd405ep_set_fpga_reset(unsigned state)
 {
-       if (state) {
-               out_le16((void *)LATCH0_BASE, CONFIG_SYS_LATCH0_RESET);
-               out_le16((void *)LATCH1_BASE, CONFIG_SYS_LATCH1_RESET);
+       int legacy = get_fpga_state(0) & FPGA_STATE_PLATFORM;
+
+       if (legacy) {
+               if (state) {
+                       out_le16((void *)LATCH0_BASE, CONFIG_SYS_LATCH0_RESET);
+                       out_le16((void *)LATCH1_BASE, CONFIG_SYS_LATCH1_RESET);
+               } else {
+                       out_le16((void *)LATCH0_BASE, CONFIG_SYS_LATCH0_BOOT);
+                       out_le16((void *)LATCH1_BASE, CONFIG_SYS_LATCH1_BOOT);
+               }
        } else {
-               out_le16((void *)LATCH0_BASE, CONFIG_SYS_LATCH0_BOOT);
-               out_le16((void *)LATCH1_BASE, CONFIG_SYS_LATCH1_BOOT);
+               pca9698_set_value(0x20, 4, state ? 0 : 1);
        }
 }
 
@@ -253,5 +499,333 @@ void gd405ep_setup_hw(void)
 
 int gd405ep_get_fpga_done(unsigned fpga)
 {
-       return in_le16((void *)LATCH2_BASE) & CONFIG_SYS_FPGA_DONE(fpga);
+       int legacy = get_fpga_state(0) & FPGA_STATE_PLATFORM;
+
+       if (legacy)
+               return in_le16((void *)LATCH2_BASE)
+                      & CONFIG_SYS_FPGA_DONE(fpga);
+       else
+               return pca9698_get_value(0x20, 20);
+}
+
+/*
+ * FPGA MII bitbang implementation
+ */
+
+struct fpga_mii {
+       unsigned fpga;
+       int mdio;
+} fpga_mii[] = {
+       { 0, 1},
+       { 1, 1},
+       { 2, 1},
+       { 3, 1},
+};
+
+static int mii_dummy_init(struct bb_miiphy_bus *bus)
+{
+       return 0;
+}
+
+static int mii_mdio_active(struct bb_miiphy_bus *bus)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       if (fpga_mii->mdio)
+               FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDIO);
+       else
+               FPGA_SET_REG(fpga_mii->fpga, gpio.clear, GPIO_MDIO);
+
+       return 0;
+}
+
+static int mii_mdio_tristate(struct bb_miiphy_bus *bus)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDIO);
+
+       return 0;
+}
+
+static int mii_set_mdio(struct bb_miiphy_bus *bus, int v)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       if (v)
+               FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDIO);
+       else
+               FPGA_SET_REG(fpga_mii->fpga, gpio.clear, GPIO_MDIO);
+
+       fpga_mii->mdio = v;
+
+       return 0;
+}
+
+static int mii_get_mdio(struct bb_miiphy_bus *bus, int *v)
+{
+       u16 gpio;
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       FPGA_GET_REG(fpga_mii->fpga, gpio.read, &gpio);
+
+       *v = ((gpio & GPIO_MDIO) != 0);
+
+       return 0;
+}
+
+static int mii_set_mdc(struct bb_miiphy_bus *bus, int v)
+{
+       struct fpga_mii *fpga_mii = bus->priv;
+
+       if (v)
+               FPGA_SET_REG(fpga_mii->fpga, gpio.set, GPIO_MDC);
+       else
+               FPGA_SET_REG(fpga_mii->fpga, gpio.clear, GPIO_MDC);
+
+       return 0;
+}
+
+static int mii_delay(struct bb_miiphy_bus *bus)
+{
+       udelay(1);
+
+       return 0;
+}
+
+struct bb_miiphy_bus bb_miiphy_buses[] = {
+       {
+               .name = "board0",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[0],
+       },
+       {
+               .name = "board1",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[1],
+       },
+       {
+               .name = "board2",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[2],
+       },
+       {
+               .name = "board3",
+               .init = mii_dummy_init,
+               .mdio_active = mii_mdio_active,
+               .mdio_tristate = mii_mdio_tristate,
+               .set_mdio = mii_set_mdio,
+               .get_mdio = mii_get_mdio,
+               .set_mdc = mii_set_mdc,
+               .delay = mii_delay,
+               .priv = &fpga_mii[3],
+       },
+};
+
+int bb_miiphy_buses_num = sizeof(bb_miiphy_buses) /
+                         sizeof(bb_miiphy_buses[0]);
+
+enum {
+       MIICMD_SET,
+       MIICMD_MODIFY,
+       MIICMD_VERIFY_VALUE,
+       MIICMD_WAIT_FOR_VALUE,
+};
+
+struct mii_setupcmd {
+       u8 token;
+       u8 reg;
+       u16 data;
+       u16 mask;
+       u32 timeout;
+};
+
+/*
+ * verify we are talking to a 88e1518
+ */
+struct mii_setupcmd verify_88e1518[] = {
+       { MIICMD_SET, 22, 0x0000 },
+       { MIICMD_VERIFY_VALUE, 2, 0x0141, 0xffff },
+       { MIICMD_VERIFY_VALUE, 3, 0x0dd0, 0xfff0 },
+};
+
+/*
+ * workaround for erratum mentioned in 88E1518 release notes
+ */
+struct mii_setupcmd fixup_88e1518[] = {
+       { MIICMD_SET, 22, 0x00ff },
+       { MIICMD_SET, 17, 0x214b },
+       { MIICMD_SET, 16, 0x2144 },
+       { MIICMD_SET, 17, 0x0c28 },
+       { MIICMD_SET, 16, 0x2146 },
+       { MIICMD_SET, 17, 0xb233 },
+       { MIICMD_SET, 16, 0x214d },
+       { MIICMD_SET, 17, 0xcc0c },
+       { MIICMD_SET, 16, 0x2159 },
+       { MIICMD_SET, 22, 0x00fb },
+       { MIICMD_SET,  7, 0xc00d },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+/*
+ * default initialization:
+ * - set RGMII receive timing to "receive clock transition when data stable"
+ * - set RGMII transmit timing to "transmit clock internally delayed"
+ * - set RGMII output impedance target to 78,8 Ohm
+ * - run output impedance calibration
+ * - set autonegotiation advertise to 1000FD only
+ */
+struct mii_setupcmd default_88e1518[] = {
+       { MIICMD_SET, 22, 0x0002 },
+       { MIICMD_MODIFY, 21, 0x0030, 0x0030 },
+       { MIICMD_MODIFY, 25, 0x0000, 0x0003 },
+       { MIICMD_MODIFY, 24, 0x8000, 0x8000 },
+       { MIICMD_WAIT_FOR_VALUE, 24, 0x4000, 0x4000, 2000 },
+       { MIICMD_SET, 22, 0x0000 },
+       { MIICMD_MODIFY, 4, 0x0000, 0x01e0 },
+       { MIICMD_MODIFY, 9, 0x0200, 0x0300 },
+};
+
+/*
+ * turn off CLK125 for PHY daughterboard
+ */
+struct mii_setupcmd ch1fix_88e1518[] = {
+       { MIICMD_SET, 22, 0x0002 },
+       { MIICMD_MODIFY, 16, 0x0006, 0x0006 },
+       { MIICMD_SET, 22, 0x0000 },
+};
+
+/*
+ * perform copper software reset
+ */
+struct mii_setupcmd swreset_88e1518[] = {
+       { MIICMD_SET, 22, 0x0000 },
+       { MIICMD_MODIFY, 0, 0x8000, 0x8000 },
+       { MIICMD_WAIT_FOR_VALUE, 0, 0x0000, 0x8000, 2000 },
+};
+
+static int process_setupcmd(const char *bus, unsigned char addr,
+                           struct mii_setupcmd *setupcmd)
+{
+       int res;
+       u8 reg = setupcmd->reg;
+       u16 data = setupcmd->data;
+       u16 mask = setupcmd->mask;
+       u32 timeout = setupcmd->timeout;
+       u16 orig_data;
+       unsigned long start;
+
+       debug("mii %s:%u reg %2u ", bus, addr, reg);
+
+       switch (setupcmd->token) {
+       case MIICMD_MODIFY:
+               res = miiphy_read(bus, addr, reg, &orig_data);
+               if (res)
+                       break;
+               debug("is %04x. (value %04x mask %04x) ", orig_data, data,
+                     mask);
+               data = (orig_data & ~mask) | (data & mask);
+       case MIICMD_SET:
+               debug("=> %04x\n", data);
+               res = miiphy_write(bus, addr, reg, data);
+               break;
+       case MIICMD_VERIFY_VALUE:
+               res = miiphy_read(bus, addr, reg, &orig_data);
+               if (res)
+                       break;
+               if ((orig_data & mask) != (data & mask))
+                       res = -1;
+               debug("(value %04x mask %04x) == %04x? %s\n", data, mask,
+                     orig_data, res ? "FAIL" : "PASS");
+               break;
+       case MIICMD_WAIT_FOR_VALUE:
+               res = -1;
+               start = get_timer(0);
+               while ((res != 0) && (get_timer(start) < timeout)) {
+                       res = miiphy_read(bus, addr, reg, &orig_data);
+                       if (res)
+                               continue;
+                       if ((orig_data & mask) != (data & mask))
+                               res = -1;
+               }
+               debug("(value %04x mask %04x) == %04x? %s after %lu ms\n", data,
+                     mask, orig_data, res ? "FAIL" : "PASS",
+                     get_timer(start));
+               break;
+       default:
+               res = -1;
+               break;
+       }
+
+       return res;
+}
+
+static int process_setup(const char *bus, unsigned char addr,
+                           struct mii_setupcmd *setupcmd, unsigned int count)
+{
+       int res = 0;
+       unsigned int k;
+
+       for (k = 0; k < count; ++k) {
+               res = process_setupcmd(bus, addr, &setupcmd[k]);
+               if (res) {
+                       printf("mii cmd %u on bus %s addr %u failed, aborting setup",
+                              setupcmd[k].token, bus, addr);
+                       break;
+               }
+       }
+
+       return res;
+}
+
+static int setup_88e1518(const char *bus, unsigned char addr)
+{
+       int res;
+
+       res = process_setup(bus, addr,
+                           verify_88e1518, ARRAY_SIZE(verify_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           fixup_88e1518, ARRAY_SIZE(fixup_88e1518));
+       if (res)
+               return res;
+
+       res = process_setup(bus, addr,
+                           default_88e1518, ARRAY_SIZE(default_88e1518));
+       if (res)
+               return res;
+
+       if (addr) {
+               res = process_setup(bus, addr,
+                                   ch1fix_88e1518, ARRAY_SIZE(ch1fix_88e1518));
+               if (res)
+                       return res;
+       }
+
+       res = process_setup(bus, addr,
+                           swreset_88e1518, ARRAY_SIZE(swreset_88e1518));
+       if (res)
+               return res;
+
+       return 0;
 }
index bca78032f8158114b3bd2888dc9acac7a9a8cfc6..ff0edb2547967944523599d103ea2f8eb1b5250a 100644 (file)
@@ -28,6 +28,8 @@ enum {
        HWVER_300 = 3,
 };
 
+struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
+
 int misc_init_r(void)
 {
        /* startup fans */
@@ -54,10 +56,9 @@ int checkboard(void)
 
 static void print_fpga_info(void)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(0);
-       u16 versions = in_le16(&fpga->versions);
-       u16 fpga_version = in_le16(&fpga->fpga_version);
-       u16 fpga_features = in_le16(&fpga->fpga_features);
+       u16 versions;
+       u16 fpga_version;
+       u16 fpga_features;
        int fpga_state = get_fpga_state(0);
        unsigned unit_type;
        unsigned hardware_version;
@@ -74,6 +75,10 @@ static void print_fpga_info(void)
                return;
        }
 
+       FPGA_GET_REG(0, versions, &versions);
+       FPGA_GET_REG(0, fpga_version, &fpga_version);
+       FPGA_GET_REG(0, fpga_features, &fpga_features);
+
        unit_type = (versions & 0xf000) >> 12;
        hardware_version = versions & 0x000f;
        feature_channels = fpga_features & 0x007f;
index 32e24c08cb9ce8340f589ab21d1772ef61bea087..c1a583ffbe09fcbb80e0af44401b4e9931814e80 100644 (file)
 #define REFLECTION_TESTPATTERN 0xdede
 #define REFLECTION_TESTPATTERN_INV (~REFLECTION_TESTPATTERN & 0xffff)
 
+#ifdef CONFIG_SYS_FPGA_NO_RFL_HI
+#define REFLECTION_TESTREG reflection_low
+#else
+#define REFLECTION_TESTREG reflection_high
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 
 int get_fpga_state(unsigned dev)
@@ -220,23 +226,17 @@ int board_early_init_r(void)
        gd405ex_set_fpga_reset(0);
 
        for (k = 0; k < CONFIG_SYS_FPGA_COUNT; ++k) {
-               struct ihs_fpga *fpga =
-                       (struct ihs_fpga *)CONFIG_SYS_FPGA_BASE(k);
-#ifdef CONFIG_SYS_FPGA_NO_RFL_HI
-               u16 *reflection_target = &fpga->reflection_low;
-#else
-               u16 *reflection_target = &fpga->reflection_high;
-#endif
                /*
                 * wait for fpga out of reset
                 */
                ctr = 0;
                while (1) {
-                       out_le16(&fpga->reflection_low,
-                               REFLECTION_TESTPATTERN);
+                       u16 val;
+
+                       FPGA_SET_REG(k, reflection_low, REFLECTION_TESTPATTERN);
 
-                       if (in_le16(reflection_target) ==
-                               REFLECTION_TESTPATTERN_INV)
+                       FPGA_GET_REG(k, REFLECTION_TESTREG, &val);
+                       if (val == REFLECTION_TESTPATTERN_INV)
                                break;
 
                        udelay(100000);
index fa8961a35177a78cd9de65b4596166a5554862bd..2f8e306261815acd00e51137c31d2034acf34b4b 100644 (file)
@@ -51,6 +51,8 @@ enum {
        HWVER_110 = 1,
 };
 
+struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
+
 static inline void blank_string(int size)
 {
        int i;
@@ -84,10 +86,9 @@ int misc_init_r(void)
 
 static void print_fpga_info(unsigned dev)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(dev);
-       u16 versions = in_le16(&fpga->versions);
-       u16 fpga_version = in_le16(&fpga->fpga_version);
-       u16 fpga_features = in_le16(&fpga->fpga_features);
+       u16 versions;
+       u16 fpga_version;
+       u16 fpga_features;
        int fpga_state = get_fpga_state(dev);
 
        unsigned unit_type;
@@ -95,6 +96,10 @@ static void print_fpga_info(unsigned dev)
        unsigned feature_channels;
        unsigned feature_expansion;
 
+       FPGA_GET_REG(dev, versions, &versions);
+       FPGA_GET_REG(dev, fpga_version, &fpga_version);
+       FPGA_GET_REG(dev, fpga_features, &fpga_features);
+
        printf("FPGA%d: ", dev);
        if (fpga_state & FPGA_STATE_PLATFORM)
                printf("(legacy) ");
@@ -226,8 +231,6 @@ int last_stage_init(void)
 {
        unsigned int k;
        unsigned int fpga;
-       struct ihs_fpga *fpga0 = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(0);
-       struct ihs_fpga *fpga1 = (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(1);
        int failed = 0;
        char str_phys[] = "Setup PHYs -";
        char str_serdes[] = "Start SERDES blocks";
@@ -265,17 +268,16 @@ int last_stage_init(void)
        /* take fpga serdes blocks out of reset */
        puts(str_serdes);
        udelay(500000);
-       out_le16(&fpga0->quad_serdes_reset, 0);
-       out_le16(&fpga1->quad_serdes_reset, 0);
+       FPGA_SET_REG(0, quad_serdes_reset, 0);
+       FPGA_SET_REG(1, quad_serdes_reset, 0);
        blank_string(strlen(str_serdes));
 
        /* take channels out of reset */
        puts(str_channels);
        udelay(500000);
        for (fpga = 0; fpga < 2; ++fpga) {
-               u16 *ch0_config_int = &(fpga ? fpga1 : fpga0)->ch0_config_int;
                for (k = 0; k < 32; ++k)
-                       out_le16(ch0_config_int + 4 * k, 0);
+                       FPGA_SET_REG(fpga, ch[k].config_int, 0);
        }
        blank_string(strlen(str_channels));
 
@@ -283,16 +285,16 @@ int last_stage_init(void)
        puts(str_locks);
        udelay(500000);
        for (fpga = 0; fpga < 2; ++fpga) {
-               u16 *ch0_status_int = &(fpga ? fpga1 : fpga0)->ch0_status_int;
                for (k = 0; k < 32; ++k) {
-                       u16 status = in_le16(ch0_status_int + 4*k);
+                       u16 status;
+                       FPGA_GET_REG(k, ch[k].status_int, &status);
                        if (!(status & (1 << 4))) {
                                failed = 1;
                                printf("fpga %d channel %d: no serdes lock\n",
                                        fpga, k);
                        }
                        /* reset events */
-                       out_le16(ch0_status_int + 4*k, status);
+                       FPGA_SET_REG(fpga, ch[k].status_int, 0);
                }
        }
        blank_string(strlen(str_locks));
@@ -300,14 +302,14 @@ int last_stage_init(void)
        /* verify hicb_status */
        puts(str_hicb);
        for (fpga = 0; fpga < 2; ++fpga) {
-               u16 *ch0_hicb_status_int = &(fpga ? fpga1 : fpga0)->ch0_hicb_status_int;
                for (k = 0; k < 32; ++k) {
-                       u16 status = in_le16(ch0_hicb_status_int + 4*k);
+                       u16 status;
+                       FPGA_GET_REG(k, hicb_ch[k].status_int, &status);
                        if (status)
                                printf("fpga %d hicb %d: hicb status %04x\n",
                                        fpga, k, status);
                        /* reset events */
-                       out_le16(ch0_hicb_status_int + 4*k, status);
+                       FPGA_SET_REG(fpga, hicb_ch[k].status_int, 0);
                }
        }
        blank_string(strlen(str_hicb));
index 43e6a4cdefbd99981fcb420f627a4016313bb841..216ad964af1e3794e5c684ea3ed0febf07bfab8a 100644 (file)
@@ -13,9 +13,11 @@ endif
 
 LIB    = $(obj)lib$(VENDOR).o
 
+COBJS-$(CONFIG_SYS_FPGA_COMMON) += fpga.o
+
 COBJS-$(CONFIG_IO) += miiphybb.o
 COBJS-$(CONFIG_IO64) += miiphybb.o
-COBJS-$(CONFIG_IOCON) += osd.o
+COBJS-$(CONFIG_IOCON) += osd.o mclink.o
 COBJS-$(CONFIG_DLVISION_10G) += osd.o
 COBJS-$(CONFIG_CONTROLCENTERD) += dp501.o
 
index 9aa4e3f4bdc8e4ac0e9465d5565234dc7281c4fd..52f3ea167f1b1f4afd582be8ec356ee9f65f583c 100644 (file)
@@ -2,23 +2,7 @@
  * (C) Copyright 2012
  * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
  *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /* Parade Technologies Inc. DP501 DisplayPort DVI/HDMI Transmitter */
diff --git a/board/gdsys/common/fpga.c b/board/gdsys/common/fpga.c
new file mode 100644 (file)
index 0000000..e10c105
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * (C) Copyright 2013
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <gdsys_fpga.h>
+
+#include <asm/io.h>
+
+int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data)
+{
+       out_le16(reg, data);
+
+       return 0;
+}
+
+int fpga_get_reg(u32 fpga, u16 *reg, off_t regoff, u16 *data)
+{
+       *data = in_le16(reg);
+
+       return 0;
+}
diff --git a/board/gdsys/common/mclink.c b/board/gdsys/common/mclink.c
new file mode 100644 (file)
index 0000000..9f230c9
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * (C) Copyright 2012
+ * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <errno.h>
+
+#include <gdsys_fpga.h>
+
+enum {
+       MCINT_SLAVE_LINK_CHANGED_EV = 1 << 7,
+       MCINT_TX_ERROR_EV = 1 << 9,
+       MCINT_TX_BUFFER_FREE = 1 << 10,
+       MCINT_TX_PACKET_TRANSMITTED_EV = 1 << 11,
+       MCINT_RX_ERROR_EV = 1 << 13,
+       MCINT_RX_CONTENT_AVAILABLE = 1 << 14,
+       MCINT_RX_PACKET_RECEIVED_EV = 1 << 15,
+};
+
+int mclink_probe(void)
+{
+       unsigned int k;
+       int slaves = 0;
+
+       for (k = 0; k < CONFIG_SYS_MCLINK_MAX; ++k) {
+               int timeout = 0;
+               unsigned int ctr = 0;
+               u16 mc_status;
+
+               FPGA_GET_REG(k, mc_status, &mc_status);
+
+               if (!(mc_status & (1 << 15)))
+                       break;
+
+               FPGA_SET_REG(k, mc_control, 0x8000);
+
+               FPGA_GET_REG(k, mc_status, &mc_status);
+               while (!(mc_status & (1 << 14))) {
+                       udelay(100);
+                       if (ctr++ > 500) {
+                               timeout = 1;
+                               break;
+                       }
+                       FPGA_GET_REG(k, mc_status, &mc_status);
+               }
+               if (timeout)
+                       break;
+
+               printf("waited %d us for mclink %d to come up\n", ctr * 100, k);
+
+               slaves++;
+       }
+
+       return slaves;
+}
+
+int mclink_send(u8 slave, u16 addr, u16 data)
+{
+       unsigned int ctr = 0;
+       u16 int_status;
+       u16 rx_cmd_status;
+       u16 rx_cmd;
+
+       /* reset interrupt status */
+       FPGA_GET_REG(0, mc_int, &int_status);
+       FPGA_SET_REG(0, mc_int, int_status);
+
+       /* send */
+       FPGA_SET_REG(0, mc_tx_address, addr);
+       FPGA_SET_REG(0, mc_tx_data, data);
+       FPGA_SET_REG(0, mc_tx_cmd, (slave & 0x03) << 14);
+       FPGA_SET_REG(0, mc_control, 0x8001);
+
+       /* wait for reply */
+       FPGA_GET_REG(0, mc_int, &int_status);
+       while (!(int_status & MCINT_RX_PACKET_RECEIVED_EV)) {
+               udelay(100);
+               if (ctr++ > 3)
+                       return -ETIMEDOUT;
+               FPGA_GET_REG(0, mc_int, &int_status);
+       }
+
+       FPGA_GET_REG(0, mc_rx_cmd_status, &rx_cmd_status);
+       rx_cmd = (rx_cmd_status >> 12) & 0x03;
+       if (rx_cmd != 0)
+               printf("mclink_send: received cmd %d, expected %d\n", rx_cmd,
+                      0);
+
+       return 0;
+}
+
+int mclink_receive(u8 slave, u16 addr, u16 *data)
+{
+       u16 rx_cmd_status;
+       u16 rx_cmd;
+       u16 int_status;
+       unsigned int ctr = 0;
+
+       /* send read request */
+       FPGA_SET_REG(0, mc_tx_address, addr);
+       FPGA_SET_REG(0, mc_tx_cmd,
+                    ((slave & 0x03) << 14) | (1 << 12) | (1 << 0));
+       FPGA_SET_REG(0, mc_control, 0x8001);
+
+
+       /* wait for reply */
+       FPGA_GET_REG(0, mc_int, &int_status);
+       while (!(int_status & MCINT_RX_CONTENT_AVAILABLE)) {
+               udelay(100);
+               if (ctr++ > 3)
+                       return -ETIMEDOUT;
+               FPGA_GET_REG(0, mc_int, &int_status);
+       }
+
+       /* check reply */
+       FPGA_GET_REG(0, mc_rx_cmd_status, &rx_cmd_status);
+       if ((rx_cmd_status >> 14) != slave) {
+               printf("mclink_receive: reply from slave %d, expected %d\n",
+                      rx_cmd_status >> 14, slave);
+               return -EINVAL;
+       }
+
+       rx_cmd = (rx_cmd_status >> 12) & 0x03;
+       if (rx_cmd != 1) {
+               printf("mclink_send: received cmd %d, expected %d\n",
+                      rx_cmd, 1);
+               return -EIO;
+       }
+
+       FPGA_GET_REG(0, mc_rx_data, data);
+
+       return 0;
+}
diff --git a/board/gdsys/common/mclink.h b/board/gdsys/common/mclink.h
new file mode 100644 (file)
index 0000000..febd46a
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * (C) Copyright 2012
+ * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _MCLINK_H_
+#define _MCLINK_H_
+
+int mclink_probe(void);
+int mclink_send(u8 slave, u16 addr, u16 data);
+int mclink_receive(u8 slave, u16 addr, u16 *data);
+
+#endif
index 45cea5eaaf350153866008cab1bf9b3addd372e4..c49cd9a619e152da94a354ae94afafe7e1298855 100644 (file)
@@ -7,7 +7,7 @@
 
 #include <common.h>
 #include <i2c.h>
-#include <asm/io.h>
+#include <malloc.h>
 
 #include <gdsys_fpga.h>
 
 
 #define PIXCLK_640_480_60 25180000
 
-#define BASE_WIDTH 32
-#define BASE_HEIGHT 16
-#define BUFSIZE (BASE_WIDTH * BASE_HEIGHT)
-
 enum {
        CH7301_CM = 0x1c,               /* Clock Mode Register */
        CH7301_IC = 0x1d,               /* Input Clock Register */
@@ -51,37 +47,55 @@ enum {
        CH7301_DSP = 0x56,              /* DVI Sync polarity Register */
 };
 
+unsigned int base_width;
+unsigned int base_height;
+size_t bufsize;
+u16 *buf;
+
+unsigned int max_osd_screen = CONFIG_SYS_OSD_SCREENS - 1;
+
+#ifdef CONFIG_SYS_CH7301
+int ch7301_i2c[] = CONFIG_SYS_CH7301_I2C;
+#endif
+
 #if defined(CONFIG_SYS_ICS8N3QV01) || defined(CONFIG_SYS_SIL1178)
 static void fpga_iic_write(unsigned screen, u8 slave, u8 reg, u8 data)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *)CONFIG_SYS_FPGA_BASE(screen);
-       struct ihs_i2c *i2c = &fpga->i2c;
+       u16 val;
 
-       while (in_le16(&fpga->extended_interrupt) & (1 << 12))
-               ;
-       out_le16(&i2c->write_mailbox_ext, reg | (data << 8));
-       out_le16(&i2c->write_mailbox, 0xc400 | (slave << 1));
+       do {
+               FPGA_GET_REG(screen, extended_interrupt, &val);
+       } while (val & (1 << 12));
+
+       FPGA_SET_REG(screen, i2c.write_mailbox_ext, reg | (data << 8));
+       FPGA_SET_REG(screen, i2c.write_mailbox, 0xc400 | (slave << 1));
 }
 
 static u8 fpga_iic_read(unsigned screen, u8 slave, u8 reg)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *)CONFIG_SYS_FPGA_BASE(screen);
-       struct ihs_i2c *i2c = &fpga->i2c;
        unsigned int ctr = 0;
+       u16 val;
+
+       do {
+               FPGA_GET_REG(screen, extended_interrupt, &val);
+       } while (val & (1 << 12));
 
-       while (in_le16(&fpga->extended_interrupt) & (1 << 12))
-               ;
-       out_le16(&fpga->extended_interrupt, 1 << 14);
-       out_le16(&i2c->write_mailbox_ext, reg);
-       out_le16(&i2c->write_mailbox, 0xc000 | (slave << 1));
-       while (!(in_le16(&fpga->extended_interrupt) & (1 << 14))) {
+       FPGA_SET_REG(screen, extended_interrupt, 1 << 14);
+       FPGA_SET_REG(screen, i2c.write_mailbox_ext, reg);
+       FPGA_SET_REG(screen, i2c.write_mailbox, 0xc000 | (slave << 1));
+
+       FPGA_GET_REG(screen, extended_interrupt, &val);
+       while (!(val & (1 << 14))) {
                udelay(100000);
                if (ctr++ > 5) {
                        printf("iic receive timeout\n");
                        break;
                }
+               FPGA_GET_REG(screen, extended_interrupt, &val);
        }
-       return in_le16(&i2c->read_mailbox_ext) >> 8;
+
+       FPGA_GET_REG(screen, i2c.read_mailbox_ext, &val);
+       return val >> 8;
 }
 #endif
 
@@ -113,7 +127,6 @@ static void mpc92469ac_calc_parameters(unsigned int fout,
 
 static void mpc92469ac_set(unsigned screen, unsigned int fout)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *)CONFIG_SYS_FPGA_BASE(screen);
        unsigned int n;
        unsigned int m;
        unsigned int bitval = 0;
@@ -134,7 +147,7 @@ static void mpc92469ac_set(unsigned screen, unsigned int fout)
                break;
        }
 
-       out_le16(&fpga->mpc3w_control, (bitval << 9) | m);
+       FPGA_SET_REG(screen, mpc3w_control, (bitval << 9) | m);
 }
 #endif
 
@@ -249,14 +262,12 @@ static void ics8n3qv01_set(unsigned screen, unsigned int fout)
 static int osd_write_videomem(unsigned screen, unsigned offset,
        u16 *data, size_t charcount)
 {
-       struct ihs_fpga *fpga =
-               (struct ihs_fpga *) CONFIG_SYS_FPGA_BASE(screen);
        unsigned int k;
 
        for (k = 0; k < charcount; ++k) {
-               if (offset + k >= BUFSIZE)
+               if (offset + k >= bufsize)
                        return -1;
-               out_le16(&fpga->videomem + offset + k, data[k]);
+               FPGA_SET_REG(screen, videomem[offset + k], data[k]);
        }
 
        return charcount;
@@ -266,14 +277,13 @@ static int osd_print(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        unsigned screen;
 
-       for (screen = 0; screen < CONFIG_SYS_OSD_SCREENS; ++screen) {
+       for (screen = 0; screen <= max_osd_screen; ++screen) {
                unsigned x;
                unsigned y;
                unsigned charcount;
                unsigned len;
                u8 color;
                unsigned int k;
-               u16 buf[BUFSIZE];
                char *text;
                int res;
 
@@ -287,12 +297,12 @@ static int osd_print(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                color = simple_strtoul(argv[3], NULL, 16);
                text = argv[4];
                charcount = strlen(text);
-               len = (charcount > BUFSIZE) ? BUFSIZE : charcount;
+               len = (charcount > bufsize) ? bufsize : charcount;
 
                for (k = 0; k < len; ++k)
                        buf[k] = (text[k] << 8) | color;
 
-               res = osd_write_videomem(screen, y * BASE_WIDTH + x, buf, len);
+               res = osd_write_videomem(screen, y * base_width + x, buf, len);
                if (res < 0)
                        return res;
        }
@@ -302,24 +312,32 @@ static int osd_print(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 int osd_probe(unsigned screen)
 {
-       struct ihs_fpga *fpga = (struct ihs_fpga *)CONFIG_SYS_FPGA_BASE(screen);
-       struct ihs_osd *osd = &fpga->osd;
-       u16 version = in_le16(&osd->version);
-       u16 features = in_le16(&osd->features);
-       unsigned width;
-       unsigned height;
+       u16 version;
+       u16 features;
        u8 value;
+#ifdef CONFIG_SYS_CH7301
+       int old_bus = i2c_get_bus_num();
+#endif
 
-       width = ((features & 0x3f00) >> 8) + 1;
-       height = (features & 0x001f) + 1;
+       FPGA_GET_REG(0, osd.version, &version);
+       FPGA_GET_REG(0, osd.features, &features);
+
+       base_width = ((features & 0x3f00) >> 8) + 1;
+       base_height = (features & 0x001f) + 1;
+       bufsize = base_width * base_height;
+       buf = malloc(sizeof(u16) * bufsize);
+       if (!buf)
+               return -1;
 
        printf("OSD%d:  Digital-OSD version %01d.%02d, %d" "x%d characters\n",
-               screen, version/100, version%100, width, height);
+               screen, version/100, version%100, base_width, base_height);
 
 #ifdef CONFIG_SYS_CH7301
+       i2c_set_bus_num(ch7301_i2c[screen]);
        value = i2c_reg_read(CH7301_I2C_ADDR, CH7301_DID);
        if (value != 0x17) {
                printf("       Probing CH7301 failed, DID %02x\n", value);
+               i2c_set_bus_num(old_bus);
                return -1;
        }
        i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPCP, 0x08);
@@ -327,6 +345,7 @@ int osd_probe(unsigned screen)
        i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPF, 0x60);
        i2c_reg_write(CH7301_I2C_ADDR, CH7301_DC, 0x09);
        i2c_reg_write(CH7301_I2C_ADDR, CH7301_PM, 0xc0);
+       i2c_set_bus_num(old_bus);
 #endif
 
 #ifdef CONFIG_SYS_MPC92469AC
@@ -356,12 +375,15 @@ int osd_probe(unsigned screen)
        fpga_iic_write(screen, SIL1178_MASTER_I2C_ADDRESS, 0x08, 0x37);
 #endif
 
-       out_le16(&fpga->videocontrol, 0x0002);
-       out_le16(&osd->control, 0x0049);
+       FPGA_SET_REG(screen, videocontrol, 0x0002);
+       FPGA_SET_REG(screen, osd.control, 0x0049);
+
+       FPGA_SET_REG(screen, osd.xy_size, ((32 - 1) << 8) | (16 - 1));
+       FPGA_SET_REG(screen, osd.x_pos, 0x007f);
+       FPGA_SET_REG(screen, osd.y_pos, 0x005f);
 
-       out_le16(&osd->xy_size, ((32 - 1) << 8) | (16 - 1));
-       out_le16(&osd->x_pos, 0x007f);
-       out_le16(&osd->y_pos, 0x005f);
+       if (screen > max_osd_screen)
+               max_osd_screen = screen;
 
        return 0;
 }
@@ -370,11 +392,11 @@ int osd_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        unsigned screen;
 
-       for (screen = 0; screen < CONFIG_SYS_OSD_SCREENS; ++screen) {
+       for (screen = 0; screen <= max_osd_screen; ++screen) {
                unsigned x;
                unsigned y;
                unsigned k;
-               u16 buffer[BASE_WIDTH];
+               u16 buffer[base_width];
                char *rp;
                u16 *wp = buffer;
                unsigned count = (argc > 4) ?
@@ -399,13 +421,13 @@ int osd_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
                        rp += 4;
                        wp++;
-                       if (wp - buffer > BASE_WIDTH)
+                       if (wp - buffer > base_width)
                                break;
                }
 
                for (k = 0; k < count; ++k) {
                        unsigned offset =
-                               y * BASE_WIDTH + x + k * (wp - buffer);
+                               y * base_width + x + k * (wp - buffer);
                        osd_write_videomem(screen, offset, buffer,
                                wp - buffer);
                }
index bccc7e09927cd945b8bcd0053b08a528904644c6..7b918b558d0fa565f6645487b262ff86398794db 100644 (file)
@@ -1,28 +1,6 @@
-/*------------------------------------------------------------------------+ */
-/* */
-/*       This source code is dual-licensed.  You may use it under the terms */
-/*       of the GNU General Public License version 2, or under the license  */
-/*       below.                                                             */
-/*                                                                          */
-/*       This source code has been made available to you by IBM on an AS-IS */
-/*       basis.  Anyone receiving this source is licensed under IBM */
-/*       copyrights to use it in any way he or she deems fit, including */
-/*       copying it, modifying it, compiling it, and redistributing it either */
-/*       with or without modifications.  No license under IBM patents or */
-/*       patent applications is to be implied by the copyright license. */
-/* */
-/*       Any user of this software should understand that IBM cannot provide */
-/*       technical support for this software and will not be responsible for */
-/*       any consequences resulting from the use of this software. */
-/* */
-/*       Any person who transfers this source code or any derivative work */
-/*       must include the IBM copyright notice, this paragraph, and the */
-/*       preceding two paragraphs in the transferred software. */
-/* */
-/*       COPYRIGHT   I B M   CORPORATION 1995 */
-/*       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M */
-/*------------------------------------------------------------------------- */
-
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*------------------------------------------------------------------------- */
 /* Function:     ext_bus_cntlr_init */
 /* Description:  Initializes the External Bus Controller for the external */
index f9bb6ab2bc63238b7989e026b1a08139d80abae4..6ab263a4d9d4e9532247a360178a3fa2473725e1 100644 (file)
@@ -1,25 +1,6 @@
-/*-----------------------------------------------------------------------------+
-|       This source code is dual-licensed.  You may use it under the terms of
-|       the GNU General Public License version 2, or under the license below.
-|
-|       This source code has been made available to you by IBM on an AS-IS
-|       basis.  Anyone receiving this source is licensed under IBM
-|       copyrights to use it in any way he or she deems fit, including
-|       copying it, modifying it, compiling it, and redistributing it either
-|       with or without modifications.  No license under IBM patents or
-|       patent applications is to be implied by the copyright license.
-|
-|       Any user of this software should understand that IBM cannot provide
-|       technical support for this software and will not be responsible for
-|       any consequences resulting from the use of this software.
-|
-|       Any person who transfers this source code or any derivative work
-|       must include the IBM copyright notice, this paragraph, and the
-|       preceding two paragraphs in the transferred software.
-|
-|       COPYRIGHT   I B M   CORPORATION 1995
-|       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-+-----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*
  * Adapted for PIP405 03.07.01
  * Denis Peter, MPL AG Switzerland, d.peter@mpl.ch
index 39a1d6829acd70898bad33eb2ea06b25333e3f11..bf886c05c0b9419c4799225585c6f748c2d76af7 100644 (file)
@@ -1,26 +1,6 @@
-/*------------------------------------------------------------------------------+
- *      This source code is dual-licensed.  You may use it under the terms of
- *      the GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *-------------------------------------------------------------------------------*/
-
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*-----------------------------------------------------------------------------
  * Function:     ext_bus_cntlr_init
  * Description:  Initializes the External Bus Controller for the external
index b77517fd5a80b2c4adc3a5ac8a5f2588be36c695..9ed27990a1acaf0fad4ffc36c3534f8a974722bc 100644 (file)
@@ -1,26 +1,6 @@
-/*------------------------------------------------------------------------------+
- *      This source code is dual-licensed.  You may use it under the terms of
- *      the GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *-------------------------------------------------------------------------------*/
-
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*-----------------------------------------------------------------------------
  * Function:     ext_bus_cntlr_init
  * Description:  Initializes the External Bus Controller for the external
index 4fce987540d150f0fa9b56f181deb6a6c89a5194..084858defa39e1da3cbdc853397fa77688edfae7 100644 (file)
 /* Handle multiple I2C buses instances */
 int get_multi_scl_pin(void)
 {
-       unsigned int bus = I2C_GET_BUS();
+       unsigned int bus = i2c_get_bus_num();
 
        switch (bus) {
-       case I2C_0: /* I2C_0 definition - compatibility layer */
-       case I2C_5:
+       case I2C_0:
                return CONFIG_SOFT_I2C_I2C5_SCL;
-       case I2C_9:
+       case I2C_1:
                return CONFIG_SOFT_I2C_I2C9_SCL;
        default:
                printf("I2C_%d not supported!\n", bus);
@@ -28,13 +27,12 @@ int get_multi_scl_pin(void)
 
 int get_multi_sda_pin(void)
 {
-       unsigned int bus = I2C_GET_BUS();
+       unsigned int bus = i2c_get_bus_num();
 
        switch (bus) {
-       case I2C_0: /* I2C_0 definition - compatibility layer */
-       case I2C_5:
+       case I2C_0:
                return CONFIG_SOFT_I2C_I2C5_SDA;
-       case I2C_9:
+       case I2C_1:
                return CONFIG_SOFT_I2C_I2C9_SDA;
        default:
                printf("I2C_%d not supported!\n", bus);
index 80ffe3047ab88a3666dfc394d552db6b8e678023..1e94c7f82c5010a5efbb4985fdc0dc223db9ca91 100644 (file)
@@ -10,7 +10,7 @@
 */
 
 /dts-v1/;
-/include/ ARCH_CPU_DTS
+/include/ "exynos5250.dtsi"
 
 / {
        model = "SAMSUNG SMDK5250 board based on EXYNOS5250";
index dca3386cf2835c869b45d0fedb0b7a9c26952411..7832e4edda0b756e224ab223e43652dadc48eafe 100644 (file)
@@ -10,7 +10,7 @@
 */
 
 /dts-v1/;
-/include/ ARCH_CPU_DTS
+/include/ "exynos5250.dtsi"
 
 / {
        model = "Google Snow";
index c05801d3fe92255fa6c45414d525f2b7024bc7eb..5b3d6ef853bfa11a5cb3a6d7ccb6013f595188d3 100644 (file)
@@ -32,7 +32,11 @@ int power_init_board(void)
 {
        int ret;
 
-       ret = pmic_init(I2C_5);
+       /*
+        * For PMIC the I2C bus is named as I2C5, but it is connected
+        * to logical I2C adapter 0
+        */
+       ret = pmic_init(I2C_0);
        if (ret)
                return ret;
 
index c8698f30df8ca3992d18133dd7f60fb581146829..7f61d17abb282a749c3c36caa4a9b964d8bb72c9 100644 (file)
@@ -61,10 +61,10 @@ void i2c_init_board(void)
        struct exynos4_gpio_part2 *gpio2 =
                (struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
 
-       /* I2C_5 -> PMIC */
+       /* I2C_5 -> PMIC -> Adapter 0 */
        s5p_gpio_direction_output(&gpio1->b, 7, 1);
        s5p_gpio_direction_output(&gpio1->b, 6, 1);
-       /* I2C_9 -> FG */
+       /* I2C_9 -> FG -> Adapter 1 */
        s5p_gpio_direction_output(&gpio2->y4, 0, 1);
        s5p_gpio_direction_output(&gpio2->y4, 1, 1);
 }
@@ -282,10 +282,17 @@ int power_init_board(void)
        struct power_battery *pb;
        struct pmic *p_fg, *p_chrg, *p_muic, *p_bat;
 
-       ret = pmic_init(I2C_5);
+       /*
+        * For PMIC/MUIC the I2C bus is named as I2C5, but it is connected
+        * to logical I2C adapter 0
+        *
+        * The FUEL_GAUGE is marked as I2C9 on the schematic, but connected
+        * to logical I2C adapter 1
+        */
+       ret = pmic_init(I2C_0);
        ret |= pmic_init_max8997();
-       ret |= power_fg_init(I2C_9);
-       ret |= power_muic_init(I2C_5);
+       ret |= power_fg_init(I2C_1);
+       ret |= power_muic_init(I2C_0);
        ret |= power_bat_init(0);
        if (ret)
                return ret;
index 2e1dba6a48d6eba0e311cd9da5d8857e9806430d..54d0e1e0e3b22721795ae77d6403a415dfca2bae 100644 (file)
@@ -45,6 +45,10 @@ int power_init_board(void)
 {
        int ret;
 
+       /*
+        * For PMIC the I2C bus is named as I2C5, but it is connected
+        * to logical I2C adapter 0
+        */
        ret = pmic_init(I2C_5);
        if (ret)
                return ret;
index dee8710316023523d7b8055fc492d1df66f23ad7..837851838d6b93dae8f882f490ce17bff8d758ed 100644 (file)
@@ -65,8 +65,8 @@ local_bus_init(void)
 
        get_sys_info(&sysinfo);
 
-       lbc_mhz = sysinfo.freqLocalBus / 1000000;
-       clkdiv = sysinfo.freqSystemBus / sysinfo.freqLocalBus;
+       lbc_mhz = sysinfo.freq_localbus / 1000000;
+       clkdiv = sysinfo.freq_systembus / sysinfo.freq_localbus;
 
        debug("LCRR=0x%x, CD=%d, MHz=%d\n", lcrr, clkdiv, lbc_mhz);
 
index 635236835a5787b4d38e95aa43f44e2cf420114f..9921f8fc4f12ba1e17c5260894517f7303af823a 100644 (file)
@@ -1,31 +1,6 @@
-/*------------------------------------------------------------------------------+
- *
- *      This souce code has been made available to you by EuroDesign
- *      (www.eurodsn.de). It's based on the original IBM source code, so
- *      this follows:
- *
- *   This source code is dual-licensed.  You may use it under the terms of the
- *   GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *------------------------------------------------------------------------------- */
-
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 #include <config.h>
 #include <asm/ppc4xx.h>
 
index 77498b6e1df77ec2941bded43d5da3c833f1a827..5596d27133087108e426e8f688fda9232ab671d9 100644 (file)
@@ -2,28 +2,7 @@
  * Copyright (C) 2002 ETC s.r.o.
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the ETC s.r.o. nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  *
  * Written by Marcel Telka <marcel@telka.sk>, 2002.
  *
index 97fd0e4bd10ca7d68919251b4655906242312acf..2caefbbe5844a217b4380160b00044c60b609826 100644 (file)
@@ -143,7 +143,7 @@ void local_bus_init (void)
 
        get_sys_info (&sysinfo);
        clkdiv = lbc->lcrr & LCRR_CLKDIV;
-       lbc_mhz = sysinfo.freqSystemBus / 1000000 / clkdiv;
+       lbc_mhz = sysinfo.freq_systembus / 1000000 / clkdiv;
 
        /* Disable PLL bypass for Local Bus Clock >= 66 MHz */
        if (lbc_mhz >= 66)
index 2c00648470fe5728d3ef1b24aca6e7f457df3dd4..47063309e5698020864e641d4bf1b6eeb071e4b3 100644 (file)
 
 #include "mux_data.h"
 
+#ifdef CONFIG_USB_EHCI
+#include <usb.h>
+#include <asm/gpio.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/ehci.h>
+#include <asm/ehci-omap.h>
+
+#define DIE_ID_REG_BASE     (OMAP54XX_L4_CORE_BASE + 0x2000)
+#define DIE_ID_REG_OFFSET      0x200
+
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 
 const struct omap_sysinfo sysinfo = {
-       "Board: OMAP543EVM\n"
+       "Board: OMAP5432 uEVM\n"
 };
 
 /**
@@ -109,3 +121,85 @@ int board_mmc_init(bd_t *bis)
        return 0;
 }
 #endif
+
+#ifdef CONFIG_USB_EHCI
+static struct omap_usbhs_board_data usbhs_bdata = {
+       .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
+       .port_mode[1] = OMAP_EHCI_PORT_MODE_HSIC,
+       .port_mode[2] = OMAP_EHCI_PORT_MODE_HSIC,
+};
+
+static void enable_host_clocks(void)
+{
+       int hs_clk_ctrl_val = (OPTFCLKEN_HSIC60M_P3_CLK |
+                               OPTFCLKEN_HSIC480M_P3_CLK |
+                               OPTFCLKEN_HSIC60M_P2_CLK |
+                               OPTFCLKEN_HSIC480M_P2_CLK |
+                               OPTFCLKEN_UTMI_P3_CLK | OPTFCLKEN_UTMI_P2_CLK);
+
+       /* Enable port 2 and 3 clocks*/
+       setbits_le32((*prcm)->cm_l3init_hsusbhost_clkctrl, hs_clk_ctrl_val);
+
+       /* Enable port 2 and 3 usb host ports tll clocks*/
+       setbits_le32((*prcm)->cm_l3init_hsusbtll_clkctrl,
+                       (OPTFCLKEN_USB_CH1_CLK_ENABLE | OPTFCLKEN_USB_CH2_CLK_ENABLE));
+}
+
+int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+{
+       int ret;
+       int auxclk;
+       int reg;
+       uint8_t device_mac[6];
+
+       enable_host_clocks();
+
+       if (!getenv("usbethaddr")) {
+               reg = DIE_ID_REG_BASE + DIE_ID_REG_OFFSET;
+
+               /*
+                * create a fake MAC address from the processor ID code.
+                * first byte is 0x02 to signify locally administered.
+                */
+               device_mac[0] = 0x02;
+               device_mac[1] = readl(reg + 0x10) & 0xff;
+               device_mac[2] = readl(reg + 0xC) & 0xff;
+               device_mac[3] = readl(reg + 0x8) & 0xff;
+               device_mac[4] = readl(reg) & 0xff;
+               device_mac[5] = (readl(reg) >> 8) & 0xff;
+
+               eth_setenv_enetaddr("usbethaddr", device_mac);
+       }
+
+       auxclk = readl((*prcm)->scrm_auxclk1);
+       /* Request auxilary clock */
+       auxclk |= AUXCLK_ENABLE_MASK;
+       writel(auxclk, (*prcm)->scrm_auxclk1);
+
+       ret = omap_ehci_hcd_init(&usbhs_bdata, hccr, hcor);
+       if (ret < 0) {
+               puts("Failed to initialize ehci\n");
+               return ret;
+       }
+
+       return 0;
+}
+
+int ehci_hcd_stop(void)
+{
+       int ret;
+
+       ret = omap_ehci_hcd_stop();
+       return ret;
+}
+
+void usb_hub_reset_devices(int port)
+{
+       /* The LAN9730 needs to be reset after the port power has been set. */
+       if (port == 3) {
+               gpio_direction_output(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO, 0);
+               udelay(10);
+               gpio_direction_output(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO, 1);
+       }
+}
+#endif
index 612c13e4792f2b617df27155ed7cc7f5effad0a5..31ce363b63f14354f3859337426cdae1f427731f 100644 (file)
@@ -42,7 +42,8 @@ const struct pad_conf_entry core_padconf_array_essential[] = {
        {USBD0_SS_RX, (IEN | M0)},      /*  USBD0_SS_RX */
        {I2C5_SCL, (IEN | M0)}, /* I2C5_SCL */
        {I2C5_SDA, (IEN | M0)}, /* I2C5_SDA */
-
+       {HSI2_ACWAKE, (PTU | M6)},    /*  HSI2_ACWAKE */
+       {HSI2_CAFLAG, (PTU | M6)},    /*  HSI2_CAFLAG */
 };
 
 const struct pad_conf_entry wkup_padconf_array_essential[] = {
@@ -50,6 +51,7 @@ const struct pad_conf_entry wkup_padconf_array_essential[] = {
        {SR_PMIC_SCL, (PTU | IEN | M0)}, /* SR_PMIC_SCL */
        {SR_PMIC_SDA, (PTU | IEN | M0)}, /* SR_PMIC_SDA */
        {SYS_32K, (IEN | M0)}, /*  SYS_32K     */
+       {FREF_CLK1_OUT, (PTD | IEN | M0)},    /*  FREF_CLK1_OUT  */
 
 };
 
index b3aadcace32430165d0d44ea304ecf1a1449f4c4..490411e6ee9b5b2aab06edfaa4b3657500b664de 100644 (file)
@@ -1,26 +1,6 @@
-/******************************************************************************
- *   This source code is dual-licensed.  You may use it under the terms of the
- *   GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *
- *****************************************************************************/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 #include <config.h>
 #include <asm/ppc4xx.h>
 
index 0daa189103da337859898d331ed73b0e2a4f6103..c128fcb53dbb6734af04c713f1ea6f1632f69544 100644 (file)
@@ -210,7 +210,7 @@ void fsl_ddr_board_options(memctl_options_t *popts,
        unsigned int datarate;
 
        get_sys_info(&sysinfo);
-       datarate = sysinfo.freqDDRBus / 1000 / 1000;
+       datarate = sysinfo.freq_ddrbus / 1000 / 1000;
 
        for (i = 0; i < ARRAY_SIZE(bopts_ctrl[ctrl_num]); i++) {
                if ((bopts[i].datarate_mhz_low <= datarate) &&
diff --git a/board/xilinx/dts/microblaze.dts b/board/xilinx/dts/microblaze.dts
deleted file mode 100644 (file)
index bf984b0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/include/ BOARD_DTS
index 4bb140e29ec0cb5f72c512db0dc8d74e7c3d2e3a..f7f1c59ac5455fd44f53ccfb98de1344ce084ac3 100644 (file)
@@ -20,6 +20,7 @@ Xilinx_desc fpga010 = XILINX_XC7Z010_DESC(0x10);
 Xilinx_desc fpga020 = XILINX_XC7Z020_DESC(0x20);
 Xilinx_desc fpga030 = XILINX_XC7Z030_DESC(0x30);
 Xilinx_desc fpga045 = XILINX_XC7Z045_DESC(0x45);
+Xilinx_desc fpga100 = XILINX_XC7Z100_DESC(0x100);
 #endif
 
 int board_init(void)
@@ -42,6 +43,9 @@ int board_init(void)
        case XILINX_ZYNQ_7045:
                fpga = fpga045;
                break;
+       case XILINX_ZYNQ_7100:
+               fpga = fpga100;
+               break;
        }
 #endif
 
@@ -61,6 +65,23 @@ int board_eth_init(bd_t *bis)
 {
        u32 ret = 0;
 
+#ifdef CONFIG_XILINX_AXIEMAC
+       ret |= xilinx_axiemac_initialize(bis, XILINX_AXIEMAC_BASEADDR,
+                                               XILINX_AXIDMA_BASEADDR);
+#endif
+#ifdef CONFIG_XILINX_EMACLITE
+       u32 txpp = 0;
+       u32 rxpp = 0;
+# ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
+       txpp = 1;
+# endif
+# ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG
+       rxpp = 1;
+# endif
+       ret |= xilinx_emaclite_initialize(bis, XILINX_EMACLITE_BASEADDR,
+                       txpp, rxpp);
+#endif
+
 #if defined(CONFIG_ZYNQ_GEM)
 # if defined(CONFIG_ZYNQ_GEM0)
        ret |= zynq_gem_initialize(bis, ZYNQ_GEM_BASEADDR0,
@@ -96,5 +117,7 @@ int dram_init(void)
 {
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
 
+       zynq_ddrc_init();
+
        return 0;
 }
index d7c8d341b84ed0a8d1e5ffa8db37cc1d9419c895..be810c78eda9df70edab05761fe24cf056274af0 100644 (file)
@@ -781,6 +781,8 @@ MPC8569MDS_NAND              powerpc     mpc85xx     mpc8569mds          freesca
 MPC8572DS                    powerpc     mpc85xx     mpc8572ds           freescale      -           MPC8572DS
 MPC8572DS_36BIT              powerpc     mpc85xx     mpc8572ds           freescale      -           MPC8572DS:36BIT
 MPC8572DS_NAND               powerpc     mpc85xx     mpc8572ds           freescale      -           MPC8572DS:NAND
+C29XPCIE                     powerpc     mpc85xx     c29xpcie            freescale      -           C29XPCIE:C29XPCIE,36BIT
+C29XPCIE_SPIFLASH            powerpc     mpc85xx     c29xpcie            freescale      -           C29XPCIE:C29XPCIE,36BIT,SPIFLASH
 P1010RDB_36BIT_NAND          powerpc     mpc85xx     p1010rdb            freescale      -           P1010RDB:P1010RDB,36BIT,NAND
 P1010RDB_36BIT_NAND_SECBOOT  powerpc     mpc85xx     p1010rdb            freescale      -           P1010RDB:P1010RDB,36BIT,NAND_SECBOOT,SECURE_BOOT
 P1010RDB_36BIT_NOR           powerpc     mpc85xx     p1010rdb            freescale      -           P1010RDB:P1010RDB,36BIT
@@ -811,16 +813,20 @@ P1020RDB_36BIT               powerpc     mpc85xx     p1_p2_rdb           freesca
 P1020RDB_36BIT_SDCARD        powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P1020RDB,36BIT,SDCARD
 P1020RDB_36BIT_SPIFLASH      powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P1020RDB,36BIT,SPIFLASH
 P1020RDB_NAND                powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P1020RDB,NAND
-P1020RDB-PC                  powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB
-P1020RDB-PC_36BIT            powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,36BIT
-P1020RDB-PC_36BIT_NAND       powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,36BIT,NAND
-P1020RDB-PC_36BIT_SDCARD     powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,36BIT,SDCARD
-P1020RDB-PC_36BIT_SPIFLASH   powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,36BIT,SPIFLASH
-P1020RDB-PC_NAND             powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,NAND
-P1020RDB-PC_SDCARD           powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,SDCARD
-P1020RDB-PC_SPIFLASH         powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB,SPIFLASH
+P1020RDB-PC                  powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC
+P1020RDB-PC_36BIT            powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,36BIT
+P1020RDB-PC_36BIT_NAND       powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,36BIT,NAND
+P1020RDB-PC_36BIT_SDCARD     powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,36BIT,SDCARD
+P1020RDB-PC_36BIT_SPIFLASH   powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,36BIT,SPIFLASH
+P1020RDB-PC_NAND             powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,NAND
+P1020RDB-PC_SDCARD           powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,SDCARD
+P1020RDB-PC_SPIFLASH         powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PC,SPIFLASH
 P1020RDB_SDCARD              powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P1020RDB,SDCARD
 P1020RDB_SPIFLASH            powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P1020RDB,SPIFLASH
+P1020RDB-PD                  powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PD
+P1020RDB-PD_NAND             powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PD,NAND
+P1020RDB-PD_SDCARD           powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PD,SDCARD
+P1020RDB-PD_SPIFLASH         powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020RDB_PD,SPIFLASH
 P1020UTM-PC                  powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020UTM
 P1020UTM-PC_36BIT            powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020UTM,36BIT
 P1020UTM-PC_36BIT_SDCARD     powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1020UTM,36BIT,SDCARD
@@ -854,6 +860,7 @@ P1025RDB_36BIT               powerpc     mpc85xx     p1_p2_rdb_pc        freesca
 P1025RDB_NAND                powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1025RDB,NAND
 P1025RDB_SDCARD              powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1025RDB,SDCARD
 P1025RDB_SPIFLASH            powerpc     mpc85xx     p1_p2_rdb_pc        freescale      -           p1_p2_rdb_pc:P1025RDB,SPIFLASH
+TWR-P1025                    powerpc     mpc85xx     p1_twr              freescale      -           p1_twr:TWR_P1025
 P2010RDB                     powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P2010RDB
 P2010RDB_36BIT               powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P2010RDB,36BIT
 P2010RDB_36BIT_SDCARD        powerpc     mpc85xx     p1_p2_rdb           freescale      -           P1_P2_RDB:P2010RDB,36BIT,SDCARD
@@ -930,6 +937,7 @@ stxgp3                       powerpc     mpc85xx     stxgp3              stx
 stxssa                       powerpc     mpc85xx     stxssa              stx            -           stxssa
 stxssa_4M                    powerpc     mpc85xx     stxssa              stx            -           stxssa:STXSSA_4M
 T4240QDS                     powerpc     mpc85xx     t4qds               freescale      -           T4240QDS:PPC_T4240
+T4240EMU                     powerpc     mpc85xx     t4qds               freescale      -           T4240EMU:PPC_T4240
 T4240QDS_SDCARD              powerpc     mpc85xx     t4qds               freescale     -           T4240QDS:PPC_T4240,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
 T4240QDS_SPIFLASH            powerpc     mpc85xx     t4qds               freescale     -           T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
 T4240QDS_SRIO_PCIE_BOOT             powerpc     mpc85xx     t4qds               freescale      -           T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF80000
@@ -1114,7 +1122,6 @@ PPChameleonEVB_ME_33         powerpc     ppc4xx      PPChameleonEVB      dave
 APC405                       powerpc     ppc4xx      apc405              esd
 AR405                        powerpc     ppc4xx      ar405               esd
 ASH405                       powerpc     ppc4xx      ash405              esd
-CANBT                        powerpc     ppc4xx      canbt               esd
 CMS700                       powerpc     ppc4xx      cms700              esd
 CPCI2DP                      powerpc     ppc4xx      cpci2dp             esd
 CPCI405                      powerpc     ppc4xx      cpci405             esd
index 87ba82e204b8353eef0c05b1f25b43820d889e32..288690bca5f46ae68e2e099b36fa746f676ebc71 100644 (file)
@@ -92,6 +92,7 @@ COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o
 ifdef CONFIG_FPGA
 COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
 endif
+COBJS-$(CONFIG_CMD_FPGAD) += cmd_fpgad.o
 COBJS-$(CONFIG_CMD_FS_GENERIC) += cmd_fs.o
 COBJS-$(CONFIG_CMD_FUSE) += cmd_fuse.o
 COBJS-$(CONFIG_CMD_GETTIME) += cmd_gettime.o
index af884b8a6a656954a06d8cf2859243ccd5d064f1..713de1464c38b123d44515a8328923f522242d88 100644 (file)
@@ -92,7 +92,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_num("immr_base",          bd->bi_immr_base);
 #endif
        print_num("bootflags",          bd->bi_bootflags);
-#if    defined(CONFIG_405CR) || defined(CONFIG_405EP) || \
+#if    defined(CONFIG_405EP) || \
        defined(CONFIG_405GP) || \
        defined(CONFIG_440EP) || defined(CONFIG_440EPX) || \
        defined(CONFIG_440GR) || defined(CONFIG_440GRX) || \
@@ -106,7 +106,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        defined(CONFIG_440SPE) || defined(CONFIG_XILINX_405)
        print_mhz("pci_busfreq",        bd->bi_pci_busfreq);
 #endif
-#else  /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
+#else  /* ! CONFIG_405GP, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
 #if defined(CONFIG_CPM2)
        print_mhz("vco",                bd->bi_vco);
        print_mhz("sccfreq",            bd->bi_sccfreq);
@@ -117,7 +117,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_mhz("cpmfreq",            bd->bi_cpmfreq);
 #endif
        print_mhz("busfreq",            bd->bi_busfreq);
-#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
+#endif /* CONFIG_405GP, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
 
 #ifdef CONFIG_ENABLE_36BIT_PHYS
 #ifdef CONFIG_PHYS_64BIT
index 046e22ff48f57efd4e9957d311b64377c2e048dd..1685c14a5261eba30d21ea29c9eb87a65fbe50e5 100644 (file)
@@ -636,7 +636,7 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
                        goto err;
                else if (ret == BOOTM_ERR_OVERLAP)
                        ret = 0;
-#ifdef CONFIG_SILENT_CONSOLE
+#if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY)
                if (images->os.os == IH_OS_LINUX)
                        fixup_silent_linux();
 #endif
@@ -1384,9 +1384,19 @@ static void fixup_silent_linux(void)
        char *buf;
        const char *env_val;
        char *cmdline = getenv("bootargs");
+       int want_silent;
 
-       /* Only fix cmdline when requested */
-       if (!(gd->flags & GD_FLG_SILENT))
+       /*
+        * Only fix cmdline when requested. The environment variable can be:
+        *
+        *      no - we never fixup
+        *      yes - we always fixup
+        *      unset - we rely on the console silent flag
+        */
+       want_silent = getenv_yesno("silent_linux");
+       if (want_silent == 0)
+               return;
+       else if (want_silent == -1 && !(gd->flags & GD_FLG_SILENT))
                return;
 
        debug("before silent fix-up: %s\n", cmdline);
index db066acc364b5989b1e7333dbac1c26106f5d32e..793c42212369a85d11047d7315e0f386e77c0e05 100644 (file)
@@ -19,8 +19,8 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        const char *str_env;
        char *s = "dfu";
+       int ret, i = 0;
        char *env_bkp;
-       int ret;
 
        if (argc < 3)
                return CMD_RET_USAGE;
@@ -49,6 +49,15 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        g_dnl_register(s);
        while (1) {
+               if (dfu_reset())
+                       /*
+                        * This extra number of usb_gadget_handle_interrupts()
+                        * calls is necessary to assure correct transmission
+                        * completion with dfu-util
+                        */
+                       if (++i == 10)
+                               goto exit;
+
                if (ctrlc())
                        goto exit;
 
@@ -60,6 +69,9 @@ done:
        dfu_free_entities();
        free(env_bkp);
 
+       if (dfu_reset())
+               run_command("reset", 0);
+
        return CMD_RET_SUCCESS;
 }
 
diff --git a/common/cmd_fpgad.c b/common/cmd_fpgad.c
new file mode 100644 (file)
index 0000000..1b25ed8
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * (C) Copyright 2013
+ * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
+ *
+ * based on cmd_mem.c
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+
+#include <gdsys_fpga.h>
+
+static uint    dp_last_fpga;
+static uint    dp_last_addr;
+static uint    dp_last_length = 0x40;
+
+/*
+ * FPGA Memory Display
+ *
+ * Syntax:
+ *     fpgad {fpga} {addr} {len}
+ */
+#define DISP_LINE_LEN  16
+int do_fpga_md(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       unsigned int k;
+       unsigned int fpga;
+       ulong   addr, length;
+       int rc = 0;
+       u16     linebuf[DISP_LINE_LEN/sizeof(u16)];
+
+       /*
+        * We use the last specified parameters, unless new ones are
+        * entered.
+        */
+       fpga = dp_last_fpga;
+       addr = dp_last_addr;
+       length = dp_last_length;
+
+       if (argc < 3)
+               return CMD_RET_USAGE;
+
+       if ((flag & CMD_FLAG_REPEAT) == 0) {
+               /*
+                * FPGA is specified since argc > 2
+                */
+               fpga = simple_strtoul(argv[1], NULL, 16);
+
+               /*
+                * Address is specified since argc > 2
+                */
+               addr = simple_strtoul(argv[2], NULL, 16);
+
+               /*
+                * If another parameter, it is the length to display.
+                * Length is the number of objects, not number of bytes.
+                */
+               if (argc > 3)
+                       length = simple_strtoul(argv[3], NULL, 16);
+       }
+
+       /* Print the lines. */
+       for (k = 0; k < DISP_LINE_LEN / sizeof(u16); ++k)
+               fpga_get_reg(fpga, (u16 *)fpga_ptr[fpga] + k, k * sizeof(u16),
+                            &linebuf[k]);
+       print_buffer(addr, (void *)linebuf, sizeof(u16),
+                    length, DISP_LINE_LEN / sizeof(u16));
+       addr += sizeof(u16)*length;
+
+       dp_last_fpga = fpga;
+       dp_last_addr = addr;
+       dp_last_length = length;
+       return rc;
+}
+
+U_BOOT_CMD(
+       fpgad,  4,      1,      do_fpga_md,
+       "fpga register display",
+       "fpga address [# of objects]"
+);
index 29f5181baf8238aefa01c1df923d5e0dd5530b8e..ebce7d4c3c05162a675bb4a01fdec15dd287e172 100644 (file)
@@ -1438,10 +1438,12 @@ int do_i2c_bus_num(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                printf("Current bus is %d\n", i2c_get_bus_num());
        else {
                bus_no = simple_strtoul(argv[1], NULL, 10);
+#if defined(CONFIG_SYS_I2C)
                if (bus_no >= CONFIG_SYS_NUM_I2C_BUSES) {
                        printf("Invalid bus %d\n", bus_no);
                        return -1;
                }
+#endif
                printf("Setting bus to %d\n", bus_no);
                ret = i2c_set_bus_num(bus_no);
                if (ret)
index 74481cbf6f2f6cff8faa1a87837f43206bd4423c..727fd1c66407f2f253a59beff3cf1ab6d6c51f7c 100644 (file)
@@ -6,30 +6,7 @@
  *              Joe Hershberger, National Instruments, joe.hershberger@ni.com
  * All rights reserved.
  *
- * The "inih" library is distributed under the following license, which is
- * derived from and very similar to the 3-clause BSD license:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Brush Technology nor the names of its contributors
- *       may be used to endorse or promote products derived from this software
- *       without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY BRUSH TECHNOLOGY ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL BRUSH TECHNOLOGY BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  *
  * Go to the project home page for more info:
  * http://code.google.com/p/inih/
index 0ce949683e257a4488ac6f9e6e9c69f7ed0f56f6..f6e522cbb3482bf48eeae51cfe0d2e1467404de3 100644 (file)
@@ -18,7 +18,7 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 #if defined(CONFIG_CMD_LOADB)
-static ulong load_serial_ymodem(ulong offset);
+static ulong load_serial_ymodem(ulong offset, int mode);
 #endif
 
 #if defined(CONFIG_CMD_LOADS)
@@ -462,7 +462,15 @@ static int do_load_serial_bin(cmd_tbl_t *cmdtp, int flag, int argc,
                        offset,
                        load_baudrate);
 
-               addr = load_serial_ymodem(offset);
+               addr = load_serial_ymodem(offset, xyzModem_ymodem);
+
+       } else if (strcmp(argv[0],"loadx")==0) {
+               printf("## Ready for binary (xmodem) download "
+                       "to 0x%08lX at %d bps...\n",
+                       offset,
+                       load_baudrate);
+
+               addr = load_serial_ymodem(offset, xyzModem_xmodem);
 
        } else {
 
@@ -942,7 +950,7 @@ static int getcxmodem(void) {
                return (getc());
        return -1;
 }
-static ulong load_serial_ymodem(ulong offset)
+static ulong load_serial_ymodem(ulong offset, int mode)
 {
        int size;
        int err;
@@ -953,7 +961,7 @@ static ulong load_serial_ymodem(ulong offset)
        ulong addr = 0;
 
        size = 0;
-       info.mode = xyzModem_ymodem;
+       info.mode = mode;
        res = xyzModem_stream_open(&info, &err);
        if (!res) {
 
@@ -1055,6 +1063,14 @@ U_BOOT_CMD(
        " with offset 'off' and baudrate 'baud'"
 );
 
+U_BOOT_CMD(
+       loadx, 3, 0,    do_load_serial_bin,
+       "load binary file over serial line (xmodem mode)",
+       "[ off ] [ baud ]\n"
+       "    - load binary file over serial line"
+       " with offset 'off' and baudrate 'baud'"
+);
+
 U_BOOT_CMD(
        loady, 3, 0,    do_load_serial_bin,
        "load binary file over serial line (ymodem mode)",
index 886212aa078a25c0da64a93ee8562b1ad3a8b9eb..04ab0f19be05d911541567e09b12279984715a2a 100644 (file)
@@ -42,6 +42,7 @@ static int nand_dump(nand_info_t *nand, ulong off, int only_oob, int repeat)
        int i;
        u_char *datbuf, *oobbuf, *p;
        static loff_t last;
+       int ret = 0;
 
        if (repeat)
                off = last + nand->writesize;
@@ -49,11 +50,17 @@ static int nand_dump(nand_info_t *nand, ulong off, int only_oob, int repeat)
        last = off;
 
        datbuf = memalign(ARCH_DMA_MINALIGN, nand->writesize);
-       oobbuf = memalign(ARCH_DMA_MINALIGN, nand->oobsize);
-       if (!datbuf || !oobbuf) {
+       if (!datbuf) {
                puts("No memory for page buffer\n");
                return 1;
        }
+
+       oobbuf = memalign(ARCH_DMA_MINALIGN, nand->oobsize);
+       if (!oobbuf) {
+               puts("No memory for page buffer\n");
+               ret = 1;
+               goto free_dat;
+       }
        off &= ~(nand->writesize - 1);
        loff_t addr = (loff_t) off;
        struct mtd_oob_ops ops;
@@ -66,23 +73,25 @@ static int nand_dump(nand_info_t *nand, ulong off, int only_oob, int repeat)
        i = mtd_read_oob(nand, addr, &ops);
        if (i < 0) {
                printf("Error (%d) reading page %08lx\n", i, off);
-               free(datbuf);
-               free(oobbuf);
-               return 1;
+               ret = 1;
+               goto free_all;
        }
        printf("Page %08lx dump:\n", off);
-       i = nand->writesize >> 4;
-       p = datbuf;
 
-       while (i--) {
-               if (!only_oob)
+       if (!only_oob) {
+               i = nand->writesize >> 4;
+               p = datbuf;
+
+               while (i--) {
                        printf("\t%02x %02x %02x %02x %02x %02x %02x %02x"
                               "  %02x %02x %02x %02x %02x %02x %02x %02x\n",
                               p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
                               p[8], p[9], p[10], p[11], p[12], p[13], p[14],
                               p[15]);
-               p += 16;
+                       p += 16;
+               }
        }
+
        puts("OOB:\n");
        i = nand->oobsize >> 3;
        p = oobbuf;
@@ -91,10 +100,13 @@ static int nand_dump(nand_info_t *nand, ulong off, int only_oob, int repeat)
                       p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);
                p += 8;
        }
-       free(datbuf);
+
+free_all:
        free(oobbuf);
+free_dat:
+       free(datbuf);
 
-       return 0;
+       return ret;
 }
 
 /* ------------------------------------------------------------------------- */
@@ -604,11 +616,11 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                                        opts.scrub = 1;
                                else {
                                        puts("scrub aborted\n");
-                                       return -1;
+                                       return 1;
                                }
                        } else {
                                puts("scrub aborted\n");
-                               return -1;
+                               return 1;
                        }
                }
                ret = nand_erase_opts(nand, &opts);
index 19b0dc9f433c9cc5dc7357aadda3d3c00dc87f9b..4af0f0af26bcfa3afbc63708fb019a89cc99d274 100644 (file)
@@ -151,16 +151,17 @@ static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
                size_t len, const char *buf, char *cmp_buf, size_t *skipped)
 {
        debug("offset=%#x, sector_size=%#x, len=%#zx\n",
-               offset, flash->sector_size, len);
+             offset, flash->sector_size, len);
        if (spi_flash_read(flash, offset, len, cmp_buf))
                return "read";
        if (memcmp(cmp_buf, buf, len) == 0) {
                debug("Skip region %x size %zx: no change\n",
-                       offset, len);
+                     offset, len);
                *skipped += len;
                return NULL;
        }
-       if (spi_flash_erase(flash, offset, len))
+       /* Erase the entire sector */
+       if (spi_flash_erase(flash, offset, flash->sector_size))
                return "erase";
        if (spi_flash_write(flash, offset, len, buf))
                return "write";
@@ -200,7 +201,7 @@ static int spi_flash_update(struct spi_flash *flash, u32 offset,
                        todo = min(end - buf, flash->sector_size);
                        if (get_timer(last_update) > 100) {
                                printf("   \rUpdating, %zu%% %lu B/s",
-                                       100 - (end - buf) / scale,
+                                      100 - (end - buf) / scale,
                                        bytes_per_second(buf - start_buf,
                                                         start_time));
                                last_update = get_timer(0);
@@ -220,9 +221,9 @@ static int spi_flash_update(struct spi_flash *flash, u32 offset,
 
        delta = get_timer(start_time);
        printf("%zu bytes written, %zu bytes skipped", len - skipped,
-               skipped);
+              skipped);
        printf(" in %ld.%lds, speed %ld B/s\n",
-               delta / 1000, delta % 1000, bytes_per_second(len, start_time));
+              delta / 1000, delta % 1000, bytes_per_second(len, start_time));
 
        return 0;
 }
@@ -252,7 +253,7 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
        /* Consistency checking */
        if (offset + len > flash->size) {
                printf("ERROR: attempting %s past flash size (%#x)\n",
-                       argv[0], flash->size);
+                      argv[0], flash->size);
                return 1;
        }
 
@@ -262,9 +263,9 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
                return 1;
        }
 
-       if (strcmp(argv[0], "update") == 0)
+       if (strcmp(argv[0], "update") == 0) {
                ret = spi_flash_update(flash, offset, len, buf);
-       else if (strncmp(argv[0], "read", 4) == 0 ||
+       else if (strncmp(argv[0], "read", 4) == 0 ||
                        strncmp(argv[0], "write", 5) == 0) {
                int read;
 
@@ -275,7 +276,7 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
                        ret = spi_flash_write(flash, offset, len, buf);
 
                printf("SF: %zu bytes @ %#x %s: %s\n", (size_t)len, (u32)offset,
-                       read ? "Read" : "Written", ret ? "ERROR" : "OK");
+                      read ? "Read" : "Written", ret ? "ERROR" : "OK");
        }
 
        unmap_physmem(buf, len);
@@ -304,13 +305,13 @@ static int do_spi_flash_erase(int argc, char * const argv[])
        /* Consistency checking */
        if (offset + len > flash->size) {
                printf("ERROR: attempting %s past flash size (%#x)\n",
-                       argv[0], flash->size);
+                      argv[0], flash->size);
                return 1;
        }
 
        ret = spi_flash_erase(flash, offset, len);
        printf("SF: %zu bytes @ %#x Erased: %s\n", (size_t)len, (u32)offset,
-                       ret ? "ERROR" : "OK");
+              ret ? "ERROR" : "OK");
 
        return ret == 0 ? 0 : 1;
 }
@@ -470,7 +471,8 @@ static int do_spi_flash_test(int argc, char * const argv[])
 }
 #endif /* CONFIG_CMD_SF_TEST */
 
-static int do_spi_flash(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_spi_flash(cmd_tbl_t *cmdtp, int flag, int argc,
+                       char * const argv[])
 {
        const char *cmd;
        int ret;
@@ -526,7 +528,7 @@ U_BOOT_CMD(
        "SPI flash sub-system",
        "probe [[bus:]cs] [hz] [mode]   - init flash device on given SPI bus\n"
        "                                 and chip select\n"
-       "sf read addr offset len        - read `len' bytes starting at\n"
+       "sf read addr offset len        - read `len' bytes starting at\n"
        "                                 `offset' to memory at `addr'\n"
        "sf write addr offset len       - write `len' bytes from memory\n"
        "                                 at `addr' to flash at `offset'\n"
index f387f9ab91f6897acb24b1e55c204279f6e26657..1ac337730c3ec0d1f467e951497cfa1c5be16c6b 100644 (file)
@@ -140,7 +140,6 @@ int set_default_vars(int nvars, char * const vars[])
                                H_NOCLEAR | H_INTERACTIVE, nvars, vars);
 }
 
-#ifndef CONFIG_SPL_BUILD
 /*
  * Check if CRC is valid and (if yes) import the environment.
  * Note that "buf" may or may not be aligned.
@@ -172,7 +171,6 @@ int env_import(const char *buf, int check)
 
        return 0;
 }
-#endif
 
 void env_relocate(void)
 {
index 9a6b8a6fb2d43454369e472838054f770e59f6df..75309621b03bc743554835ebc4f5b7058b5cc258 100644 (file)
@@ -152,72 +152,57 @@ int writeenv(size_t offset, u_char *buf)
        return 0;
 }
 
-#ifdef CONFIG_ENV_OFFSET_REDUND
-static unsigned char env_flags;
+struct env_location {
+       const char *name;
+       const nand_erase_options_t erase_opts;
+};
 
-int saveenv(void)
+static int erase_and_write_env(const struct env_location *location,
+               u_char *env_new)
 {
-       env_t   env_new;
-       ssize_t len;
-       char    *res;
-       int     ret = 0;
-       nand_erase_options_t nand_erase_options;
+       int ret = 0;
 
-       memset(&nand_erase_options, 0, sizeof(nand_erase_options));
-       nand_erase_options.length = CONFIG_ENV_RANGE;
-
-       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);
-       env_new.flags   = ++env_flags; /* increase the serial */
-
-       if (gd->env_valid == 1) {
-               puts("Erasing redundant NAND...\n");
-               nand_erase_options.offset = CONFIG_ENV_OFFSET_REDUND;
-               if (nand_erase_opts(&nand_info[0], &nand_erase_options))
-                       return 1;
-
-               puts("Writing to redundant NAND... ");
-               ret = writeenv(CONFIG_ENV_OFFSET_REDUND, (u_char *)&env_new);
-       } else {
-               puts("Erasing NAND...\n");
-               nand_erase_options.offset = CONFIG_ENV_OFFSET;
-               if (nand_erase_opts(&nand_info[0], &nand_erase_options))
-                       return 1;
-
-               puts("Writing to NAND... ");
-               ret = writeenv(CONFIG_ENV_OFFSET, (u_char *)&env_new);
-       }
-       if (ret) {
-               puts("FAILED!\n");
+       printf("Erasing %s...\n", location->name);
+       if (nand_erase_opts(&nand_info[0], &location->erase_opts))
                return 1;
-       }
-
-       puts("done\n");
 
-       gd->env_valid = gd->env_valid == 2 ? 1 : 2;
+       printf("Writing to %s... ", location->name);
+       ret = writeenv(location->erase_opts.offset, env_new);
+       puts(ret ? "FAILED!\n" : "OK\n");
 
        return ret;
 }
-#else /* ! CONFIG_ENV_OFFSET_REDUND */
+
+#ifdef CONFIG_ENV_OFFSET_REDUND
+static unsigned char env_flags;
+#endif
+
 int saveenv(void)
 {
        int     ret = 0;
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
        ssize_t len;
        char    *res;
-       nand_erase_options_t nand_erase_options;
+       int     env_idx = 0;
+       static const struct env_location location[] = {
+               {
+                       .name = "NAND",
+                       .erase_opts = {
+                               .length = CONFIG_ENV_RANGE,
+                               .offset = CONFIG_ENV_OFFSET,
+                       },
+               },
+#ifdef CONFIG_ENV_OFFSET_REDUND
+               {
+                       .name = "redundant NAND",
+                       .erase_opts = {
+                               .length = CONFIG_ENV_RANGE,
+                               .offset = CONFIG_ENV_OFFSET_REDUND,
+                       },
+               },
+#endif
+       };
 
-       memset(&nand_erase_options, 0, sizeof(nand_erase_options));
-       nand_erase_options.length = CONFIG_ENV_RANGE;
-       nand_erase_options.offset = CONFIG_ENV_OFFSET;
 
        if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)
                return 1;
@@ -228,22 +213,29 @@ int saveenv(void)
                error("Cannot export environment: errno = %d\n", errno);
                return 1;
        }
-       env_new->crc = crc32(0, env_new->data, ENV_SIZE);
-
-       puts("Erasing Nand...\n");
-       if (nand_erase_opts(&nand_info[0], &nand_erase_options))
-               return 1;
+       env_new->crc   = crc32(0, env_new->data, ENV_SIZE);
+#ifdef CONFIG_ENV_OFFSET_REDUND
+       env_new->flags = ++env_flags; /* increase the serial */
+       env_idx = (gd->env_valid == 1);
+#endif
 
-       puts("Writing to Nand... ");
-       if (writeenv(CONFIG_ENV_OFFSET, (u_char *)env_new)) {
-               puts("FAILED!\n");
-               return 1;
+       ret = erase_and_write_env(&location[env_idx], (u_char *)env_new);
+#ifdef CONFIG_ENV_OFFSET_REDUND
+       if (!ret) {
+               /* preset other copy for next write */
+               gd->env_valid = gd->env_valid == 2 ? 1 : 2;
+               return ret;
        }
 
-       puts("done\n");
+       env_idx = (env_idx + 1) & 1;
+       ret = erase_and_write_env(&location[env_idx], (u_char *)env_new);
+       if (!ret)
+               printf("Warning: primary env write failed,"
+                               " redundancy is lost!\n");
+#endif
+
        return ret;
 }
-#endif /* CONFIG_ENV_OFFSET_REDUND */
 #endif /* CMD_SAVEENV */
 
 int readenv(size_t offset, u_char *buf)
index e3e1897ccb95cf1501e353dc846a938b84dc4939..9f806fb090f54964566bc5bd4fef89068d0a4222 100644 (file)
@@ -7,7 +7,7 @@
  *
  * (C) Copyright 2008 Atmel Corporation
  *
- * SPDX-License-Identifier:    GPL-2.0+ 
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
 #include <environment.h>
index 683c1a511d8f4882e6f16119d92569ffb6a36801..199b4ed16a1e0c36e6f98f943a9b2812a4a7dfc3 100644 (file)
@@ -343,6 +343,17 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)
        else
                printf("%s\n", desc);
 
+       if (IMAGE_ENABLE_TIMESTAMP) {
+               time_t timestamp;
+
+               ret = fit_get_timestamp(fit, 0, &timestamp);
+               printf("%s  Created:      ", p);
+               if (ret)
+                       printf("unavailable\n");
+               else
+                       genimg_print_time(timestamp);
+       }
+
        fit_image_get_type(fit, image_noffset, &type);
        printf("%s  Type:         %s\n", p, genimg_get_type_name(type));
 
index 8d5c63c29ef924166576d9d3793379429acfe0e4..990650c7ef3f388c3db6c5bb7fbae2d059355fce 100644 (file)
@@ -51,7 +51,6 @@
 /* ** FONT DATA                                                                */
 /************************************************************************/
 #include <video_font.h>                /* Get font data, width and height      */
-#include <video_font_data.h>
 
 /************************************************************************/
 /* ** LOGO DATA                                                                */
index d6b0e01075913547efafbf690d539112f106c9c5..da31457d5f06d6ab192ffedf1ed82974d688459c 100644 (file)
@@ -85,8 +85,9 @@ void spl_parse_image_header(const struct image_header *header)
                }
                spl_image.os = image_get_os(header);
                spl_image.name = image_get_name(header);
-               debug("spl: payload image: %s load addr: 0x%x size: %d\n",
-                       spl_image.name, spl_image.load_addr, spl_image.size);
+               debug("spl: payload image: %.*s load addr: 0x%x size: %d\n",
+                       sizeof(spl_image.name), spl_image.name,
+                       spl_image.load_addr, spl_image.size);
        } else {
                /* Signature not found - assume u-boot.bin */
                debug("mkimage signature not found - ih_magic = %x\n",
index 721e9a144495a4c37a62d70e457da5d9a6b544f7..844f98c1844bf046b597e981cf7f860c521ee767 100644 (file)
@@ -196,9 +196,6 @@ int stdio_init (void)
        /* Initialize the list */
        INIT_LIST_HEAD(&(devs.list));
 
-#ifdef CONFIG_ARM_DCC
-       drv_arm_dcc_init ();
-#endif
 #ifdef CONFIG_SYS_I2C
        i2c_init_all();
 #else
index f740e5ec219cbe42a8d7375ed582b277a2ebc50b..c97f522beddd1745056c6f97fe3bdf01ed8fea94 100644 (file)
@@ -323,6 +323,7 @@ static int usb_set_maxpacket(struct usb_device *dev)
 /*******************************************************************************
  * Parse the config, located in buffer, and fills the dev->config structure.
  * Note that all little/big endian swapping are done automatically.
+ * (wTotalLength has already been swapped and sanitized when it was read.)
  */
 static int usb_parse_config(struct usb_device *dev,
                        unsigned char *buffer, int cfgno)
@@ -343,24 +344,43 @@ static int usb_parse_config(struct usb_device *dev,
                        head->bDescriptorType);
                return -1;
        }
-       memcpy(&dev->config, buffer, buffer[0]);
-       le16_to_cpus(&(dev->config.desc.wTotalLength));
+       if (head->bLength != USB_DT_CONFIG_SIZE) {
+               printf("ERROR: Invalid USB CFG length (%d)\n", head->bLength);
+               return -1;
+       }
+       memcpy(&dev->config, head, USB_DT_CONFIG_SIZE);
        dev->config.no_of_if = 0;
 
        index = dev->config.desc.bLength;
        /* Ok the first entry must be a configuration entry,
         * now process the others */
        head = (struct usb_descriptor_header *) &buffer[index];
-       while (index + 1 < dev->config.desc.wTotalLength) {
+       while (index + 1 < dev->config.desc.wTotalLength && head->bLength) {
                switch (head->bDescriptorType) {
                case USB_DT_INTERFACE:
+                       if (head->bLength != USB_DT_INTERFACE_SIZE) {
+                               printf("ERROR: Invalid USB IF length (%d)\n",
+                                       head->bLength);
+                               break;
+                       }
+                       if (index + USB_DT_INTERFACE_SIZE >
+                           dev->config.desc.wTotalLength) {
+                               puts("USB IF descriptor overflowed buffer!\n");
+                               break;
+                       }
                        if (((struct usb_interface_descriptor *) \
-                            &buffer[index])->bInterfaceNumber != curr_if_num) {
+                            head)->bInterfaceNumber != curr_if_num) {
                                /* this is a new interface, copy new desc */
                                ifno = dev->config.no_of_if;
+                               if (ifno >= USB_MAXINTERFACES) {
+                                       puts("Too many USB interfaces!\n");
+                                       /* try to go on with what we have */
+                                       return 1;
+                               }
                                if_desc = &dev->config.if_desc[ifno];
                                dev->config.no_of_if++;
-                               memcpy(if_desc, &buffer[index], buffer[index]);
+                               memcpy(if_desc, head,
+                                       USB_DT_INTERFACE_SIZE);
                                if_desc->no_of_ep = 0;
                                if_desc->num_altsetting = 1;
                                curr_if_num =
@@ -374,12 +394,31 @@ static int usb_parse_config(struct usb_device *dev,
                        }
                        break;
                case USB_DT_ENDPOINT:
+                       if (head->bLength != USB_DT_ENDPOINT_SIZE) {
+                               printf("ERROR: Invalid USB EP length (%d)\n",
+                                       head->bLength);
+                               break;
+                       }
+                       if (index + USB_DT_ENDPOINT_SIZE >
+                           dev->config.desc.wTotalLength) {
+                               puts("USB EP descriptor overflowed buffer!\n");
+                               break;
+                       }
+                       if (ifno < 0) {
+                               puts("Endpoint descriptor out of order!\n");
+                               break;
+                       }
                        epno = dev->config.if_desc[ifno].no_of_ep;
                        if_desc = &dev->config.if_desc[ifno];
+                       if (epno > USB_MAXENDPOINTS) {
+                               printf("Interface %d has too many endpoints!\n",
+                                       if_desc->desc.bInterfaceNumber);
+                               return 1;
+                       }
                        /* found an endpoint */
                        if_desc->no_of_ep++;
-                       memcpy(&if_desc->ep_desc[epno],
-                               &buffer[index], buffer[index]);
+                       memcpy(&if_desc->ep_desc[epno], head,
+                               USB_DT_ENDPOINT_SIZE);
                        ep_wMaxPacketSize = get_unaligned(&dev->config.\
                                                        if_desc[ifno].\
                                                        ep_desc[epno].\
@@ -392,9 +431,23 @@ static int usb_parse_config(struct usb_device *dev,
                        debug("if %d, ep %d\n", ifno, epno);
                        break;
                case USB_DT_SS_ENDPOINT_COMP:
+                       if (head->bLength != USB_DT_SS_EP_COMP_SIZE) {
+                               printf("ERROR: Invalid USB EPC length (%d)\n",
+                                       head->bLength);
+                               break;
+                       }
+                       if (index + USB_DT_SS_EP_COMP_SIZE >
+                           dev->config.desc.wTotalLength) {
+                               puts("USB EPC descriptor overflowed buffer!\n");
+                               break;
+                       }
+                       if (ifno < 0 || epno < 0) {
+                               puts("EPC descriptor out of order!\n");
+                               break;
+                       }
                        if_desc = &dev->config.if_desc[ifno];
-                       memcpy(&if_desc->ss_ep_comp_desc[epno],
-                               &buffer[index], buffer[index]);
+                       memcpy(&if_desc->ss_ep_comp_desc[epno], head,
+                               USB_DT_SS_EP_COMP_SIZE);
                        break;
                default:
                        if (head->bLength == 0)
@@ -473,7 +526,7 @@ int usb_get_configuration_no(struct usb_device *dev,
                             unsigned char *buffer, int cfgno)
 {
        int result;
-       unsigned int tmp;
+       unsigned int length;
        struct usb_config_descriptor *config;
 
        config = (struct usb_config_descriptor *)&buffer[0];
@@ -487,16 +540,18 @@ int usb_get_configuration_no(struct usb_device *dev,
                                "(expected %i, got %i)\n", 9, result);
                return -1;
        }
-       tmp = le16_to_cpu(config->wTotalLength);
+       length = le16_to_cpu(config->wTotalLength);
 
-       if (tmp > USB_BUFSIZ) {
-               printf("usb_get_configuration_no: failed to get " \
-                      "descriptor - too long: %d\n", tmp);
+       if (length > USB_BUFSIZ) {
+               printf("%s: failed to get descriptor - too long: %d\n",
+                       __func__, length);
                return -1;
        }
 
-       result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, tmp);
-       debug("get_conf_no %d Result %d, wLength %d\n", cfgno, result, tmp);
+       result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, length);
+       debug("get_conf_no %d Result %d, wLength %d\n", cfgno, result, length);
+       config->wTotalLength = length; /* validated, with CPU byte order */
+
        return result;
 }
 
index 754d436ad4ec69380033dde2725c9ba5032e3595..ffac0e743cef38f2c98cb7a8c58d40acd5097516 100644 (file)
 static struct usb_hub_device hub_dev[USB_MAX_HUB];
 static int usb_hub_index;
 
+__weak void usb_hub_reset_devices(int port)
+{
+       return;
+}
 
 static int usb_get_hub_descriptor(struct usb_device *dev, void *data, int size)
 {
@@ -110,7 +114,7 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
                ret = usb_get_port_status(dev, i + 1, portsts);
                if (ret < 0) {
                        debug("port %d: get_port_status failed\n", i + 1);
-                       return;
+                       continue;
                }
 
                /*
@@ -125,7 +129,7 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
                portstatus = le16_to_cpu(portsts->wPortStatus);
                if (portstatus & (USB_PORT_STAT_POWER << 1)) {
                        debug("port %d: Port power change failed\n", i + 1);
-                       return;
+                       continue;
                }
        }
 
@@ -302,7 +306,7 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)
 
 static int usb_hub_configure(struct usb_device *dev)
 {
-       int i;
+       int i, length;
        ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, USB_BUFSIZ);
        unsigned char *bitmap;
        short hubCharacteristics;
@@ -323,20 +327,14 @@ static int usb_hub_configure(struct usb_device *dev)
        }
        descriptor = (struct usb_hub_descriptor *)buffer;
 
-       /* silence compiler warning if USB_BUFSIZ is > 256 [= sizeof(char)] */
-       i = descriptor->bLength;
-       if (i > USB_BUFSIZ) {
-               debug("usb_hub_configure: failed to get hub " \
-                     "descriptor - too long: %d\n", descriptor->bLength);
-               return -1;
-       }
+       length = min(descriptor->bLength, sizeof(struct usb_hub_descriptor));
 
-       if (usb_get_hub_descriptor(dev, buffer, descriptor->bLength) < 0) {
+       if (usb_get_hub_descriptor(dev, buffer, length) < 0) {
                debug("usb_hub_configure: failed to get hub " \
                      "descriptor 2nd giving up %lX\n", dev->status);
                return -1;
        }
-       memcpy((unsigned char *)&hub->desc, buffer, descriptor->bLength);
+       memcpy((unsigned char *)&hub->desc, buffer, length);
        /* adjust 16bit values */
        put_unaligned(le16_to_cpu(get_unaligned(
                        &descriptor->wHubCharacteristics)),
@@ -426,6 +424,14 @@ static int usb_hub_configure(struct usb_device *dev)
              "" : "no ");
        usb_hub_power_on(hub);
 
+       /*
+        * Reset any devices that may be in a bad state when applying
+        * the power.  This is a __weak function.  Resetting of the devices
+        * should occur in the board file of the device.
+        */
+       for (i = 0; i < dev->maxchild; i++)
+               usb_hub_reset_devices(i + 1);
+
        for (i = 0; i < dev->maxchild; i++) {
                ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);
                unsigned short portstatus, portchange;
index 2ca3767ecfa113e8ee36fabdf2261ee807e80f3a..1ad67caf13c554c6fd0eb34945f41b3a20f736bc 100644 (file)
@@ -104,6 +104,11 @@ struct usb_kbd_pdata {
        uint8_t         flags;
 };
 
+extern int __maybe_unused net_busy_flag;
+
+/* The period of time between two calls of usb_kbd_testc(). */
+static unsigned long __maybe_unused kbd_testc_tms;
+
 /* Generic keyboard event polling. */
 void usb_kbd_generic_poll(void)
 {
@@ -349,6 +354,16 @@ static int usb_kbd_testc(void)
        struct usb_device *usb_kbd_dev;
        struct usb_kbd_pdata *data;
 
+#ifdef CONFIG_CMD_NET
+       /*
+        * If net_busy_flag is 1, NET transfer is running,
+        * then we check key-pressed every second (first check may be
+        * less than 1 second) to improve TFTP booting performance.
+        */
+       if (net_busy_flag && (get_timer(kbd_testc_tms) < CONFIG_SYS_HZ))
+               return 0;
+       kbd_testc_tms = get_timer(0);
+#endif
        dev = stdio_get_by_name(DEVNAME);
        usb_kbd_dev = (struct usb_device *)dev->priv;
        data = usb_kbd_dev->privptr;
index 499eed134868d1494e2f40fa6a46719d45eda71f..b3ecaa7f80abcc62beb81da2b44be1dc585c3a88 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -13,6 +13,12 @@ SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
 
 export SHELL
 
+ifeq ($(CONFIG_TPL_BUILD),y)
+SPL_BIN := u-boot-tpl
+else
+SPL_BIN := u-boot-spl
+endif
+
 ifeq ($(CURDIR),$(SRCTREE))
 dir :=
 else
@@ -22,7 +28,11 @@ endif
 ifneq ($(OBJTREE),$(SRCTREE))
 # Create object files for SPL in a separate directory
 ifeq ($(CONFIG_SPL_BUILD),y)
+ifeq ($(CONFIG_TPL_BUILD),y)
+obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
+else
 obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
+endif
 else
 obj := $(if $(dir),$(OBJTREE)/$(dir)/,$(OBJTREE)/)
 endif
@@ -32,8 +42,12 @@ $(shell mkdir -p $(obj))
 else
 # Create object files for SPL in a separate directory
 ifeq ($(CONFIG_SPL_BUILD),y)
+ifeq ($(CONFIG_TPL_BUILD),y)
+obj := $(if $(dir),$(TPLTREE)/$(dir)/,$(TPLTREE)/)
+else
 obj := $(if $(dir),$(SPLTREE)/$(dir)/,$(SPLTREE)/)
 
+endif
 $(shell mkdir -p $(obj))
 else
 obj :=
@@ -119,6 +133,7 @@ endif
 # Usage gcc-ver := $(call cc-version)
 cc-version = $(shell $(SHELL) $(SRCTREE)/tools/gcc-version.sh $(CC))
 binutils-version = $(shell $(SHELL) $(SRCTREE)/tools/binutils-version.sh $(AS))
+dtc-version = $(shell $(SHELL) $(SRCTREE)/tools/dtc-version.sh $(DTC))
 
 #
 # Include the make variables (CC, etc...)
@@ -144,7 +159,18 @@ CHECK      = sparse
 #########################################################################
 
 # Load generated board configuration
+ifeq ($(CONFIG_TPL_BUILD),y)
+# Include TPL autoconf
+sinclude $(OBJTREE)/include/tpl-autoconf.mk
+else
+ifeq ($(CONFIG_SPL_BUILD),y)
+# Include SPL autoconf
+sinclude $(OBJTREE)/include/spl-autoconf.mk
+else
+# Include normal autoconf
 sinclude $(OBJTREE)/include/autoconf.mk
+endif
+endif
 sinclude $(OBJTREE)/include/config.mk
 
 # Some architecture config.mk files need to know what CPUDIR is set to,
@@ -214,12 +240,19 @@ ifneq ($(CONFIG_SPL_PAD_TO),)
 CPPFLAGS += -DCONFIG_SPL_PAD_TO=$(CONFIG_SPL_PAD_TO)
 endif
 
+ifneq ($(CONFIG_TPL_PAD_TO),)
+CPPFLAGS += -DCONFIG_TPL_PAD_TO=$(CONFIG_TPL_PAD_TO)
+endif
+
 ifneq ($(CONFIG_UBOOT_PAD_TO),)
 CPPFLAGS += -DCONFIG_UBOOT_PAD_TO=$(CONFIG_UBOOT_PAD_TO)
 endif
 
 ifeq ($(CONFIG_SPL_BUILD),y)
 CPPFLAGS += -DCONFIG_SPL_BUILD
+ifeq ($(CONFIG_TPL_BUILD),y)
+CPPFLAGS += -DCONFIG_TPL_BUILD
+endif
 endif
 
 # Does this architecture support generic board init?
@@ -291,9 +324,9 @@ ifneq ($(CONFIG_SYS_TEXT_BASE),)
 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
 endif
 
-LDFLAGS_u-boot-spl += -T $(obj)u-boot-spl.lds $(LDFLAGS_FINAL)
+LDFLAGS_$(SPL_BIN) += -T $(obj)u-boot-spl.lds $(LDFLAGS_FINAL)
 ifneq ($(CONFIG_SPL_TEXT_BASE),)
-LDFLAGS_u-boot-spl += -Ttext $(CONFIG_SPL_TEXT_BASE)
+LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
 endif
 
 # Linus' kernel sanity checking tool
diff --git a/doc/README.TPL b/doc/README.TPL
new file mode 100644 (file)
index 0000000..1df03b9
--- /dev/null
@@ -0,0 +1,45 @@
+Generic TPL framework
+=====================
+
+Overview
+--------
+
+TPL---Third Program Loader.
+
+Due to the SPL on some boards(powerpc mpc85xx) has a size limit and cannot
+be compatible with all the external device(e.g. DDR). So add a tertiary
+program loader (TPL) to enable a loader stub loaded by the code from the
+SPL. It loads the final uboot image into DDR, then jump to it to begin
+execution. Now, only the powerpc mpc85xx has this requirement and will
+implemente it.
+
+Keep consistent with SPL, with this framework almost all source files for a
+board can be reused. No code duplication or symlinking is necessary anymore.
+
+How it works
+------------
+
+There has been a directory TOPDIR/spl which contains only a Makefile. The
+Makefile is shared by SPL and TPL.
+
+The object files are built separately for SPL/TPL and placed in the
+directory spl/tpl. The final binaries which are generated are
+u-boot-{spl|tpl}, u-boot-{spl|tpl}.bin and u-boot-{spl|tpl}.map.
+
+During the TPL build a variable named CONFIG_TPL_BUILD is exported in the
+make environment and also appended to CPPFLAGS with -DCONFIG_TPL_BUILD.
+
+The SPL options are shared by SPL and TPL, the board config file should
+determine which SPL options to choose based on whether CONFIG_TPL_BUILD
+is set. Source files can be compiled for TPL with options choosed in the
+board config file.
+
+For example:
+
+spl/Makefile:
+LIBS-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/libcommon.o
+
+CONFIG_SPL_LIBCOMMON_SUPPORT is defined in board config file:
+#ifdef CONFIG_TPL_BUILD
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#endif
index 4b290609fcb26efcffe5082b7f897fd2337ee366..86bae6816d8a34714da246bfcfae7561d8e25055 100644 (file)
@@ -119,8 +119,7 @@ file into
        board/<vendor>/dts/<name>.dts
 
 This should include your CPU or SOC's device tree file, placed in
-arch/<arch>/dts, and then make any adjustments required. The name of this
-is CONFIG_ARCH_DEVICE_TREE.dts.
+arch/<arch>/dts, and then make any adjustments required.
 
 If CONFIG_OF_EMBED is defined, then it will be picked up and built into
 the U-Boot image (including u-boot.bin).
diff --git a/doc/README.mpc85xx-sd-spi-boot b/doc/README.mpc85xx-sd-spi-boot
new file mode 100644 (file)
index 0000000..d5043cc
--- /dev/null
@@ -0,0 +1,81 @@
+----------------------------------------
+Booting from On-Chip ROM (eSDHC or eSPI)
+----------------------------------------
+
+boot_format is a tool to write SD bootable images to a filesystem and build
+SD/SPI images to a binary file for writing later.
+
+When booting from an SD card/MMC, boot_format puts the configuration file and
+the RAM-based U-Boot image on the card.
+When booting from an EEPROM, boot_format generates a binary image that is used
+to boot from this EEPROM.
+
+Where to get boot_format:
+========================
+
+you can browse it online at:
+http://git.freescale.com/git/cgit.cgi/ppc/sdk/boot-format.git/
+
+Building
+========
+
+Run the following to build this project
+
+       $ make
+
+Execution
+=========
+
+boot_format runs under a regular Linux machine and requires a super user mode
+to run. Execute boot_format as follows.
+
+For building SD images by writing directly to a file system on SD media:
+
+       $ boot_format $config u-boot.bin -sd $device
+
+Where $config is the included config.dat file for your platform and $device
+is the target block device for the SD media on your computer.
+
+For build binary images directly a local file:
+
+       $ boot_format $config u-boot.bin -spi $file
+
+Where $file is the target file. Also keep in mind the u-boot.bin file needs
+to be the u-boot built for your particular platform and target media.
+
+Example: To generate a u-boot.bin for a P1022DS booting from SD, run the
+following in the u-boot repository:
+
+       $ make P1022DS_SDCARD
+
+Configuration Files
+===================
+
+Below are the configuration files to be used with a particular platform. Keep
+in mind that some of these config files are tied to the platforms DDR speed.
+Please see the SoC reference manual for more documentation.
+
+P1022DS                config_sram_p1022ds.dat
+P2020DS                config_sram_p2020ds.dat
+P2010DS                config_sram_p2020ds.dat
+P1020RDB       config_ddr2_1g_p1020rdb_533M.dat
+P1020RDB       config_ddr2_1g_p1020rdb_667M.dat
+P2020RDB       config_ddr2_1g_p2020rdb_800M.dat
+P2020RDB       config_ddr2_1g_p2020rdb_667M.dat
+P2020RDB       config_ddr3_1gb_64bit_p2020rdb_pc.dat
+P2010RDB       config_ddr3_1gb_64bit_p2020rdb_pc.dat
+P1020RDB       config_ddr3_1gb_p1_p2_rdb_pc_800M.dat
+P1011RDB       config_ddr3_1gb_p1_p2_rdb_pc_800M.dat
+P1010RDB       config_ddr3_1gb_p1010rdb_800M.dat
+P1014RDB       config_ddr3_1gb_p1014rdb_800M.dat
+P1021RDB       config_ddr3_1gb_p1_p2_rdb_pc_800M.dat
+P1012RDB       config_ddr3_1gb_p1_p2_rdb_pc_800M.dat
+P1022DS                config_ddr3_2gb_p1022ds.dat
+P1013DS                config_ddr3_2gb_p1022ds.dat
+P1024RDB       config_ddr3_1gb_p1_p2_rdb_pc_667M.dat
+P1013RDB       config_ddr3_1gb_p1_p2_rdb_pc_667M.dat
+P1025RDB       config_ddr3_1gb_p1_p2_rdb_pc_667M.dat
+P1016RDB       config_ddr3_1gb_p1_p2_rdb_pc_667M.dat
+P1020UTM       config_ddr3_1gb_p1_p2_rdb_pc_800M.dat
+P1020MBG       config_ddr3_1gb_p1_p2_rdb_pc_800M.dat
+MPC8536DS      config_ddr2_512m_mpc8536ds_667M.dat
index a0f1fa30f881c26665f4e6cc1cd20d8cdef2dd7d..87b1dfecd1c60ce2d778bb365f82b83c54056a0a 100644 (file)
@@ -11,9 +11,10 @@ easily if here is something they might want to dig for...
 
 Board            Arch        CPU            Commit      Removed     Last known maintainer/contact
 =================================================================================================
-Alaska8220       powerpc     mpc8220        -           -
-Yukon8220        powerpc     mpc8220        -           -
-sorcery          powerpc     mpc8220        -           -
+CANBT            powerpc     405CR          -           -           Matthias Fuchs <matthias.fuchs@esd.eu>
+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>
 AMX860           powerpc     mpc860         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
index b8870ecf7309bba6215bb0ecff0e2e8b79a8f17b..d73d5103919662e8a8c044be35922e4bed33dec4 100644 (file)
 #include <linux/list.h>
 #include <linux/compiler.h>
 
+static bool dfu_reset_request;
 static LIST_HEAD(dfu_list);
 static int dfu_alt_num;
 
+bool dfu_reset(void)
+{
+       return dfu_reset_request;
+}
+
+void dfu_trigger_reset()
+{
+       dfu_reset_request = true;
+}
+
 static int dfu_find_alt_num(const char *s)
 {
        int i = 0;
index 2a01cc11b80546a39162e5b7c8485cdef72791d0..0ec12cff264fe8ad88117f8fe8748851cf0d4e85 100644 (file)
@@ -136,11 +136,43 @@ static int dfu_read_medium_nand(struct dfu_entity *dfu, u64 offset, void *buf,
        return ret;
 }
 
+static int dfu_flush_medium_nand(struct dfu_entity *dfu)
+{
+       int ret = 0;
+
+       /* in case of ubi partition, erase rest of the partition */
+       if (dfu->data.nand.ubi) {
+               nand_info_t *nand;
+               nand_erase_options_t opts;
+
+               if (nand_curr_device < 0 ||
+                   nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE ||
+                   !nand_info[nand_curr_device].name) {
+                       printf("%s: invalid nand device\n", __func__);
+                       return -1;
+               }
+
+               nand = &nand_info[nand_curr_device];
+
+               memset(&opts, 0, sizeof(opts));
+               opts.offset = dfu->data.nand.start + dfu->offset +
+                               dfu->bad_skip;
+               opts.length = dfu->data.nand.start +
+                               dfu->data.nand.size - opts.offset;
+               ret = nand_erase_opts(nand, &opts);
+               if (ret != 0)
+                       printf("Failure erase: %d\n", ret);
+       }
+
+       return ret;
+}
+
 int dfu_fill_entity_nand(struct dfu_entity *dfu, char *s)
 {
        char *st;
        int ret, dev, part;
 
+       dfu->data.nand.ubi = 0;
        dfu->dev_type = DFU_DEV_NAND;
        st = strsep(&s, " ");
        if (!strcmp(st, "raw")) {
@@ -148,7 +180,7 @@ int dfu_fill_entity_nand(struct dfu_entity *dfu, char *s)
                dfu->data.nand.start = simple_strtoul(s, &s, 16);
                s++;
                dfu->data.nand.size = simple_strtoul(s, &s, 16);
-       } else if (!strcmp(st, "part")) {
+       } else if ((!strcmp(st, "part")) || (!strcmp(st, "partubi"))) {
                char mtd_id[32];
                struct mtd_device *mtd_dev;
                u8 part_num;
@@ -173,7 +205,8 @@ int dfu_fill_entity_nand(struct dfu_entity *dfu, char *s)
 
                dfu->data.nand.start = pi->offset;
                dfu->data.nand.size = pi->size;
-
+               if (!strcmp(st, "partubi"))
+                       dfu->data.nand.ubi = 1;
        } else {
                printf("%s: Memory layout (%s) not supported!\n", __func__, st);
                return -1;
@@ -181,6 +214,7 @@ int dfu_fill_entity_nand(struct dfu_entity *dfu, char *s)
 
        dfu->read_medium = dfu_read_medium_nand;
        dfu->write_medium = dfu_write_medium_nand;
+       dfu->flush_medium = dfu_flush_medium_nand;
 
        /* initial state */
        dfu->inited = 0;
index 96d4c9bb19960c943fa0666768e30212d996f139..22defcd7d9223be898b18cdc8ae1236a38272671 100644 (file)
@@ -544,6 +544,28 @@ int mxs_dma_go(int chan)
        return ret;
 }
 
+/*
+ * Execute a continuously running circular DMA descriptor.
+ * NOTE: This is not intended for general use, but rather
+ *      for the LCD driver in Smart-LCD mode. It allows
+ *      continuous triggering of the RUN bit there.
+ */
+void mxs_dma_circ_start(int chan, struct mxs_dma_desc *pdesc)
+{
+       struct mxs_apbh_regs *apbh_regs =
+               (struct mxs_apbh_regs *)MXS_APBH_BASE;
+
+       mxs_dma_flush_desc(pdesc);
+
+       mxs_dma_enable_irq(chan, 1);
+
+       writel(mxs_dma_cmd_address(pdesc),
+               &apbh_regs->ch[chan].hw_apbh_ch_nxtcmdar);
+       writel(1, &apbh_regs->ch[chan].hw_apbh_ch_sema);
+       writel(1 << (chan + APBH_CTRL0_CLKGATE_CHANNEL_OFFSET),
+               &apbh_regs->hw_apbh_ctrl0_clr);
+}
+
 /*
  * Initialize the DMA hardware
  */
index 8cc16fd2c2db3da9c77dabbd1e2ad89cd9bb36eb..14363c9a5b883b93f8316d74479434c432e21cdd 100644 (file)
@@ -23,6 +23,7 @@
 #define DEVCFG_STATUS_DMA_CMD_Q_E      0x40000000
 #define DEVCFG_STATUS_DMA_DONE_CNT_MASK        0x30000000
 #define DEVCFG_STATUS_PCFG_INIT                0x00000010
+#define DEVCFG_MCTRL_PCAP_LPBK         0x00000010
 #define DEVCFG_MCTRL_RFIFO_FLUSH       0x00000002
 #define DEVCFG_MCTRL_WFIFO_FLUSH       0x00000001
 
@@ -31,7 +32,7 @@
 #endif
 
 #ifndef CONFIG_SYS_FPGA_PROG_TIME
-#define CONFIG_SYS_FPGA_PROG_TIME CONFIG_SYS_HZ        /* 1 s */
+#define CONFIG_SYS_FPGA_PROG_TIME      (CONFIG_SYS_HZ * 4) /* 4 s */
 #endif
 
 int zynq_info(Xilinx_desc *desc)
@@ -200,6 +201,9 @@ int zynq_load(Xilinx_desc *desc, const void *buf, size_t bsize)
                swap = SWAP_DONE;
        }
 
+       /* Clear loopback bit */
+       clrbits_le32(&devcfg_base->mctrl, DEVCFG_MCTRL_PCAP_LPBK);
+
        if (!partialbit) {
                zynq_slcr_devcfg_disable();
 
index 7a034eba1222880db32f038ecf77881ae48292d9..051073cee3b5d47a2caeb4a9e600e3ed616aa866 100644 (file)
@@ -352,8 +352,8 @@ void special_gpio_free(unsigned gpio)
                return;
        }
 
-       reserve(special_gpio, gpio);
-       reserve(peri, gpio);
+       unreserve(special_gpio, gpio);
+       unreserve(peri, gpio);
        set_label(gpio, "free");
 }
 #endif
index f16e9ae4d2b3765533fd937e813cc60488fae528..13dcf798730f4313e6767dc8078b05a454e6adb2 100644 (file)
@@ -2,20 +2,7 @@
  * Copyright (c) 2009 Wind River Systems, Inc.
  * Tom Rix <Tom.Rix@windriver.com>
  *
- * 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
+ * SPDX-License-Identifier:    GPL-2.0
  *
  * This work is derived from the linux 2.6.27 kernel source
  * To fetch, use the kernel repository
  *
  * Copyright (C) 2003-2005 Nokia Corporation
  * Written by Juha Yrjölä <juha.yrjola@nokia.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
  */
 #include <common.h>
 #include <asm/gpio.h>
index be1374592151b415c428182340a463c3c48492e0..7371cd4a87fdd7b7a64afbb39ed4fd80e402d6cc 100644 (file)
@@ -47,9 +47,6 @@ struct pca953x_chip_ngpio {
 static struct pca953x_chip_ngpio pca953x_chip_ngpios[] =
     CONFIG_SYS_I2C_PCA953X_WIDTH;
 
-#define NUM_CHIP_GPIOS (sizeof(pca953x_chip_ngpios) / \
-                       sizeof(struct pca953x_chip_ngpio))
-
 /*
  * Determine the number of GPIO pins supported. If we don't know we assume
  * 8 pins.
@@ -58,7 +55,7 @@ static int pca953x_ngpio(uint8_t chip)
 {
        int i;
 
-       for (i = 0; i < NUM_CHIP_GPIOS; i++)
+       for (i = 0; i < ARRAY_SIZE(pca953x_chip_ngpios); i++)
                if (pca953x_chip_ngpios[i].chip == chip)
                        return pca953x_chip_ngpios[i].ngpio;
 
index 38455e1c664ba0dcaaa6511f2afc65b5301e2180..291ad946dba19a8b358b4be6fe3c12be018d73a1 100644 (file)
@@ -206,9 +206,58 @@ static unsigned int get_i2c_clock(int bus)
                return gd->arch.i2c1_clk;       /* I2C1 clock */
 }
 
+static int fsl_i2c_fixup(const struct fsl_i2c *dev)
+{
+       const unsigned long long timeout = usec2ticks(CONFIG_I2C_MBB_TIMEOUT);
+       unsigned long long timeval = 0;
+       int ret = -1;
+       unsigned int flags = 0;
+
+#ifdef CONFIG_SYS_FSL_ERRATUM_I2C_A004447
+       unsigned int svr = get_svr();
+       if ((SVR_SOC_VER(svr) == SVR_8548 && IS_SVR_REV(svr, 3, 1)) ||
+           (SVR_REV(svr) <= CONFIG_SYS_FSL_A004447_SVR_REV))
+               flags = I2C_CR_BIT6;
+#endif
+
+       writeb(I2C_CR_MEN | I2C_CR_MSTA, &dev->cr);
+
+       timeval = get_ticks();
+       while (!(readb(&dev->sr) & I2C_SR_MBB)) {
+               if ((get_ticks() - timeval) > timeout)
+                       goto err;
+       }
+
+       if (readb(&dev->sr) & I2C_SR_MAL) {
+               /* SDA is stuck low */
+               writeb(0, &dev->cr);
+               udelay(100);
+               writeb(I2C_CR_MSTA | flags, &dev->cr);
+               writeb(I2C_CR_MEN | I2C_CR_MSTA | flags, &dev->cr);
+       }
+
+       readb(&dev->dr);
+
+       timeval = get_ticks();
+       while (!(readb(&dev->sr) & I2C_SR_MIF)) {
+               if ((get_ticks() - timeval) > timeout)
+                       goto err;
+       }
+       ret = 0;
+
+err:
+       writeb(I2C_CR_MEN | flags, &dev->cr);
+       writeb(0, &dev->sr);
+       udelay(100);
+
+       return ret;
+}
+
 static void fsl_i2c_init(struct i2c_adapter *adap, int speed, int slaveadd)
 {
        const struct fsl_i2c *dev;
+       const unsigned long long timeout = usec2ticks(CONFIG_I2C_MBB_TIMEOUT);
+       unsigned long long timeval;
 
 #ifdef CONFIG_SYS_I2C_INIT_BOARD
        /* Call board specific i2c bus reset routine before accessing the
@@ -226,6 +275,18 @@ static void fsl_i2c_init(struct i2c_adapter *adap, int speed, int slaveadd)
        writeb(0x0, &dev->sr);          /* clear status register */
        writeb(I2C_CR_MEN, &dev->cr);   /* start I2C controller */
 
+       timeval = get_ticks();
+       while (readb(&dev->sr) & I2C_SR_MBB) {
+               if ((get_ticks() - timeval) < timeout)
+                       continue;
+
+               if (fsl_i2c_fixup(dev))
+                       debug("i2c_init: BUS#%d failed to init\n",
+                             adap->hwadapnr);
+
+               break;
+       }
+
 #ifdef CONFIG_SYS_I2C_BOARD_LATE_INIT
        /* Call board specific i2c bus reset routine AFTER the bus has been
         * initialized. Use either this callpoint or i2c_init_board;
@@ -394,8 +455,10 @@ fsl_i2c_write(struct i2c_adapter *adap, u8 dev, uint addr, int alen,
        int i = -1; /* signal error */
        u8 *a = (u8*)&addr;
 
-       if (i2c_wait4bus(adap) >= 0 &&
-           i2c_write_addr(adap, dev, I2C_WRITE_BIT, 0) != 0 &&
+       if (i2c_wait4bus(adap) < 0)
+               return -1;
+
+       if (i2c_write_addr(adap, dev, I2C_WRITE_BIT, 0) != 0 &&
            __i2c_write(adap, &a[4 - alen], alen) == alen) {
                i = __i2c_write(adap, data, length);
        }
index a2baec0ace2054b7a6e4870a08435b5818675e81..396fea89af545bb2eba8a1827a21f423e717d40b 100644 (file)
@@ -105,11 +105,11 @@ DECLARE_GLOBAL_DATA_PTR;
 # endif
 #endif
 
-#if !defined(CONFIG_SYS_SOFT_I2C_SPEED)
-#define CONFIG_SYS_SOFT_I2C_SPEED CONFIG_SYS_I2C_SPEED
+#if !defined(CONFIG_SYS_I2C_SOFT_SPEED)
+#define CONFIG_SYS_I2C_SOFT_SPEED CONFIG_SYS_I2C_SPEED
 #endif
-#if !defined(CONFIG_SYS_SOFT_I2C_SLAVE)
-#define CONFIG_SYS_SOFT_I2C_SLAVE CONFIG_SYS_I2C_SLAVE
+#if !defined(CONFIG_SYS_I2C_SOFT_SLAVE)
+#define CONFIG_SYS_I2C_SOFT_SLAVE CONFIG_SYS_I2C_SLAVE
 #endif
 
 /*-----------------------------------------------------------------------
index 9ac3969a07cfe1d71df571b978e815ff95abbf03..9847cf126bf26104c268c54ddead0f22033b881d 100644 (file)
@@ -453,6 +453,10 @@ void i2c_init_board(void)
 
 static void tegra_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
 {
+       /* No i2c support prior to relocation */
+       if (!(gd->flags & GD_FLG_RELOC))
+               return;
+
        /* This will override the speed selected in the fdt for that port */
        debug("i2c_init(speed=%u, slaveaddr=0x%x)\n", speed, slaveaddr);
        i2c_set_bus_speed(speed);
index 49e5cb9c2a494de55d097ba85d880348dd5a8bb8..bedf833f70dfac17344af3195cfb33582c96ab34 100644 (file)
@@ -32,6 +32,9 @@ COBJS-$(CONFIG_TEGRA_MMC) += tegra_mmc.o
 COBJS-$(CONFIG_DWMMC) += dw_mmc.o
 COBJS-$(CONFIG_EXYNOS_DWMMC) += exynos_dw_mmc.o
 COBJS-$(CONFIG_ZYNQ_SDHCI) += zynq_sdhci.o
+ifdef CONFIG_SPL_BUILD
+COBJS-$(CONFIG_SPL_MMC_BOOT) += fsl_esdhc_spl.o
+endif
 
 COBJS  := $(COBJS-y)
 SRCS   := $(COBJS:.o=.c)
diff --git a/drivers/mmc/fsl_esdhc_spl.c b/drivers/mmc/fsl_esdhc_spl.c
new file mode 100644 (file)
index 0000000..65c52a2
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <mmc.h>
+#include <malloc.h>
+
+/*
+ * The environment variables are written to just after the u-boot image
+ * on SDCard, so we must read the MBR to get the start address and code
+ * length of the u-boot image, then calculate the address of the env.
+ */
+#define ESDHC_BOOT_IMAGE_SIZE  0x48
+#define ESDHC_BOOT_IMAGE_ADDR  0x50
+#define MBRDBR_BOOT_SIG_55     0x1fe
+#define MBRDBR_BOOT_SIG_AA     0x1ff
+#define CONFIG_CFG_DATA_SECTOR 0
+
+/*
+ * 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
+ * from mmc into SDRAM and starts it from there.
+ */
+
+void __noreturn mmc_boot(void)
+{
+       __attribute__((noreturn)) void (*uboot)(void);
+       uint blk_start, blk_cnt, err;
+       u32 blklen;
+       uchar *tmp_buf;
+       uchar val;
+       uint i, byte_num;
+       u32 offset, code_len;
+       struct mmc *mmc;
+
+       mmc = find_mmc_device(0);
+       if (!mmc) {
+               puts("spl: mmc device not found!!\n");
+               hang();
+       }
+
+       blklen = mmc->read_bl_len;
+       tmp_buf = malloc(blklen);
+       if (!tmp_buf) {
+               puts("spl: malloc memory failed!!\n");
+               hang();
+       }
+       memset(tmp_buf, 0, blklen);
+
+       /*
+       * Read source addr from sd card
+       */
+       err = mmc->block_dev.block_read(0, CONFIG_CFG_DATA_SECTOR, 1, tmp_buf);
+       if (err != 1) {
+               puts("spl: mmc read failed!!\n");
+               free(tmp_buf);
+               hang();
+       }
+
+       val = *(tmp_buf + MBRDBR_BOOT_SIG_55);
+       if (0x55 != val) {
+               puts("spl: mmc signature is not valid!!\n");
+               free(tmp_buf);
+               hang();
+       }
+       val = *(tmp_buf + MBRDBR_BOOT_SIG_AA);
+       if (0xAA != val) {
+               puts("spl: mmc signature is not valid!!\n");
+               free(tmp_buf);
+               hang();
+       }
+
+       byte_num = 4;
+       offset = 0;
+       for (i = 0; i < byte_num; i++) {
+               val = *(tmp_buf + ESDHC_BOOT_IMAGE_ADDR + i);
+               offset = (offset << 8) + val;
+       }
+       offset += CONFIG_SYS_MMC_U_BOOT_OFFS;
+       /* Get the code size from offset 0x48 */
+       byte_num = 4;
+       code_len = 0;
+       for (i = 0; i < byte_num; i++) {
+               val = *(tmp_buf + ESDHC_BOOT_IMAGE_SIZE + i);
+               code_len = (code_len << 8) + val;
+       }
+       code_len -= CONFIG_SYS_MMC_U_BOOT_OFFS;
+       /*
+       * Load U-Boot image from mmc into RAM
+       */
+       blk_start = ALIGN(offset, mmc->read_bl_len) / mmc->read_bl_len;
+       blk_cnt = ALIGN(code_len, mmc->read_bl_len) / mmc->read_bl_len;
+       err = mmc->block_dev.block_read(0, blk_start, blk_cnt,
+                                       (uchar *)CONFIG_SYS_MMC_U_BOOT_DST);
+       if (err != blk_cnt) {
+               puts("spl: mmc read failed!!\n");
+               free(tmp_buf);
+               hang();
+       }
+
+       /*
+       * Clean d-cache and invalidate i-cache, to
+       * make sure that no stale data is executed.
+       */
+       flush_cache(CONFIG_SYS_MMC_U_BOOT_DST, CONFIG_SYS_MMC_U_BOOT_SIZE);
+
+       /*
+       * Jump to U-Boot image
+       */
+       uboot = (void *)CONFIG_SYS_MMC_U_BOOT_START;
+       (*uboot)();
+}
index 4da8db9bed2d1ef0e4f4d4b3460d8689eeeeb9e8..55026759ede4d41cbb26e2096a965e87e9b812b6 100644 (file)
@@ -1483,7 +1483,9 @@ int mmc_initialize(bd_t *bis)
        if (board_mmc_init(bis) < 0)
                cpu_mmc_init(bis);
 
+#ifndef CONFIG_SPL_BUILD
        print_mmc_devices(',');
+#endif
 
        do_preinit();
        return 0;
index a37663eeb471b19761691636ac7dcf3eb6732c2c..a389cd101c2f55e62ca8ab90efaf395234d98713 100644 (file)
@@ -1803,7 +1803,7 @@ static int flash_detect_legacy(phys_addr_t base, int banknum)
                                        break;
                                else
                                        unmap_physmem((void *)info->start[0],
-                                                     MAP_NOCACHE);
+                                                     info->portwidth);
                        }
                }
 
index e27e0b7050b002f5dbe1aab888f2c9060164f4c4..366dee667062d192b63af1f40556d61f77a8d460 100644 (file)
@@ -23,6 +23,7 @@ COBJS-$(CONFIG_SPL_NAND_SIMPLE) += nand_spl_simple.o
 COBJS-$(CONFIG_SPL_NAND_LOAD) += nand_spl_load.o
 COBJS-$(CONFIG_SPL_NAND_ECC) += nand_ecc.o
 COBJS-$(CONFIG_SPL_NAND_BASE) += nand_base.o
+COBJS-$(CONFIG_SPL_NAND_INIT) += nand.o
 
 else # not spl
 
index 7e5599ac634b4dd784efc38da4be4da3976418c3..a7476b49bb0e5688d2b84fccb10f7cf6f14cac7a 100644 (file)
@@ -34,7 +34,11 @@ static void nand_wait(void)
        }
 }
 
+#ifdef CONFIG_TPL_BUILD
+int nand_spl_load_image(uint32_t offs, unsigned int uboot_size, void *vdst)
+#else
 static int nand_load_image(uint32_t offs, unsigned int uboot_size, void *vdst)
+#endif
 {
        fsl_lbc_t *regs = LBC_BASE_ADDR;
        uchar *buf = (uchar *)CONFIG_SYS_NAND_BASE;
@@ -113,6 +117,15 @@ static int nand_load_image(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_image(offs, uboot_size, vdst)
+#endif
+
 /*
  * The main entry for NAND booting. It's necessary that SDRAM is already
  * configured and available since this code loads the main U-Boot image
@@ -124,17 +137,17 @@ void nand_boot(void)
        /*
         * Load U-Boot image from NAND into RAM
         */
-       nand_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
-                       CONFIG_SYS_NAND_U_BOOT_SIZE,
-                       (void *)CONFIG_SYS_NAND_U_BOOT_DST);
+       nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
+                           CONFIG_SYS_NAND_U_BOOT_SIZE,
+                           (void *)CONFIG_SYS_NAND_U_BOOT_DST);
 
 #ifdef CONFIG_NAND_ENV_DST
-       nand_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
-                       (void *)CONFIG_NAND_ENV_DST);
+       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                           (void *)CONFIG_NAND_ENV_DST);
 
 #ifdef CONFIG_ENV_OFFSET_REDUND
-       nand_load_image(CONFIG_ENV_OFFSET_REDUND, CONFIG_ENV_SIZE,
-                       (void *)CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE);
+       nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, CONFIG_ENV_SIZE,
+                           (void *)CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE);
 #endif
 #endif
 
index 1e0210a9a416a7513149466a443bc990115da24b..d149a6dae67f4d89b1bbe72b4a4d18a951564c8d 100644 (file)
@@ -51,7 +51,6 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
        struct jffs2_unknown_node cleanmarker;
        erase_info_t erase;
        unsigned long erase_length, erased_length; /* in blocks */
-       int bbtest = 1;
        int result;
        int percent_complete = -1;
        const char *mtd_device = meminfo->name;
@@ -102,7 +101,7 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts)
                        puts("Size of erase exceeds limit\n");
                        return -EFBIG;
                }
-               if (!opts->scrub && bbtest) {
+               if (!opts->scrub) {
                        int ret = mtd_block_isbad(meminfo, erase.addr);
                        if (ret > 0) {
                                if (!opts->quiet)
index e537fcf54c879e32bf61494a97e5a301e67e4715..191138ad188edaca986b3c8feda9233b8b6c7c3f 100644 (file)
@@ -11,6 +11,7 @@ LIB   := $(obj)libspi_flash.o
 
 ifdef CONFIG_SPL_BUILD
 COBJS-$(CONFIG_SPL_SPI_LOAD)   += spi_spl_load.o
+COBJS-$(CONFIG_SPL_SPI_BOOT)   += fsl_espi_spl.o
 endif
 
 COBJS-$(CONFIG_SPI_FLASH)      += spi_flash.o
index 6a92c4b774b41ff85dbb834ccc206e12b8a7017d..f34df43f58bfa76daee274cd931ff5b649415686 100644 (file)
@@ -252,7 +252,7 @@ static int dataflash_write_p2(struct spi_flash *flash,
        }
 
        debug("SF: AT45: Successfully programmed %zu bytes @ 0x%x\n",
-                       len, offset);
+             len, offset);
        ret = 0;
 
 out:
@@ -325,7 +325,7 @@ static int dataflash_write_at45(struct spi_flash *flash,
        }
 
        debug("SF: AT45: Successfully programmed %zu bytes @ 0x%x\n",
-                       len, offset);
+             len, offset);
        ret = 0;
 
 out:
@@ -387,7 +387,7 @@ static int dataflash_erase_p2(struct spi_flash *flash, u32 offset, size_t len)
        }
 
        debug("SF: AT45: Successfully erased %zu bytes @ 0x%x\n",
-                       len, offset);
+             len, offset);
        ret = 0;
 
 out:
@@ -450,7 +450,7 @@ static int dataflash_erase_at45(struct spi_flash *flash, u32 offset, size_t len)
        }
 
        debug("SF: AT45: Successfully erased %zu bytes @ 0x%x\n",
-                       len, offset);
+             len, offset);
        ret = 0;
 
 out:
@@ -476,7 +476,7 @@ struct spi_flash *spi_flash_probe_atmel(struct spi_slave *spi, u8 *idcode)
 
        if (i == ARRAY_SIZE(atmel_spi_flash_table)) {
                debug("SF: Unsupported DataFlash ID %02x\n",
-                               idcode[1]);
+                     idcode[1]);
                return NULL;
        }
 
index b16e7ab098ea36b7d1146ad7028fe3ec910e2e85..25cfc1252c406e1a73c5e82a1885eefc038c2d1e 100644 (file)
@@ -54,8 +54,7 @@ struct spi_flash *spi_flash_probe_eon(struct spi_slave *spi, u8 *idcode)
 
        flash->page_size = 256;
        flash->sector_size = 256 * 16 * 16;
-       flash->size = 256 * 16
-           * params->nr_sectors;
+       flash->size = 256 * 16 * params->nr_sectors;
 
        return flash;
 }
diff --git a/drivers/mtd/spi/fsl_espi_spl.c b/drivers/mtd/spi/fsl_espi_spl.c
new file mode 100644 (file)
index 0000000..6263d8c
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spi_flash.h>
+#include <malloc.h>
+
+#define ESPI_BOOT_IMAGE_SIZE   0x48
+#define ESPI_BOOT_IMAGE_ADDR   0x50
+#define CONFIG_CFG_DATA_SECTOR 0
+
+/*
+ * 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
+ * from SPI into SDRAM and starts it from there.
+ */
+void spi_boot(void)
+{
+       void (*uboot)(void) __noreturn;
+       u32 offset, code_len;
+       unsigned char *buf = NULL;
+       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();
+       }
+
+       /*
+       * Load U-Boot image from SPI flash into RAM
+       */
+       buf = malloc(flash->page_size);
+       if (buf == NULL) {
+               puts("\nmalloc failed");
+               hang();
+       }
+       memset(buf, 0, flash->page_size);
+
+       spi_flash_read(flash, CONFIG_CFG_DATA_SECTOR,
+                      flash->page_size, (void *)buf);
+       offset = *(u32 *)(buf + ESPI_BOOT_IMAGE_ADDR);
+       /* Skip spl code */
+       offset += CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS;
+       /* Get the code size from offset 0x48 */
+       code_len = *(u32 *)(buf + ESPI_BOOT_IMAGE_SIZE);
+       /* Skip spl code */
+       code_len = code_len - CONFIG_SPL_MAX_SIZE;
+       /* copy code to DDR */
+       spi_flash_read(flash, offset, code_len,
+                      (void *)CONFIG_SYS_SPI_FLASH_U_BOOT_DST);
+       /*
+       * Jump to U-Boot image
+       */
+       flush_cache(CONFIG_SYS_SPI_FLASH_U_BOOT_DST, code_len);
+       uboot = (void *)CONFIG_SYS_SPI_FLASH_U_BOOT_START;
+       (*uboot)();
+}
index 950c7770a961250f9f97fef66f3b49bee4e9dfff..b42581a70f80a48e9590608835dcce33dbf92518 100644 (file)
@@ -45,7 +45,7 @@ struct spi_flash *spi_flash_probe_gigadevice(struct spi_slave *spi, u8 *idcode)
 
        if (i == ARRAY_SIZE(gigadevice_spi_flash_table)) {
                debug("SF: Unsupported Gigadevice ID %02x%02x\n",
-                               idcode[1], idcode[2]);
+                     idcode[1], idcode[2]);
                return NULL;
        }
 
index f67ddd696b57916f3d0cf62a6c8b1626da037f0c..38f9d69169b2ea4baa60b9f9839557e16855aad6 100644 (file)
@@ -230,7 +230,8 @@ struct spi_flash *spi_fram_probe_ramtron(struct spi_slave *spi, u8 *idcode)
                /* JEDEC conformant RAMTRON id */
                for (i = 0; i < ARRAY_SIZE(ramtron_spi_fram_table); i++) {
                        params = &ramtron_spi_fram_table[i];
-                       if (idcode[1] == params->id1 && idcode[2] == params->id2)
+                       if (idcode[1] == params->id1 &&
+                           idcode[2] == params->id2)
                                goto found;
                }
                break;
@@ -251,7 +252,8 @@ struct spi_flash *spi_fram_probe_ramtron(struct spi_slave *spi, u8 *idcode)
                /* now find the device */
                for (i = 0; i < ARRAY_SIZE(ramtron_spi_fram_table); i++) {
                        params = &ramtron_spi_fram_table[i];
-                       if (!strcmp(params->name, CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC))
+                       if (!strcmp(params->name,
+                                   CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC))
                                goto found;
                }
                debug("SF: Unsupported non-JEDEC RAMTRON device "
@@ -264,7 +266,7 @@ struct spi_flash *spi_fram_probe_ramtron(struct spi_slave *spi, u8 *idcode)
 
        /* arriving here means no method has found a device we can handle */
        debug("SF/ramtron: unsupported device id0=%02x id1=%02x id2=%02x\n",
-               idcode[0], idcode[1], idcode[2]);
+             idcode[0], idcode[1], idcode[2]);
        return NULL;
 
 found:
index 47a48976b9649cdc473f3b152a740dcb44135fe3..fa7ac8c9322fd20ef39ef786b0fffd1ae9192b1b 100644 (file)
@@ -6,7 +6,7 @@
  * TsiChung Liew (Tsi-Chung.Liew@freescale.com),
  * and  Jason McMullan (mcmullan@netapp.com)
  *
- * SPDX-License-Identifier:    GPL-2.0+ 
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -122,7 +122,8 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
        }
 
        if (i == ARRAY_SIZE(spansion_spi_flash_table)) {
-               debug("SF: Unsupported SPANSION ID %04x %04x\n", jedec, ext_jedec);
+               debug("SF: Unsupported SPANSION ID %04x %04x\n",
+                     jedec, ext_jedec);
                return NULL;
        }
 
index 6a6fe37e0eea92e27817f47ca6c79c618325612c..5d5055ff38698c1a88ca4279be16b64333e873ab 100644 (file)
@@ -40,12 +40,13 @@ static int spi_flash_read_write(struct spi_slave *spi,
        ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
        if (ret) {
                debug("SF: Failed to send command (%zu bytes): %d\n",
-                               cmd_len, ret);
+                     cmd_len, ret);
        } else if (data_len != 0) {
-               ret = spi_xfer(spi, data_len * 8, data_out, data_in, SPI_XFER_END);
+               ret = spi_xfer(spi, data_len * 8, data_out, data_in,
+                                       SPI_XFER_END);
                if (ret)
                        debug("SF: Failed to transfer %zu bytes of data: %d\n",
-                                       data_len, ret);
+                             data_len, ret);
        }
 
        return ret;
@@ -86,7 +87,7 @@ int spi_flash_cmd_wait_ready(struct spi_flash *flash, unsigned long timeout)
        ret = spi_xfer(spi, 8, &cmd, NULL, SPI_XFER_BEGIN);
        if (ret) {
                debug("SF: fail to read %s status register\n",
-                       cmd == CMD_READ_STATUS ? "read" : "flag");
+                     cmd == CMD_READ_STATUS ? "read" : "flag");
                return ret;
        }
 
@@ -144,7 +145,7 @@ int spi_flash_write_common(struct spi_flash *flash, const u8 *cmd,
        ret = spi_flash_cmd_wait_ready(flash, timeout);
        if (ret < 0) {
                debug("SF: write %s timed out\n",
-                       timeout == SPI_FLASH_PROG_TIMEOUT ?
+                     timeout == SPI_FLASH_PROG_TIMEOUT ?
                        "program" : "page erase");
                return ret;
        }
@@ -554,12 +555,14 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
                goto err_manufacturer_probe;
        }
 #endif
+#ifndef CONFIG_SPL_BUILD
        printf("SF: Detected %s with page size ", flash->name);
        print_size(flash->sector_size, ", total ");
        print_size(flash->size, "");
        if (flash->memory_map)
                printf(", mapped at %p", flash->memory_map);
        puts("\n");
+#endif
 #ifndef CONFIG_SPI_FLASH_BAR
        if (flash->size > SPI_FLASH_16MB_BOUN) {
                puts("SF: Warning - Only lower 16MiB accessible,");
index 7c799ca482ca6617ad29fe05ddd52b927f0a5e68..29355307f3689c0b61f2c6432a0033c4504a8c0f 100644 (file)
@@ -39,7 +39,7 @@ void spl_spi_load_image(void)
 
        /* Load u-boot, mkimage header is 64 bytes. */
        spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS, 0x40,
-                       (void *) header);
+                      (void *)header);
        spl_parse_image_header(header);
        spi_flash_read(flash, CONFIG_SYS_SPI_U_BOOT_OFFS,
                       spl_image.size, (void *)spl_image.load_addr);
index 95f5490c350ac0f85287b518f1b2427286c30ee3..256867c84481f1238de91a907b829369020efe43 100644 (file)
@@ -19,7 +19,7 @@
 #include "spi_flash_internal.h"
 
 #define CMD_SST_BP             0x02    /* Byte Program */
-#define CMD_SST_AAI_WP         0xAD    /* Auto Address Increment Word Program */
+#define CMD_SST_AAI_WP         0xAD    /* Auto Address Incr Word Program */
 
 #define SST_SR_WIP             (1 << 0)        /* Write-in-Progress */
 #define SST_SR_WEL             (1 << 1)        /* Write enable */
@@ -50,47 +50,61 @@ static const struct sst_spi_flash_params sst_spi_flash_table[] = {
                .flags = SST_FEAT_WP,
                .nr_sectors = 128,
                .name = "SST25VF040B",
-       },{
+       },
+       {
                .idcode1 = 0x8e,
                .flags = SST_FEAT_WP,
                .nr_sectors = 256,
                .name = "SST25VF080B",
-       },{
+       },
+       {
                .idcode1 = 0x41,
                .flags = SST_FEAT_WP,
                .nr_sectors = 512,
                .name = "SST25VF016B",
-       },{
+       },
+       {
                .idcode1 = 0x4a,
                .flags = SST_FEAT_WP,
                .nr_sectors = 1024,
                .name = "SST25VF032B",
-       },{
+       },
+       {
                .idcode1 = 0x4b,
                .flags = SST_FEAT_MBP,
                .nr_sectors = 2048,
                .name = "SST25VF064C",
-       },{
+       },
+       {
                .idcode1 = 0x01,
                .flags = SST_FEAT_WP,
                .nr_sectors = 16,
                .name = "SST25WF512",
-       },{
+       },
+       {
                .idcode1 = 0x02,
                .flags = SST_FEAT_WP,
                .nr_sectors = 32,
                .name = "SST25WF010",
-       },{
+       },
+       {
                .idcode1 = 0x03,
                .flags = SST_FEAT_WP,
                .nr_sectors = 64,
                .name = "SST25WF020",
-       },{
+       },
+       {
                .idcode1 = 0x04,
                .flags = SST_FEAT_WP,
                .nr_sectors = 128,
                .name = "SST25WF040",
        },
+       {
+               .idcode1 = 0x05,
+               .flags = SST_FEAT_WP,
+               .nr_sectors = 256,
+               .name = "SST25WF080",
+       },
 };
 
 static int
@@ -105,7 +119,7 @@ sst_byte_write(struct spi_flash *flash, u32 offset, const void *buf)
        };
 
        debug("BP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
-               spi_w8r8(flash->spi, CMD_READ_STATUS), buf, cmd[0], offset);
+             spi_w8r8(flash->spi, CMD_READ_STATUS), buf, cmd[0], offset);
 
        ret = spi_flash_cmd_write_enable(flash);
        if (ret)
@@ -152,11 +166,11 @@ sst_write_wp(struct spi_flash *flash, u32 offset, size_t len, const void *buf)
 
        for (; actual < len - 1; actual += 2) {
                debug("WP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
-                    spi_w8r8(flash->spi, CMD_READ_STATUS), buf + actual, cmd[0],
-                    offset);
+                     spi_w8r8(flash->spi, CMD_READ_STATUS), buf + actual,
+                     cmd[0], offset);
 
                ret = spi_flash_cmd_write(flash->spi, cmd, cmd_len,
-                                         buf + actual, 2);
+                                       buf + actual, 2);
                if (ret) {
                        debug("SF: sst word program failed\n");
                        break;
index 0ca00f158c620646194f0c8254dae67d6af2685e..c5fa64e376cb235a075039eb4bb6f002c1b99d62 100644 (file)
@@ -8,7 +8,7 @@
  * Copyright (C) 2004-2007 Freescale Semiconductor, Inc.
  * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
  *
- * SPDX-License-Identifier:    GPL-2.0+ 
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -18,7 +18,7 @@
 #include "spi_flash_internal.h"
 
 /* M25Pxx-specific commands */
-#define CMD_M25PXX_RES         0xab    /* Release from DP, and Read Signature */
+#define CMD_M25PXX_RES 0xab    /* Release from DP, and Read Signature */
 
 struct stmicro_spi_flash_params {
        u16 id;
@@ -150,7 +150,7 @@ static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = {
        },
 };
 
-struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
+struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 *idcode)
 {
        const struct stmicro_spi_flash_params *params;
        struct spi_flash *flash;
@@ -166,17 +166,17 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
                        idcode[0] = 0x20;
                        idcode[1] = 0x20;
                        idcode[2] = idcode[3] + 1;
-               } else
+               } else {
                        return NULL;
+               }
        }
 
        id = ((idcode[1] << 8) | idcode[2]);
 
        for (i = 0; i < ARRAY_SIZE(stmicro_spi_flash_table); i++) {
                params = &stmicro_spi_flash_table[i];
-               if (params->id == id) {
+               if (params->id == id)
                        break;
-               }
        }
 
        if (i == ARRAY_SIZE(stmicro_spi_flash_table)) {
index c399bf14d1f6ec52c719ec26e55c83ea2d0ea3d4..b31911a4055b14cc984f7b314a96c94c9219894a 100644 (file)
@@ -123,7 +123,7 @@ struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode)
 
        if (i == ARRAY_SIZE(winbond_spi_flash_table)) {
                debug("SF: Unsupported Winbond ID %02x%02x\n",
-                               idcode[1], idcode[2]);
+                     idcode[1], idcode[2]);
                return NULL;
        }
 
index 7c6e362f0ea3ead4dede1c212702b229f9086f4b..c98867dc4aa39b9fc0144973f4c2096151ee7146 100644 (file)
@@ -1,25 +1,6 @@
-/*-----------------------------------------------------------------------------+
- *   This source code is dual-licensed.  You may use it under the terms of the
- *   GNU General Public License version 2, or under the license below.
- *
- *      This source code has been made available to you by IBM on an AS-IS
- *      basis.  Anyone receiving this source is licensed under IBM
- *      copyrights to use it in any way he or she deems fit, including
- *      copying it, modifying it, compiling it, and redistributing it either
- *      with or without modifications.  No license under IBM patents or
- *      patent applications is to be implied by the copyright license.
- *
- *      Any user of this software should understand that IBM cannot provide
- *      technical support for this software and will not be responsible for
- *      any consequences resulting from the use of this software.
- *
- *      Any person who transfers this source code or any derivative work
- *      must include the IBM copyright notice, this paragraph, and the
- *      preceding two paragraphs in the transferred software.
- *
- *      COPYRIGHT   I B M   CORPORATION 1995
- *      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
- *-----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*-----------------------------------------------------------------------------+
  *
  *  File Name: enetemac.c
index f5017682d496c0f4cf004ca9893ad509515c4f2e..7f0cfe594024f07c1ad7e898da39aba7eeee3dbf 100644 (file)
@@ -157,7 +157,7 @@ static void ax88180_mac_reset (struct eth_device *dev)
        OUTW (dev, MISC_RESET_MAC, MISC);
        tmpval = INW (dev, MISC);
 
-       for (i = 0; i < (sizeof (program_seq) / sizeof (program_seq[0])); i++)
+       for (i = 0; i < ARRAY_SIZE(program_seq); i++)
                OUTW (dev, program_seq[i].value, program_seq[i].offset);
 }
 
index 422c2c691ed31216ae60c2e2b0768bc251ce464a..cb099cd84962fa7ba09da632683c1fd8622466ff 100644 (file)
@@ -341,7 +341,9 @@ static int fm_eth_startup(struct fm_eth *fm_eth)
        mac->init_mac(mac);
 
        /* For some reason we need to set SPEED_100 */
-       if ((fm_eth->enet_if == PHY_INTERFACE_MODE_SGMII) && mac->set_if_mode)
+       if (((fm_eth->enet_if == PHY_INTERFACE_MODE_SGMII) ||
+            (fm_eth->enet_if == PHY_INTERFACE_MODE_QSGMII)) &&
+             mac->set_if_mode)
                mac->set_if_mode(mac, fm_eth->enet_if, SPEED_100);
 
        /* init bmi rx port, IM mode and disable */
index 4bc8f35a1cbf3a6387bc6579766d0ff4def8b692..bca20b3330361690e1aed72d7386b5a6ae3b24a5 100644 (file)
@@ -396,6 +396,8 @@ int fm_init_common(int index, struct ccsr_fman *reg)
        }
 #elif defined(CONFIG_SYS_QE_FMAN_FW_IN_REMOTE)
        void *addr = (void *)CONFIG_SYS_QE_FMAN_FW_ADDR;
+#else
+       void *addr = NULL;
 #endif
 
        /* Upload the Fman microcode if it's present */
index 144e109fd0336ec3a812ee53592afe94c2c9472a..592a67f2a58536ef2712b37150a739888e97f587 100644 (file)
@@ -90,6 +90,7 @@ static void memac_set_interface_mode(struct fsl_enet_mac *mac,
                if_mode |= (IF_MODE_GMII | IF_MODE_RM);
                break;
        case PHY_INTERFACE_MODE_SGMII:
+       case PHY_INTERFACE_MODE_QSGMII:
                if_mode &= ~IF_MODE_MASK;
                if_mode |= (IF_MODE_GMII);
                break;
index 10c141fa2634b0d266c6278d63966b1fc629ac29..6253f22f75de8b938c7aeb25db8e0ae958aae49a 100644 (file)
@@ -114,7 +114,45 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
                        return PHY_INTERFACE_MODE_SGMII;
                break;
        default:
-               return PHY_INTERFACE_MODE_NONE;
+               break;
+       }
+
+       /* handle QSGMII */
+       switch (port) {
+       case FM1_DTSEC1:
+       case FM1_DTSEC2:
+       case FM1_DTSEC3:
+       case FM1_DTSEC4:
+               /* check lane G on SerDes1 */
+               if (is_serdes_configured(QSGMII_FM1_A))
+                       return PHY_INTERFACE_MODE_QSGMII;
+               break;
+       case FM1_DTSEC5:
+       case FM1_DTSEC6:
+       case FM1_DTSEC9:
+       case FM1_DTSEC10:
+               /* check lane C on SerDes1 */
+               if (is_serdes_configured(QSGMII_FM1_B))
+                       return PHY_INTERFACE_MODE_QSGMII;
+               break;
+       case FM2_DTSEC1:
+       case FM2_DTSEC2:
+       case FM2_DTSEC3:
+       case FM2_DTSEC4:
+               /* check lane G on SerDes2 */
+               if (is_serdes_configured(QSGMII_FM2_A))
+                       return PHY_INTERFACE_MODE_QSGMII;
+               break;
+       case FM2_DTSEC5:
+       case FM2_DTSEC6:
+       case FM2_DTSEC9:
+       case FM2_DTSEC10:
+               /* check lane C on SerDes2 */
+               if (is_serdes_configured(QSGMII_FM2_B))
+                       return PHY_INTERFACE_MODE_QSGMII;
+               break;
+       default:
+               break;
        }
 
        return PHY_INTERFACE_MODE_NONE;
index 1ad952d3a9a89ffb3e0a1a03337ac055099d711d..6391f9b32fb297de6ddc43cf7eb8fa041cf219db 100644 (file)
@@ -504,7 +504,7 @@ int mcdmafec_initialize(bd_t * bis)
        u32 tmp = CONFIG_SYS_INTSRAM + 0x2000;
 #endif
 
-       for (i = 0; i < sizeof(fec_info) / sizeof(fec_info[0]); i++) {
+       for (i = 0; i < ARRAY_SIZE(fec_info); i++) {
 
                dev =
                    (struct eth_device *)memalign(CONFIG_SYS_CACHELINE_SIZE,
index e911dd31ec7692025462a57e5d08e9d0f630c7aa..8eee272cf1442145df4c308956d3c9ac8df0c09c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Faraday 10/100Mbps Ethernet Controller
  *
- * (C) Copyright 2010 Faraday Technology
+ * (C) Copyright 2013 Faraday Technology
  * Dante Su <dantesu@faraday-tech.com>
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -54,11 +54,11 @@ struct ftmac110_chip {
        uint32_t lnkup;
        uint32_t phy_addr;
 
-       struct ftmac110_rxd *rxd;
+       struct ftmac110_desc *rxd;
        ulong                rxd_dma;
        uint32_t             rxd_idx;
 
-       struct ftmac110_txd *txd;
+       struct ftmac110_desc *txd;
        ulong                txd_dma;
        uint32_t             txd_idx;
 };
@@ -69,7 +69,7 @@ static uint16_t mdio_read(struct eth_device *dev,
        uint8_t phyaddr, uint8_t phyreg)
 {
        struct ftmac110_chip *chip = dev->priv;
-       struct ftmac110_regs __iomem *regs = chip->regs;
+       struct ftmac110_regs *regs = chip->regs;
        uint32_t tmp, ts;
        uint16_t ret = 0xffff;
 
@@ -98,7 +98,7 @@ static void mdio_write(struct eth_device *dev,
        uint8_t phyaddr, uint8_t phyreg, uint16_t phydata)
 {
        struct ftmac110_chip *chip = dev->priv;
-       struct ftmac110_regs __iomem *regs = chip->regs;
+       struct ftmac110_regs *regs = chip->regs;
        uint32_t tmp, ts;
 
        tmp = PHYCR_WRITE
@@ -195,7 +195,7 @@ static int ftmac110_reset(struct eth_device *dev)
        uint8_t *a;
        uint32_t i, maccr;
        struct ftmac110_chip *chip = dev->priv;
-       struct ftmac110_regs __iomem *regs = chip->regs;
+       struct ftmac110_regs *regs = chip->regs;
 
        /* 1. MAC reset */
        writel(MACCR_RESET, &regs->maccr);
@@ -212,14 +212,15 @@ static int ftmac110_reset(struct eth_device *dev)
        /* 1-1. Init tx ring */
        for (i = 0; i < CFG_TXDES_NUM; ++i) {
                /* owned by SW */
-               chip->txd[i].ct[0] = 0;
+               chip->txd[i].ctrl &= cpu_to_le64(FTMAC110_TXD_CLRMASK);
        }
        chip->txd_idx = 0;
 
        /* 1-2. Init rx ring */
        for (i = 0; i < CFG_RXDES_NUM; ++i) {
                /* owned by HW */
-               chip->rxd[i].ct[0] = cpu_to_le32(FTMAC110_RXCT0_OWNER);
+               chip->rxd[i].ctrl &= cpu_to_le64(FTMAC110_RXD_CLRMASK);
+               chip->rxd[i].ctrl |= cpu_to_le64(FTMAC110_RXD_OWNER);
        }
        chip->rxd_idx = 0;
 
@@ -268,7 +269,7 @@ static int ftmac110_probe(struct eth_device *dev, bd_t *bis)
 static void ftmac110_halt(struct eth_device *dev)
 {
        struct ftmac110_chip *chip = dev->priv;
-       struct ftmac110_regs __iomem *regs = chip->regs;
+       struct ftmac110_regs *regs = chip->regs;
 
        writel(0, &regs->imr);
        writel(0, &regs->maccr);
@@ -279,8 +280,9 @@ static void ftmac110_halt(struct eth_device *dev)
 static int ftmac110_send(struct eth_device *dev, void *pkt, int len)
 {
        struct ftmac110_chip *chip = dev->priv;
-       struct ftmac110_regs __iomem *regs = chip->regs;
-       struct ftmac110_txd *des;
+       struct ftmac110_regs *regs = chip->regs;
+       struct ftmac110_desc *txd;
+       uint64_t ctrl;
 
        if (!chip->lnkup)
                return 0;
@@ -292,24 +294,26 @@ static int ftmac110_send(struct eth_device *dev, void *pkt, int len)
 
        len = max(60, len);
 
-       des = &chip->txd[chip->txd_idx];
-       if (le32_to_cpu(des->ct[0]) & FTMAC110_TXCT0_OWNER) {
+       txd = &chip->txd[chip->txd_idx];
+       ctrl = le64_to_cpu(txd->ctrl);
+       if (ctrl & FTMAC110_TXD_OWNER) {
                /* kick-off Tx DMA */
                writel(0xffffffff, &regs->txpd);
                printf("ftmac110: out of txd\n");
                return 0;
        }
 
-       memcpy(des->vbuf, (void *)pkt, len);
-       dma_map_single(des->vbuf, len, DMA_TO_DEVICE);
+       memcpy(txd->vbuf, (void *)pkt, len);
+       dma_map_single(txd->vbuf, len, DMA_TO_DEVICE);
 
-       /* update len, fts and lts */
-       des->ct[1] &= cpu_to_le32(FTMAC110_TXCT1_END);
-       des->ct[1] |= cpu_to_le32(FTMAC110_TXCT1_LEN(len)
-               | FTMAC110_TXCT1_FTS | FTMAC110_TXCT1_LTS);
-
-       /* set owner bit and clear others */
-       des->ct[0] = cpu_to_le32(FTMAC110_TXCT0_OWNER);
+       /* clear control bits */
+       ctrl &= FTMAC110_TXD_CLRMASK;
+       /* set len, fts and lts */
+       ctrl |= FTMAC110_TXD_LEN(len) | FTMAC110_TXD_FTS | FTMAC110_TXD_LTS;
+       /* set owner bit */
+       ctrl |= FTMAC110_TXD_OWNER;
+       /* write back to descriptor */
+       txd->ctrl = cpu_to_le64(ctrl);
 
        /* kick-off Tx DMA */
        writel(0xffffffff, &regs->txpd);
@@ -322,23 +326,24 @@ static int ftmac110_send(struct eth_device *dev, void *pkt, int len)
 static int ftmac110_recv(struct eth_device *dev)
 {
        struct ftmac110_chip *chip = dev->priv;
-       struct ftmac110_rxd *des;
-       uint32_t ct0, len, rlen = 0;
+       struct ftmac110_desc *rxd;
+       uint32_t len, rlen = 0;
+       uint64_t ctrl;
        uint8_t *buf;
 
        if (!chip->lnkup)
                return 0;
 
        do {
-               des = &chip->rxd[chip->rxd_idx];
-               ct0 = le32_to_cpu(des->ct[0]);
-               if (ct0 & FTMAC110_RXCT0_OWNER)
+               rxd = &chip->rxd[chip->rxd_idx];
+               ctrl = le64_to_cpu(rxd->ctrl);
+               if (ctrl & FTMAC110_RXD_OWNER)
                        break;
 
-               len = FTMAC110_RXCT0_LEN(ct0);
-               buf = des->vbuf;
+               len = (uint32_t)FTMAC110_RXD_LEN(ctrl);
+               buf = rxd->vbuf;
 
-               if (ct0 & FTMAC110_RXCT0_ERRMASK) {
+               if (ctrl & FTMAC110_RXD_ERRMASK) {
                        printf("ftmac110: rx error\n");
                } else {
                        dma_map_single(buf, len, DMA_FROM_DEVICE);
@@ -347,7 +352,9 @@ static int ftmac110_recv(struct eth_device *dev)
                }
 
                /* owned by hardware */
-               des->ct[0] = cpu_to_le32(FTMAC110_RXCT0_OWNER);
+               ctrl &= FTMAC110_RXD_CLRMASK;
+               ctrl |= FTMAC110_RXD_OWNER;
+               rxd->ctrl |= cpu_to_le64(ctrl);
 
                chip->rxd_idx = (chip->rxd_idx + 1) % CFG_RXDES_NUM;
        } while (0);
@@ -422,42 +429,43 @@ int ftmac110_initialize(bd_t *bis)
 
        /* allocate tx descriptors (it must be 16 bytes aligned) */
        chip->txd = dma_alloc_coherent(
-               sizeof(struct ftmac110_txd) * CFG_TXDES_NUM, &chip->txd_dma);
+               sizeof(struct ftmac110_desc) * CFG_TXDES_NUM, &chip->txd_dma);
        if (!chip->txd)
                panic("ftmac110: out of memory 3\n");
        memset(chip->txd, 0,
-              sizeof(struct ftmac110_txd) * CFG_TXDES_NUM);
+              sizeof(struct ftmac110_desc) * CFG_TXDES_NUM);
        for (i = 0; i < CFG_TXDES_NUM; ++i) {
                void *va = memalign(ARCH_DMA_MINALIGN, CFG_XBUF_SIZE);
+
                if (!va)
                        panic("ftmac110: out of memory 4\n");
-               chip->txd[i].vbuf  = va;
-               chip->txd[i].buf   = cpu_to_le32(virt_to_phys(va));
-               chip->txd[i].ct[1] = 0;
-               chip->txd[i].ct[0] = 0; /* owned by SW */
+               chip->txd[i].vbuf = va;
+               chip->txd[i].pbuf = cpu_to_le32(virt_to_phys(va));
+               chip->txd[i].ctrl = 0;  /* owned by SW */
        }
-       chip->txd[i - 1].ct[1] |= cpu_to_le32(FTMAC110_TXCT1_END);
+       chip->txd[i - 1].ctrl |= cpu_to_le64(FTMAC110_TXD_END);
        chip->txd_idx = 0;
 
        /* allocate rx descriptors (it must be 16 bytes aligned) */
        chip->rxd = dma_alloc_coherent(
-               sizeof(struct ftmac110_rxd) * CFG_RXDES_NUM, &chip->rxd_dma);
+               sizeof(struct ftmac110_desc) * CFG_RXDES_NUM, &chip->rxd_dma);
        if (!chip->rxd)
                panic("ftmac110: out of memory 4\n");
        memset((void *)chip->rxd, 0,
-              sizeof(struct ftmac110_rxd) * CFG_RXDES_NUM);
+              sizeof(struct ftmac110_desc) * CFG_RXDES_NUM);
        for (i = 0; i < CFG_RXDES_NUM; ++i) {
                void *va = memalign(ARCH_DMA_MINALIGN, CFG_XBUF_SIZE + 2);
+
                if (!va)
                        panic("ftmac110: out of memory 5\n");
                /* it needs to be exactly 2 bytes aligned */
                va = ((uint8_t *)va + 2);
-               chip->rxd[i].vbuf  = va;
-               chip->rxd[i].buf   = cpu_to_le32(virt_to_phys(va));
-               chip->rxd[i].ct[1] = cpu_to_le32(CFG_XBUF_SIZE);
-               chip->rxd[i].ct[0] = cpu_to_le32(FTMAC110_RXCT0_OWNER);
+               chip->rxd[i].vbuf = va;
+               chip->rxd[i].pbuf = cpu_to_le32(virt_to_phys(va));
+               chip->rxd[i].ctrl = cpu_to_le64(FTMAC110_RXD_OWNER
+                       | FTMAC110_RXD_BUFSZ(CFG_XBUF_SIZE));
        }
-       chip->rxd[i - 1].ct[1] |= cpu_to_le32(FTMAC110_RXCT1_END);
+       chip->rxd[i - 1].ctrl |= cpu_to_le64(FTMAC110_RXD_END);
        chip->rxd_idx = 0;
 
        eth_register(dev);
index 19e4248bd3859fc6204cf336207b7f0ec82e59ee..2772ae7b703e0e583fa3da81cd4c4b6ce6bc5e50 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Faraday 10/100Mbps Ethernet Controller
  *
- * (C) Copyright 2010 Faraday Technology
+ * (C) Copyright 2013 Faraday Technology
  * Dante Su <dantesu@faraday-tech.com>
  *
  * SPDX-License-Identifier:    GPL-2.0+
@@ -135,42 +135,42 @@ struct ftmac110_regs {
 /*
  * descriptor structure
  */
-struct ftmac110_rxd {
-       uint32_t ct[2];
-       uint32_t buf;
-       void    *vbuf; /* reserved */
+struct ftmac110_desc {
+       uint64_t ctrl;
+       uint32_t pbuf;
+       void    *vbuf;
 };
 
-#define FTMAC110_RXCT0_OWNER       BIT_MASK(31) /* owner: 1=HW, 0=SW */
-#define FTMAC110_RXCT0_FRS         BIT_MASK(29) /* first pkt desc */
-#define FTMAC110_RXCT0_LRS         BIT_MASK(28) /* last pkt desc */
-#define FTMAC110_RXCT0_ODDNB       BIT_MASK(22) /* odd nibble */
-#define FTMAC110_RXCT0_RUNT        BIT_MASK(21) /* runt pkt */
-#define FTMAC110_RXCT0_FTL         BIT_MASK(20) /* frame too long */
-#define FTMAC110_RXCT0_CRC         BIT_MASK(19) /* pkt crc error */
-#define FTMAC110_RXCT0_ERR         BIT_MASK(18) /* bus error */
-#define FTMAC110_RXCT0_ERRMASK     (0x1f << 18) /* all errors */
-#define FTMAC110_RXCT0_BCST        BIT_MASK(17) /* Bcst pkt */
-#define FTMAC110_RXCT0_MCST        BIT_MASK(16) /* Mcst pkt */
-#define FTMAC110_RXCT0_LEN(x)      ((x) & 0x7ff)
-
-#define FTMAC110_RXCT1_END         BIT_MASK(31)
-#define FTMAC110_RXCT1_BUFSZ(x)    ((x) & 0x7ff)
-
-struct ftmac110_txd {
-       uint32_t ct[2];
-       uint32_t buf;
-       void    *vbuf; /* reserved */
-};
-
-#define FTMAC110_TXCT0_OWNER       BIT_MASK(31) /* owner: 1=HW, 0=SW */
-#define FTMAC110_TXCT0_COL         0x00000003   /* collision */
-
-#define FTMAC110_TXCT1_END         BIT_MASK(31) /* end of ring */
-#define FTMAC110_TXCT1_TXIC        BIT_MASK(30) /* tx done interrupt */
-#define FTMAC110_TXCT1_TX2FIC      BIT_MASK(29) /* tx fifo interrupt */
-#define FTMAC110_TXCT1_FTS         BIT_MASK(28) /* first pkt desc */
-#define FTMAC110_TXCT1_LTS         BIT_MASK(27) /* last pkt desc */
-#define FTMAC110_TXCT1_LEN(x)      ((x) & 0x7ff)
+#define FTMAC110_RXD_END        ((uint64_t)1 << 63)
+#define FTMAC110_RXD_BUFSZ(x)   (((uint64_t)(x) & 0x7ff) << 32)
+
+#define FTMAC110_RXD_OWNER      ((uint64_t)1 << 31) /* owner: 1=HW, 0=SW */
+#define FTMAC110_RXD_FRS        ((uint64_t)1 << 29) /* first pkt desc */
+#define FTMAC110_RXD_LRS        ((uint64_t)1 << 28) /* last pkt desc */
+#define FTMAC110_RXD_ODDNB      ((uint64_t)1 << 22) /* odd nibble */
+#define FTMAC110_RXD_RUNT       ((uint64_t)1 << 21) /* runt pkt */
+#define FTMAC110_RXD_FTL        ((uint64_t)1 << 20) /* frame too long */
+#define FTMAC110_RXD_CRC        ((uint64_t)1 << 19) /* pkt crc error */
+#define FTMAC110_RXD_ERR        ((uint64_t)1 << 18) /* bus error */
+#define FTMAC110_RXD_ERRMASK    ((uint64_t)0x1f << 18)
+#define FTMAC110_RXD_BCST       ((uint64_t)1 << 17) /* Bcst pkt */
+#define FTMAC110_RXD_MCST       ((uint64_t)1 << 16) /* Mcst pkt */
+#define FTMAC110_RXD_LEN(x)     ((uint64_t)((x) & 0x7ff))
+
+#define FTMAC110_RXD_CLRMASK   \
+       (FTMAC110_RXD_END | FTMAC110_RXD_BUFSZ(0x7ff))
+
+#define FTMAC110_TXD_END    ((uint64_t)1 << 63) /* end of ring */
+#define FTMAC110_TXD_TXIC   ((uint64_t)1 << 62) /* tx done interrupt */
+#define FTMAC110_TXD_TX2FIC ((uint64_t)1 << 61) /* tx fifo interrupt */
+#define FTMAC110_TXD_FTS    ((uint64_t)1 << 60) /* first pkt desc */
+#define FTMAC110_TXD_LTS    ((uint64_t)1 << 59) /* last pkt desc */
+#define FTMAC110_TXD_LEN(x) ((uint64_t)((x) & 0x7ff) << 32)
+
+#define FTMAC110_TXD_OWNER  ((uint64_t)1 << 31)        /* owner: 1=HW, 0=SW */
+#define FTMAC110_TXD_COL    ((uint64_t)3)              /* collision */
+
+#define FTMAC110_TXD_CLRMASK    \
+       (FTMAC110_TXD_END)
 
 #endif  /* FTMAC110_H */
index 2bf00685337fb7e1df4c1729e2049e5133703b83..229658abc8eaedd5ca3d502b8677e942f960928c 100644 (file)
@@ -766,7 +766,7 @@ static int lan91c96_detect_chip(struct eth_device *dev)
        SMC_SELECT_BANK(dev, 3);
        chip_id = (SMC_inw(dev, 0xA) & LAN91C96_REV_CHIPID) >> 4;
        SMC_SELECT_BANK(dev, 0);
-       for (r = 0; r < sizeof(supported_chips) / sizeof(struct id_type); r++)
+       for (r = 0; r < ARRAY_SIZE(supported_chips); r++)
                if (chip_id == supported_chips[r].id)
                        return r;
        return 0;
index 6b537d505ecb2bd8e293de1c2bc915dd919038a5..7c4b210b00111070b4b037cb944a4e1481969bd1 100644 (file)
@@ -543,7 +543,7 @@ int mcffec_initialize(bd_t * bis)
        u32 tmp = CONFIG_SYS_INIT_RAM_ADDR + 0x1000;
 #endif
 
-       for (i = 0; i < sizeof(fec_info) / sizeof(fec_info[0]); i++) {
+       for (i = 0; i < ARRAY_SIZE(fec_info); i++) {
 
                dev =
                    (struct eth_device *)memalign(CONFIG_SYS_CACHELINE_SIZE,
index 2f2269d5311e459d8734ef088590a4cf4d1f8d8f..17a780c854d8fbb8f6f393bd50083d37a92fa7d9 100644 (file)
@@ -170,7 +170,7 @@ int mii_discover_phy(struct eth_device *dev)
                        printf("PHY @ 0x%x pass %d\n", phyno, pass);
 #endif
 
-                       for (i = 0; (i < (sizeof(phyinfo) / sizeof(phy_info_t)))
+                       for (i = 0; (i < ARRAY_SIZE(phyinfo))
                                && (phyinfo[i].phyid != 0); i++) {
                                if (phyinfo[i].phyid == phytype) {
 #ifdef ET_DEBUG
index 39391580feda2e7c86b504f62787d28c8fa2a9cd..e6cd3e9ba07e23fb6f3e1893afd0cc9f828e1648 100644 (file)
@@ -228,7 +228,7 @@ int get_prom(u8* mac_addr, u8* base_addr)
 
        mdelay (10);
 
-       for (i = 0; i < sizeof (program_seq) / sizeof (program_seq[0]); i++)
+       for (i = 0; i < ARRAY_SIZE(program_seq); i++)
                n2k_outb (program_seq[i].value, program_seq[i].offset);
 
        PRINTK ("PROM:");
index 7185558955cf6c46a5c69bc8d8e6d2e1c4c0ce7c..05a9e053ff00c5234d38c55319012c4efcaf93cb 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index b93a8c8a31e5e548609784881cf1fcc8a1570821..8249737b0c2c2c80d0e587a964ae8cbd19a3d133 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 44328473e63cd75128c57147614b6633ce8b3981..dbe32e133c2d2103da4a11cfc8e864aed4ebe28a 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 6df3307e5dc8d8f3608d3cdc5b4908633bfcf3a5..c0b82d99b7f51fca63e390f6a1f70ea9baa2bd71 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 5540b33ae8a90b6a53aaf546246a4252bc9fea0f..65113448d27b7a732a4dd0efde1d28d8b78a0fdc 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d282aa6725b850608e5b324698bc93a53deec64e..bfe606f507b326634309b95e73783e251e34ed9a 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d46c47c2ef23fcf5e3838f23d3792560fd47da77..023cf50248707fb99330c4c5e3b646b5834199be 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 1facb89fd8587d668469b8f9a4e6c8d0b52fb085..c265d942e01dfe5da29e40d30e185ae80921a0b5 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 8b3c1d9a807916d09b33e228c771df7e23fb1edd..3d3050d5ce43e850d83e3a45cea690ae0be5140d 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 529063d1ffac957d1e3a76ede3110ecfad2ca90a..5b3be0b6c1dc21f982ca93cd58019f7d8ef68b4f 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index c5b680a74278ac2e3bf1c24452ac8428431be067..1f7624016afc7ac47bcae9cdff0812db956d12a4 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
@@ -144,7 +120,7 @@ void ixEthDBFeatureCapabilityScan(void)
 
                 /* find the traffic class definition index compatible with the current NPE A functionality ID */
                 for (trafficClassDefinitionIndex = 0 ;
-                    trafficClassDefinitionIndex < sizeof (ixEthDBTrafficClassDefinitions) / sizeof (ixEthDBTrafficClassDefinitions[0]);
+                    trafficClassDefinitionIndex < ARRAY_SIZE(ixEthDBTrafficClassDefinitions);
                     trafficClassDefinitionIndex++)
                 {
                     if (ixEthDBTrafficClassDefinitions[trafficClassDefinitionIndex][IX_ETH_DB_NPE_A_FUNCTIONALITY_ID_INDEX] == npeAImageId.functionalityId)
@@ -155,7 +131,7 @@ void ixEthDBFeatureCapabilityScan(void)
                 }
 
                 /* select the default case if we went over the array boundary */
-                if (trafficClassDefinitionIndex == sizeof (ixEthDBTrafficClassDefinitions) / sizeof (ixEthDBTrafficClassDefinitions[0]))
+                if (trafficClassDefinitionIndex == ARRAY_SIZE(ixEthDBTrafficClassDefinitions))
                 {
                     trafficClassDefinitionIndex = 0; /* the first record is the default case */
                 }
index 6fb5ab6acd1f844723229e3c5a4ef6ec01cce4a2..c0ae5624ff58a0805c745091e9e16d79cf709b6d 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index f1b18e6b48273f88c26b8158459643680efa17ce..9493a5b48bcbbe4d8211018ae51dc8c9e6815940 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 840674152f2cfe086dfa17f99740c6431d2676a0..1080d112de52e1193f962c904cb57cccbaa3d4df 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 133cbef8d640370b2a388a49b49532823dd6f723..78fce4bd9247593c2ccc0d78cb8eebf174682f70 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d47ffec8b5a750410d290ebd56121915e00dc51b..30e1f61ab99bb0500fc5b648bb8601753b0784db 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 813e4ee6b5a9c073881af2a525fa7da289a95463..92af331a540e3c0c0048f2046d861512075862a3 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 912e60861341fa3db1869af7b9456341d6d9e676..d74f1215fdce60640925ca5f5426500f76dcce51 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 75fdebe483cf8c9d39cf9dc56bc4f0f87b4a31c6..4fd28da080d10c9b2a8af379d83ab11fe02449fb 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 029f7ac93c9fd4412c48611b97c111c23def1a5a..e12be0d884ab330d574c94d7b1667de9da224b24 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 24acc246b79ca642983d1f878785903dc7749d25..40d4470befbb23134d54b667d32fe2350daa4c47 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 522a30b1ddb6fb7c3c87930617f769d65edaae3c..483e348934c8c57225b4ded5886fd965267d600f 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 0a6043f3640567c2cce37cc88b17ae966a12fb20..44edd47f2f5742c12fb41353ebe2d32c1f8f3bb8 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index f8b439d9da5cdd47ff62bb1677eb11752984ae4e..27f3548ce0b075f5d5e8d94508932be577f81797 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index b6728e4a4469de82746970c35e79c3a22abc1d2a..0b6807d9d7dc92053543ff0f83f5000b0f68a013 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index bfeac877901f7f4fd5da249e04bb49703162f211..0e5c428323a91b8e06e8d2f8cdfb87999e509408 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 048448388216d687f16d30cc59cccb16f63ec3e8..52f73d7ad8bceb6017ffe45515f98c97401faee0 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index aaffeeb0ccb4401ca42e660bb8430c13ca6e41b7..8d94dfac3d3a744940b5b4f5b8884fea468862dd 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 18cac5020886a4c8e7c40e3f1c1f78cd17b729a0..db50d22d1be4e9ed767dc3e5bfbaf0bc6964d569 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 2870ff7da540131cff571eb96ab2026b0f5f7eaf..5adabd82fc4d00652a3ed1d59139c0f142cbdeef 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 092d480c652e6736cee4b798f3091b1dd5ebce6a..eaa9a21ad738c7972cccb1c23d2bcbd24d24fc47 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 57c8be30e51ded9e273443c72a82eccad0670116..273c3733f373f5060de055c04e7f77ad5a0dde5f 100644 (file)
  * @par
  * Copyright 2001-2005, Intel Corporation.
  * All rights reserved.
- * 
- * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
+ *
  * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 27bc9b730c9de92ff95bfc14c0f801644547e509..8b7038870a5c9c03982a823b84b395bf3773da43 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 8e083a63bfcb2ccc687ac9ae2cfe91b3ad863f9b..c539d090715eb6c4abbff031d24f6f6c938572ee 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index d37f9f93064f29c9e86f791b5f19c15ee8e1a3b0..082f677e62ea645b86a59d126f239cd964e36ee3 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index fa8db477afc6f1ce6477d870630b4b17e1e8eb51..f70ba05d9e1828b64535776624a2f26b5d0eaede 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 34df92bf79f63c6a5bab9156f321851e54d5e306..bf3acdc10c24b1c6f8b424cdf3585da18f9d9fd7 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
@@ -66,8 +42,7 @@ ixOsalMemMapFind (UINT32 requestedAddress,
 {
     UINT32 mapIndex;
 
-    UINT32 numMapElements =
-        sizeof (ixOsalGlobalMemoryMap) / sizeof (IxOsalMemoryMap);
+    UINT32 numMapElements = ARRAY_SIZE(ixOsalGlobalMemoryMap);
 
     for (mapIndex = 0; mapIndex < numMapElements; mapIndex++)
     {
index 3db1a70da996ab444b01ac11bcbc1830368b60f0..72d22e5882c5935d0019c0817352ab96730f9b3f 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 45a5c68b16e8fdfe21105fcffbb4f23c80550ab7..5fe368bdafdc932f100f1420d0ba7339cd2bc04b 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 672bec1189f61a9dc93200832848b0397d21791f..33de7f6e42008d66816d2f9575fd25de51e47cf5 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index e18c6c4c1e99f44ae0f5f7b908232c11dfc6ec98..a9aa36804b429e79bca289542cf838728b44013d 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index e6a4967fcdc52c0f97318c1b2b3e8b42e79aea54..b3caae19b10db89121fdcd9f125d079226f64942 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 738651322c8a6adcfa2aa07ab4251bb24d2625ad..69138ccded9b81495fb3cda76f1b01f566988ff1 100644 (file)
  * @par
  * Copyright 2001-2005, Intel Corporation.
  * All rights reserved.
- * 
- * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
+ *
  * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 25a3e8539e376344b18c1efd52f93042e1b69553..2baeaafeb1d32b8b20dcb0bfcbc7bf1e71c7e883 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 61ca96c977f4b22b99074c5e05db3ff835d39998..14687e61afb9692404fa4a679b3c39ba6183c1bf 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 8885736246d2860f6fe4ca57ba02a1e832eebcc8..13ee0f4f1184f01ff7657f051b71d21b43c725bf 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 26ec327a8e8cffabfb1270134fe6d5612eeb5501..b64bb2dd9099368d211089ad6c3eb8cee904a7dd 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index eae8b3f2731718d8906df9dbc713ce7ff7f1dafd..8be0cafc44fd4dc42413eefbee8a1d98483ba6f4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 73c3be29abab93d41879dfdebf42baef4d2b37d4..7d74771c285893f549cb3311497b474f447a1aa4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  *
index 8624c3328e377fb48f992d4a26bbbde88e19255b..6c8d12f3947a66330b301107dccc3c471a4faa17 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index ae7b2434c337c14202907c2b44ab4ca0a1ca6f16..291b66215155ab82b514343d3a68e710ba6a8d11 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 7b8734563a3a4874ccab9f34384b3947bf1f509f..1a696b0e66e9f6a889ce628b8f3303521bca423d 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index fcf523fca4a79660cff09f76a105f3e7a8b49a89..805b8c9bd655383bbfc1803d7c8bee0ba5179f57 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 45c7527de9d63acc909965fc0cc73c88aa296634..a62e72cc1b825720ac9097aaf10b9127dc6499e5 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index ff706c451de895c1ce978c933d048882ce3d3290..cc7e01066706a627513c24248e85789246d0397f 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  *
index 8b8e6b256c41378e7bcbd203f37b6bb1a90de3da..dce43d9a1978a494aef3995d00df9e4a297bc89e 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 93e9d98e76d6075f3a830ff9d8905d5fee9dfc41..4eafab25857e468d4eb8cd27ee0bd26c6d98e702 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 568d4a0fa4ff5ed366cbbfd42a94b7f5adc31077..aff30f00afff927d3d958c5121e7d3541603abe4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index e5fd16e2fb1769debc4d3b0e0097e71b2bac20a8..65661a0dd5d3e4c06ec9b8fbf074735a47820436 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index eda3e303be0e78d7598189797765e2c279cb7d36..1348f4e3c8572f692578f468840631183f16f801 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index dfdfe1ae57d7b92295ba53a6f19a8eb52050f35f..9c4a6a4ec441a6e97f13eef75cd9307adaa6d232 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  *
index 1d8b24fdf66a5bf3eeab7a1a7f7c3376a980507f..91ab441b26e0fe74e8e8137eff113b82b57d569a 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 1d6b0bb20dee24c1bc45e65b300eb4b122b86402..b3576236ff4cb73f5cc36e53fbf4e8ca76fcf21c 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index ff18160c1fd13f27596b2faffb37352cc207962c..5907fd59e25f46bb05ac4fa3c87c6b63d369355e 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index c3acbdddef735f57b26460d0050075b82e0e2d12..9f5e4678329dd27b7575ad95f402570b20bc8aeb 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
@@ -106,7 +82,7 @@ static const IxEthDBPortDefinition ixEthDBPortDefinitions[] =
  * @def IX_ETH_DB_NUMBER_OF_PORTS
  * @brief number of supported ports 
  */
-#define IX_ETH_DB_NUMBER_OF_PORTS (sizeof (ixEthDBPortDefinitions) / sizeof (ixEthDBPortDefinitions[0]))
+#define IX_ETH_DB_NUMBER_OF_PORTS ARRAY_SIZE(ixEthDBPortDefinitions)
 
 /**
  * @def IX_ETH_DB_UNKNOWN_PORT
index 6d34889452d559b113cd02a0f9b53f3a57b48c4f..6276930dc7448240219fa46b4cc06c93622be298 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d173d120823b89addb3d37e140df18b67e804ca6..ddc10a5789078e89b1e67a9230875c5f7fed8f66 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 93d3b790b2bac564768ef0ad3c6dbce22a990937..8d7de3d4ce2d7d1771fd405cf9ee0cc38d3ead54 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 104b65c1f0418c31a23d4ab852631e9b58b472f3..0c48a6971a93b8a16d693659b245eb481b063912 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 21bdedc5a76f217d01ab12015293cb3c67f168f4..20bfa76c363c39fb97f0e1b4a2de2ba8e45dcd70 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 1662a001396f1b250b0efdf1cf44f6150cef1f10..987b00b5620b5738021ba2c086f907a6816fcffc 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 52d5716f72dc9429aab9ad02148a91226d016f7a..da71c420238198493e626bc83f5607c78dedc42e 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 92c6b24b46eb58d24c4e7b9045e4baf957cd9b53..033154046fcbdb7192a3275245c62c8f2add0251 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 90669c27e78c71748fcccc66abf5c257f4ff0ea9..e145b4365f9039aca565b60e7dfa53c15d2dcb6f 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index f514c2e7d949fbbba37182dec1e167b2c81d199d..f87ee4b840d724fa42e02e5c18db1a77424a6f89 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 622f879a41de71c04640c4ed3a42d97b9acd8662..34dd3a441c4a9fa1ccc94674c8a3a0711077e9a8 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index e32906a63a7f14511cfab2258bfdbae4eff933ee..771fe74203d4982a9e78f8549fc1586cf0e3e2f4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index f6821266774516bde47e917e4cb61b1182c37f66..f6c2e46de39122dbd565b2d37ec75f5364fd101d 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 876a438cec6a4bee07f7ae8ba693f3a798d149a3..bb1f4abdf9516817f536313d1c8db5ce9b8768ff 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index e25e532b1664bc6f591ae96f4c24c6e88bad992d..989db2c57e0788f21551d8fa5bf3275da091b43e 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 20ee38b0628ca26a99869913ee213b944009cc59..3a2bf9fa48ddd49a48cd9ebb8e96f8147846ca4b 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 8c8b9ab7f03dd9c64e638fbed2c762553fa63896..ca47f7f1080708d941f6b7e1f176a0d362cca8a3 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 68f34ef3573f5848a38b6f12d80ddc3375be6335..51ee9e289b48237028a0353d855a265831026b13 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 6416bedcbcfb0b0d00e16935b35ffddc858d6c7b..7b2afa0a3c25e039e2b51bece4984e915cd393b9 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 977cc94a7f2f949032325598945c591ed85026bc..0f060cc60412221a75d2743a347b9e66ba210435 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 40cd496c943592b840ea14db13afd6027670fa4b..b094fd99cbb81329f11ac3ff3ec8d3c84b77a598 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index dea8cafa259fca741e3cb54cb41897c02791a029..faf6638380e5e83cd347caaa541a8eaf52c43009 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 893d8030a101b449e8b46782b5c56cb4fd039aaa..01dcd7ad4fa05a1eb23ff86789925f1e4166ed24 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index a297a97d8bfd9a7f5a1eeb4d8aa4ed47c32ce91e..68341dca2f963e98efbece3f8b59b0bee0176439 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  *
index b7de712bc51f33a547f604ab5c1a41276e785a79..8b2ee964a2a5734aa3f9fa21f84a183a54513abe 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 4a983c79116559c520234d11f24bd3ce8dc5395d..1e39be2782fd1c7bb07067439b1c85cf0d62c507 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * This module contains the implementation of the OS Services buffer pool
index 2c8592fe80e179e26591711e8bb1b1f1a2366aa2..2632cef75195d394c573bc33732535f3c740a600 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 218e140934bd2bec6bff4637c065c9a2b11e10a0..7b573a455509917db75569cdf53a8f93541da3d2 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 62e8a790b932995ee08fa05bdf93a7b3a2735890..d3b88500e49b34a10e9d793661cf0d1ef8a94578 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d662cd3eeec289f85b3754467632e0bfa0d095d2..c5a6f685504ba14009179a919132c6c2a9293b89 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 0d6cd8ccefd6e54484626d9a534cb3f72a0482f1..383e30af567d4f8248b1132f12ee1dce0665bd95 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 58e994106579bfeed64b0ad2b165786902210c62..896db14ac6f159958ce5a7a62adf81fe1a40d1d3 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 4ce37c3f67216d185eb9810b3b597bb0ea77ca8a..8af108126b311d0db99068d8bcf208e16f910dc6 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 28c44af3273407ef6c2bb162cbe6f0f6db361da6..ac2631c9daa9769fcd03c71cd70b3122adb96a75 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 04a4f515aa9e6deb8ad52ea02710fe0996f3ef43..ac26bb6bf56aff45248ff8611702407948aa8cba 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index ea9f30731abc1bc81e233386b4d723609b4d745e..8e4a6fb5116be2a009a8e765e1cb733215f9ddca 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index be1e27255d1ccfc1352bfa1504fab94753f81991..cf50a7a64bc34af42dc86ea6a9e1df5ae291d19b 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 4cf80d31eb7a33d5bc057581e8f476e903a5c1a3..46df29d3d26cfddc136fc86dc3b0f88cfc021fc4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index fe570e641752066a7e8c6c1042cc4b00f3bb3eb7..d9e20c0a55bdb81357ec8f075c3f6f26818af3b1 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 3881a3b6dac73001eb347e489b4a55ab8c3e2bf8..9b6cc72d9faa9187f7932fae5dc431625133e608 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 0ccff84aeedcc2b056861c787725e1a3915f6b5d..761779d885dad985c55a59a75cbc374d718b12be 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 634b494aece40478084b828a02b4086690ac44a4..c9deb544ce6fbcaeefc88580c06e367b4c69d5d6 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 497ed047101841c3416d8c4a69af10b742079d74..1f9e373cc7db4b20a16eae69b46146ca61ace922 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
  * @par
  * Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 
  *      The Regents of the University of California. All rights reserved.
- *
- * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
  * @par
  * -- End of Copyright Notice --
  */
index 684b52edb4b6cf276db8e50d47814e0f40a8cab0..376c4980cfc155fbedd477784ed0e7d9d3e4b575 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d56e796393b355a56b1647558db3620d29bcc160..81449f19b349c1bb8ac7ea0256d3f7e2d7be226d 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 3b1c7394745e5121cf1fc92e3716755fe6d5d231..01de2c5e52962e53e54afef3a6ca8ab98d7f67a5 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index ea6d64d0006a410f41f18cc056307eab3d3d1365..7cb9c18c996e87bdaf6b5875c9c98314bef19e41 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 9e7fb87be5b4614087753c152d4c635914fdb04a..be7472a2ea300d50344017c3bd46d157671347a4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index f89402620cb3462a72563489c6ef2216e1fc9f91..a1f4d21c1ba5e6bbf59711a5e2db7b33ea4d4372 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 8e46586ea0f515cf3f229c1d2f1662da272439f0..53b961673f577d2796e5f4c06bf61f0afcd05e54 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 44a94fb30fe93fa7dd6f994378e71fdd72bbd93c..104c733e3b84f9e47d2385407c464ba9f5d2d6c8 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 47ce3a2d80d69250a8d2ff87233ac6f27e80e800..e037823102e6c175dc0c1676a90843b5e2c3b5fe 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 06e71debfb2507987173b598eb006e073c3aaee2..aefa70f0b75e928325393124bba982254fe16c6c 100644 (file)
  * All rights reserved.
  *
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
@@ -91,12 +67,6 @@ typedef volatile UINT32 VUINT32;
  */
 typedef volatile INT32 VINT32;
 
-
-#ifndef NUMELEMS
-#define NUMELEMS(x) (sizeof(x) / sizeof((x)[0]))
-#endif
-
-
 /**
  * @ingroup IxOsalTypes
  *
index f2a73db8b97fdc49dcc9352e6bfe2b0c6f6b20cc..ec34df6f718eb27914f1e701fc9f4615fa9ce6b8 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 62fe1714f191b902a63ac23e3bb26747b8b11c41..4d44838cb1569d4a017e623366bd9ba56ae5a29d 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 7e4527a0556cf1492618beac820ccdd19c95f1d7..2781ec851c3aa0a33e08ae5f4d3440dbfe475002 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 03d7e0709220a3e6d1f8aae8c9cfcc21414c0441..23a45413bc008b96076e112cf5faf6cc4b8e90ec 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index b63c4a9ef88a5a454b882ddb7c3403a44b85c091..1b9cfd2e389e4c0027f33d76c9725e2f9b2ede91 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 0183596af54f741fd0e8f60bb3757ef4af6afa5d..1c5d674ffa11d32a8e97f62a4bed0670caad4e4f 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 71a3f8588e94fc3412e3d1287e9d1961b87ba201..b68a3f1327defce0752fae8cd741824d0f340b09 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 6b685b8a2859d916872775135db95e1901dc805f..941236a38e92b2d0aa4a6c76f3b48d6deeb1c139 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 8612670a17487b17518fa0bc7e58fdf55c0f17fc..363622fba61ba55d2e81e362ada968fc5a3aacd3 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index c9dae1ef0492b8da569eb6f0a3f384a034ffd41b..5480214e9f17d03ee56f381ab5ef336e8203f45d 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index b65d621e3bc1a986616f4ba96037ab71e3354436..28b924723f51cb51a759e3a6161fcd75b6e9a9b4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 61d911b9add215c8c1ada45e2a1153a00054345c..b4a9def274eb8b37930567a0e276bc630cb70508 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 52c4c1cfa365d2ae98d508515461028ba5b910bb..f8bcffe8bdcaeb8f03348c35be257817feecb4db 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 669dd3ef286f559c0b09c8aa96cf70f69ac6193c..a865b933a32a4a206cb5d11251d1b4df41fc7314 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index c4c5a2d26776ec16730a30f0254aa7b080c97f2a..f936a50bb383453c2c5ad097bba73af1de11631b 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index 03a44441c510e5c89c7fa8369fdd3ae7bf3e4c61..ff23b22fe781ce95b2b7e2dca1a84a69819d2839 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
 */
index 27796ede842e2512337f202c615cdbc0c5f33e60..1769dcda45b2c352fbcec952fb014e0c5e6f89f8 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  */
index d32ace20b5ebe2bfbf0d3811f9cccb51ec9c2eb0..4c599996cf9fbf863ed669d21d54c19d87fd9de4 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index 53f5942f9790999c66686a1778299e9ae105801c..b4cf7602ae67fd426ff5577714170e3dc8de2a89 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index 8575096722ffc28f1adc9011a11fd9505a9b2682..e14d561c28157ad1fc679ea7c03b51447901f1c9 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index b59f7d08732c86744c47927b69ecfb410acc38ed..eaa2629b8d08117a0ac6bb4b36af9548f416b527 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index f7bb029d66fb02fe265b8faec1e855d07a35690f..0006b227c648ab66c3ad5537ebb536bc0fc42e64 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index fc7b1e993a9dbdf3a8454edefcd0fc55b1959fee..6945506049e6c8fca9bd3e4fcf6d4a6cc56d003a 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index 4387b2a0525fa027b41cb2972db9b9c476530819..def891b8620321950ad5f641522404b3465eaadc 100644 (file)
  * All rights reserved.
  * 
  * @par
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Intel Corporation nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * @par
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * 
+ * SPDX-License-Identifier:    BSD-3-Clause
  * @par
  * -- End of Copyright Notice --
  * = PRODUCT
index a04779ab463e085e0dc2e427aeab6c299bec878f..07fcb60e9d1e8a5f8412983e0cf6e85090e968c9 100644 (file)
@@ -1,25 +1,6 @@
-/*-----------------------------------------------------------------------------+
-  |   This source code is dual-licensed.  You may use it under the terms of the
-  |   GNU General Public License version 2, or under the license below.
-  |
-  |      This source code has been made available to you by IBM on an AS-IS
-  |      basis.  Anyone receiving this source is licensed under IBM
-  |      copyrights to use it in any way he or she deems fit, including
-  |      copying it, modifying it, compiling it, and redistributing it either
-  |      with or without modifications.  No license under IBM patents or
-  |      patent applications is to be implied by the copyright license.
-  |
-  |      Any user of this software should understand that IBM cannot provide
-  |      technical support for this software and will not be responsible for
-  |      any consequences resulting from the use of this software.
-  |
-  |      Any person who transfers this source code or any derivative work
-  |      must include the IBM copyright notice, this paragraph, and the
-  |      preceding two paragraphs in the transferred software.
-  |
-  |      COPYRIGHT   I B M   CORPORATION 1995
-  |      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-  +-----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ */
 /*-----------------------------------------------------------------------------+
   |
   |  File Name:         miiphy.c
index 606a103ce642c92fd5e45a38fda61bd46c622b95..ddbbc35e27e4e6e95ad9ce5ea084d6c42db2362c 100644 (file)
 
 #define PHY_AUTONEGOTIATE_TIMEOUT 5000
 
-/* RTL8211B PHY Status Register */
-#define MIIM_RTL8211B_PHY_STATUS       0x11
-#define MIIM_RTL8211B_PHYSTAT_SPEED    0xc000
-#define MIIM_RTL8211B_PHYSTAT_GBIT     0x8000
-#define MIIM_RTL8211B_PHYSTAT_100      0x4000
-#define MIIM_RTL8211B_PHYSTAT_DUPLEX   0x2000
-#define MIIM_RTL8211B_PHYSTAT_SPDDONE  0x0800
-#define MIIM_RTL8211B_PHYSTAT_LINK     0x0400
-
-
-/* RealTek RTL8211B */
-static int rtl8211b_config(struct phy_device *phydev)
+/* RTL8211x PHY Status Register */
+#define MIIM_RTL8211x_PHY_STATUS       0x11
+#define MIIM_RTL8211x_PHYSTAT_SPEED    0xc000
+#define MIIM_RTL8211x_PHYSTAT_GBIT     0x8000
+#define MIIM_RTL8211x_PHYSTAT_100      0x4000
+#define MIIM_RTL8211x_PHYSTAT_DUPLEX   0x2000
+#define MIIM_RTL8211x_PHYSTAT_SPDDONE  0x0800
+#define MIIM_RTL8211x_PHYSTAT_LINK     0x0400
+
+
+/* RealTek RTL8211x */
+static int rtl8211x_config(struct phy_device *phydev)
 {
        phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);
 
@@ -32,20 +32,20 @@ static int rtl8211b_config(struct phy_device *phydev)
        return 0;
 }
 
-static int rtl8211b_parse_status(struct phy_device *phydev)
+static int rtl8211x_parse_status(struct phy_device *phydev)
 {
        unsigned int speed;
        unsigned int mii_reg;
 
-       mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211B_PHY_STATUS);
+       mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211x_PHY_STATUS);
 
-       if (!(mii_reg & MIIM_RTL8211B_PHYSTAT_SPDDONE)) {
+       if (!(mii_reg & MIIM_RTL8211x_PHYSTAT_SPDDONE)) {
                int i = 0;
 
                /* in case of timeout ->link is cleared */
                phydev->link = 1;
                puts("Waiting for PHY realtime link");
-               while (!(mii_reg & MIIM_RTL8211B_PHYSTAT_SPDDONE)) {
+               while (!(mii_reg & MIIM_RTL8211x_PHYSTAT_SPDDONE)) {
                        /* Timeout reached ? */
                        if (i > PHY_AUTONEGOTIATE_TIMEOUT) {
                                puts(" TIMEOUT !\n");
@@ -57,29 +57,29 @@ static int rtl8211b_parse_status(struct phy_device *phydev)
                                putc('.');
                        udelay(1000);   /* 1 ms */
                        mii_reg = phy_read(phydev, MDIO_DEVAD_NONE,
-                                       MIIM_RTL8211B_PHY_STATUS);
+                                       MIIM_RTL8211x_PHY_STATUS);
                }
                puts(" done\n");
                udelay(500000); /* another 500 ms (results in faster booting) */
        } else {
-               if (mii_reg & MIIM_RTL8211B_PHYSTAT_LINK)
+               if (mii_reg & MIIM_RTL8211x_PHYSTAT_LINK)
                        phydev->link = 1;
                else
                        phydev->link = 0;
        }
 
-       if (mii_reg & MIIM_RTL8211B_PHYSTAT_DUPLEX)
+       if (mii_reg & MIIM_RTL8211x_PHYSTAT_DUPLEX)
                phydev->duplex = DUPLEX_FULL;
        else
                phydev->duplex = DUPLEX_HALF;
 
-       speed = (mii_reg & MIIM_RTL8211B_PHYSTAT_SPEED);
+       speed = (mii_reg & MIIM_RTL8211x_PHYSTAT_SPEED);
 
        switch (speed) {
-       case MIIM_RTL8211B_PHYSTAT_GBIT:
+       case MIIM_RTL8211x_PHYSTAT_GBIT:
                phydev->speed = SPEED_1000;
                break;
-       case MIIM_RTL8211B_PHYSTAT_100:
+       case MIIM_RTL8211x_PHYSTAT_100:
                phydev->speed = SPEED_100;
                break;
        default:
@@ -89,28 +89,53 @@ static int rtl8211b_parse_status(struct phy_device *phydev)
        return 0;
 }
 
-static int rtl8211b_startup(struct phy_device *phydev)
+static int rtl8211x_startup(struct phy_device *phydev)
 {
        /* Read the Status (2x to make sure link is right) */
        genphy_update_link(phydev);
-       rtl8211b_parse_status(phydev);
+       rtl8211x_parse_status(phydev);
 
        return 0;
 }
 
+/* Support for RTL8211B PHY */
 static struct phy_driver RTL8211B_driver = {
        .name = "RealTek RTL8211B",
        .uid = 0x1cc910,
        .mask = 0xfffff0,
        .features = PHY_GBIT_FEATURES,
-       .config = &rtl8211b_config,
-       .startup = &rtl8211b_startup,
+       .config = &rtl8211x_config,
+       .startup = &rtl8211x_startup,
+       .shutdown = &genphy_shutdown,
+};
+
+/* Support for RTL8211E-VB-CG, RTL8211E-VL-CG and RTL8211EG-VB-CG PHYs */
+static struct phy_driver RTL8211E_driver = {
+       .name = "RealTek RTL8211E",
+       .uid = 0x1cc915,
+       .mask = 0xfffff0,
+       .features = PHY_GBIT_FEATURES,
+       .config = &rtl8211x_config,
+       .startup = &rtl8211x_startup,
+       .shutdown = &genphy_shutdown,
+};
+
+/* Support for RTL8211DN PHY */
+static struct phy_driver RTL8211DN_driver = {
+       .name = "RealTek RTL8211DN",
+       .uid = 0x1cc914,
+       .mask = 0xfffff0,
+       .features = PHY_GBIT_FEATURES,
+       .config = &rtl8211x_config,
+       .startup = &rtl8211x_startup,
        .shutdown = &genphy_shutdown,
 };
 
 int phy_realtek_init(void)
 {
        phy_register(&RTL8211B_driver);
+       phy_register(&RTL8211E_driver);
+       phy_register(&RTL8211DN_driver);
 
        return 0;
 }
index f64eb8fe04dd6df261ba33f83c0026a8bf41fdc6..5936f9bd7f31f18b2a53a369b2130eb7a86caa15 100644 (file)
@@ -62,7 +62,7 @@ static struct phy_driver lan8710_driver = {
        .name = "SMSC LAN8710/LAN8720",
        .uid = 0x0007c0f0,
        .mask = 0xffff0,
-       .features = PHY_GBIT_FEATURES,
+       .features = PHY_BASIC_FEATURES,
        .config = &genphy_config_aneg,
        .startup = &smsc_startup,
        .shutdown = &genphy_shutdown,
index 17ca961abf93f74e38a06c25bf1669164ba78bc0..d55db1a0b691a3243d84f7e817ee69771a1df36d 100644 (file)
@@ -28,12 +28,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #include <asm/io.h>
 #include <asm/fsl_pci.h>
 
-/* Freescale-specific PCI config registers */
-#define FSL_PCI_PBFR           0x44
-#define FSL_PCIE_CAP_ID                0x4c
-#define FSL_PCIE_CFG_RDY       0x4b0
-#define FSL_PROG_IF_AGENT      0x1
-
 #ifndef CONFIG_SYS_PCI_MEMORY_BUS
 #define CONFIG_SYS_PCI_MEMORY_BUS 0
 #endif
@@ -424,6 +418,15 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
        udelay(1);
 #endif
        if (pcie_cap == PCI_CAP_ID_EXP) {
+               if (block_rev >= PEX_IP_BLK_REV_3_0) {
+#define PEX_CSR0_LTSSM_MASK    0xFC
+#define PEX_CSR0_LTSSM_SHIFT   2
+                       ltssm = (in_be32(&pci->pex_csr0)
+                               & PEX_CSR0_LTSSM_MASK) >> PEX_CSR0_LTSSM_SHIFT;
+                       enabled = (ltssm == 0x11) ? 1 : 0;
+               } else {
+               /* pci_hose_read_config_word(hose, dev, PCI_LTSSM, &ltssm); */
+               /* enabled = ltssm >= PCI_LTSSM_L0; */
                pci_hose_read_config_word(hose, dev, PCI_LTSSM, &ltssm);
                enabled = ltssm >= PCI_LTSSM_L0;
 
@@ -456,6 +459,7 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
                                        PCI_BASE_ADDRESS_0, pcicsrbar);
                }
 #endif
+       }
 
 #ifdef CONFIG_SYS_P4080_ERRATUM_PCIE_A003
                if (enabled == 0) {
@@ -564,6 +568,10 @@ int fsl_is_pci_agent(struct pci_controller *hose)
                u8 prog_if;
 
                pci_hose_read_config_byte(hose, dev, PCI_CLASS_PROG, &prog_if);
+               /* Programming Interface (PCI_CLASS_PROG)
+                * 0 == pci host or pcie root-complex,
+                * 1 == pci agent or pcie end-point
+                */
                return (prog_if == FSL_PROG_IF_AGENT);
        }
 }
index 66b3bab4625e4642ff46526b4f0c972eeb683d44..ac768708eadf22aacc4f2e6e15c66d07a5c248f5 100644 (file)
@@ -98,7 +98,7 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)
 
 int pmic_probe(struct pmic *p)
 {
-       I2C_SET_BUS(p->bus);
+       i2c_set_bus_num(p->bus);
        debug("Bus: %d PMIC:%s probed!\n", p->bus, p->name);
        if (i2c_probe(pmic_i2c_addr)) {
                printf("Can't find PMIC:%s\n", p->name);
index c217c88e59aec10c47bb547520d5eb7a1e61906c..5dfb02f47045a173ea83816893e7474881d5d5d9 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <common.h>
-#include <stdio_dev.h>
+#include <serial.h>
 
 #if defined(CONFIG_CPU_V6)
 /*
 
 #define TIMEOUT_COUNT 0x4000000
 
-int arm_dcc_init(void)
+static int arm_dcc_init(void)
 {
        return 0;
 }
 
-int arm_dcc_getc(void)
+static int arm_dcc_getc(void)
 {
        int ch;
        register unsigned int reg;
@@ -107,7 +107,7 @@ int arm_dcc_getc(void)
        return ch;
 }
 
-void arm_dcc_putc(char ch)
+static void arm_dcc_putc(char ch)
 {
        register unsigned int reg;
        unsigned int timeout_count = TIMEOUT_COUNT;
@@ -123,13 +123,7 @@ void arm_dcc_putc(char ch)
                write_dcc(ch);
 }
 
-void arm_dcc_puts(const char *s)
-{
-       while (*s)
-               arm_dcc_putc(*s++);
-}
-
-int arm_dcc_tstc(void)
+static int arm_dcc_tstc(void)
 {
        register unsigned int reg;
 
@@ -138,22 +132,27 @@ int arm_dcc_tstc(void)
        return reg;
 }
 
-static struct stdio_dev arm_dcc_dev;
+static void arm_dcc_setbrg(void)
+{
+}
 
-int drv_arm_dcc_init(void)
+static struct serial_device arm_dcc_drv = {
+       .name   = "arm_dcc",
+       .start  = arm_dcc_init,
+       .stop   = NULL,
+       .setbrg = arm_dcc_setbrg,
+       .putc   = arm_dcc_putc,
+       .puts   = default_serial_puts,
+       .getc   = arm_dcc_getc,
+       .tstc   = arm_dcc_tstc,
+};
+
+void arm_dcc_initialize(void)
 {
-       strcpy(arm_dcc_dev.name, "dcc");
-       arm_dcc_dev.ext = 0;    /* No extensions */
-       arm_dcc_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_OUTPUT;
-       arm_dcc_dev.tstc = arm_dcc_tstc;        /* 'tstc' function */
-       arm_dcc_dev.getc = arm_dcc_getc;        /* 'getc' function */
-       arm_dcc_dev.putc = arm_dcc_putc;        /* 'putc' function */
-       arm_dcc_dev.puts = arm_dcc_puts;        /* 'puts' function */
-
-       return stdio_register(&arm_dcc_dev);
+       serial_register(&arm_dcc_drv);
 }
 
 __weak struct serial_device *default_serial_console(void)
 {
-       return NULL;
+       return &arm_dcc_drv;
 }
index 67301355d7dcba85d1a7c2608c1d1814c4e6e687..118fbc305ca721ae980f8a6cf22d078d35c9df1c 100644 (file)
@@ -159,6 +159,7 @@ serial_initfunc(pl01x_serial_initialize);
 serial_initfunc(s3c44b0_serial_initialize);
 serial_initfunc(sa1100_serial_initialize);
 serial_initfunc(sh_serial_initialize);
+serial_initfunc(arm_dcc_initialize);
 
 /**
  * serial_register() - Register serial driver with serial driver core
@@ -251,6 +252,7 @@ void serial_initialize(void)
        s3c44b0_serial_initialize();
        sa1100_serial_initialize();
        sh_serial_initialize();
+       arm_dcc_initialize();
 
        serial_assign(default_serial_console()->name);
 }
index bbabb325f83a2d777d5bd5b1e50ceba5305f231b..e243a8e3b203fe2106beae5b7b3b957629acfacb 100644 (file)
@@ -22,6 +22,8 @@
 #include <usb/pxa27x_udc.h>
 #elif defined(CONFIG_DW_UDC)
 #include <usb/designware_udc.h>
+#elif defined(CONFIG_MV_UDC)
+#include <usb/mv_udc.h>
 #endif
 
 #include <version.h>
index 019132e853b76fa7379c1fc8135ae20e0228b2ba..91d24cea58da297d047121647ee39705583d513f 100644 (file)
@@ -39,6 +39,7 @@ COBJS-$(CONFIG_TEGRA20_SFLASH) += tegra20_sflash.o
 COBJS-$(CONFIG_TEGRA20_SLINK) += tegra20_slink.o
 COBJS-$(CONFIG_TEGRA114_SPI) += tegra114_spi.o
 COBJS-$(CONFIG_XILINX_SPI) += xilinx_spi.o
+COBJS-$(CONFIG_ZYNQ_SPI) += zynq_spi.o
 
 COBJS  := $(COBJS-y)
 SRCS   := $(COBJS:.o=.c)
index a9a4d92c3e719b0a1f215393ac7fc22de6cae8cf..f7192c23401a11b0ffa9605300cda5ed6e508914 100644 (file)
@@ -144,10 +144,8 @@ void spi_set_speed(struct spi_slave *slave, uint hz)
        u32 baud;
 
        sclk = get_sclk();
-       baud = sclk / (2 * hz);
        /* baud should be rounded up */
-       if (sclk % (2 * hz))
-               baud += 1;
+       baud = DIV_ROUND_UP(sclk, 2 * hz);
        if (baud < 2)
                baud = 2;
        else if (baud > (u16)-1)
index fc0a58be2998381198e4b9411a42a20d9cda6f44..7c845827627bc2a276e326f7119fab2c485fffc9 100644 (file)
@@ -75,7 +75,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 
        /* Set eSPI BRG clock source */
        get_sys_info(&sysinfo);
-       spibrg = sysinfo.freqSystemBus / 2;
+       spibrg = sysinfo.freq_systembus / 2;
        fsl->div16 = 0;
        if ((spibrg / max_hz) > 32) {
                fsl->div16 = ESPI_CSMODE_DIV16;
@@ -221,15 +221,13 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *data_out,
              slave->bus, slave->cs, *(uint *) dout,
              dout, *(uint *) din, din, len);
 
-       num_chunks = data_len / max_tran_len +
-               (data_len % max_tran_len ? 1 : 0);
+       num_chunks = DIV_ROUND_UP(data_len, max_tran_len);
        while (num_chunks--) {
                if (data_in)
                        din = buffer + rx_offset;
                dout = buffer;
                tran_len = min(data_len , max_tran_len);
-               num_blks = (tran_len + cmd_len) / 4 +
-                       ((tran_len + cmd_len) % 4 ? 1 : 0);
+               num_blks = DIV_ROUND_UP(tran_len + cmd_len, 4);
                num_bytes = (tran_len + cmd_len) % 4;
                fsl->data_len = tran_len + cmd_len;
                spi_cs_activate(slave);
index bbfc259e47382e8c690289bcb445deb0beaf6977..348361a7fd078d1cbcc5f1a0f926faa2a7173c03 100644 (file)
@@ -77,7 +77,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 {
        volatile spi8xxx_t *spi = &((immap_t *) (CONFIG_SYS_IMMR))->spi;
        unsigned int tmpdout, tmpdin, event;
-       int numBlks = bitlen / 32 + (bitlen % 32 ? 1 : 0);
+       int numBlks = DIV_ROUND_UP(bitlen, 32);
        int tm, isRead = 0;
        unsigned char charSize = 32;
 
diff --git a/drivers/spi/zynq_spi.c b/drivers/spi/zynq_spi.c
new file mode 100644 (file)
index 0000000..5da8759
--- /dev/null
@@ -0,0 +1,280 @@
+/*
+ * (C) Copyright 2013 Inc.
+ *
+ * Xilinx Zynq PS SPI controller driver (master mode only)
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <config.h>
+#include <common.h>
+#include <malloc.h>
+#include <spi.h>
+#include <asm/io.h>
+#include <asm/arch/hardware.h>
+
+/* zynq spi register bit masks ZYNQ_SPI_<REG>_<BIT>_MASK */
+#define ZYNQ_SPI_CR_MSA_MASK           (1 << 15)       /* Manual start enb */
+#define ZYNQ_SPI_CR_MCS_MASK           (1 << 14)       /* Manual chip select */
+#define ZYNQ_SPI_CR_CS_MASK            (0xF << 10)     /* Chip select */
+#define ZYNQ_SPI_CR_BRD_MASK           (0x7 << 3)      /* Baud rate div */
+#define ZYNQ_SPI_CR_CPHA_MASK          (1 << 2)        /* Clock phase */
+#define ZYNQ_SPI_CR_CPOL_MASK          (1 << 1)        /* Clock polarity */
+#define ZYNQ_SPI_CR_MSTREN_MASK                (1 << 0)        /* Mode select */
+#define ZYNQ_SPI_IXR_RXNEMPTY_MASK     (1 << 4)        /* RX_FIFO_not_empty */
+#define ZYNQ_SPI_IXR_TXOW_MASK         (1 << 2)        /* TX_FIFO_not_full */
+#define ZYNQ_SPI_IXR_ALL_MASK          0x7F            /* All IXR bits */
+#define ZYNQ_SPI_ENR_SPI_EN_MASK       (1 << 0)        /* SPI Enable */
+
+#define ZYNQ_SPI_FIFO_DEPTH            128
+#ifndef CONFIG_SYS_ZYNQ_SPI_WAIT
+#define CONFIG_SYS_ZYNQ_SPI_WAIT       (CONFIG_SYS_HZ/100)     /* 10 ms */
+#endif
+
+/* zynq spi register set */
+struct zynq_spi_regs {
+       u32 cr;         /* 0x00 */
+       u32 isr;        /* 0x04 */
+       u32 ier;        /* 0x08 */
+       u32 idr;        /* 0x0C */
+       u32 imr;        /* 0x10 */
+       u32 enr;        /* 0x14 */
+       u32 dr;         /* 0x18 */
+       u32 txdr;       /* 0x1C */
+       u32 rxdr;       /* 0x20 */
+};
+
+/* zynq spi slave */
+struct zynq_spi_slave {
+       struct spi_slave slave;
+       struct zynq_spi_regs *base;
+       u8 mode;
+       u8 fifo_depth;
+       u32 speed_hz;
+       u32 input_hz;
+       u32 req_hz;
+};
+
+static inline struct zynq_spi_slave *to_zynq_spi_slave(struct spi_slave *slave)
+{
+       return container_of(slave, struct zynq_spi_slave, slave);
+}
+
+static inline struct zynq_spi_regs *get_zynq_spi_base(int dev)
+{
+       if (dev)
+               return (struct zynq_spi_regs *)ZYNQ_SPI_BASEADDR1;
+       else
+               return (struct zynq_spi_regs *)ZYNQ_SPI_BASEADDR0;
+}
+
+static void zynq_spi_init_hw(struct zynq_spi_slave *zslave)
+{
+       u32 confr;
+
+       /* Disable SPI */
+       writel(~ZYNQ_SPI_ENR_SPI_EN_MASK, &zslave->base->enr);
+
+       /* Disable Interrupts */
+       writel(ZYNQ_SPI_IXR_ALL_MASK, &zslave->base->idr);
+
+       /* Clear RX FIFO */
+       while (readl(&zslave->base->isr) &
+                       ZYNQ_SPI_IXR_RXNEMPTY_MASK)
+               readl(&zslave->base->rxdr);
+
+       /* Clear Interrupts */
+       writel(ZYNQ_SPI_IXR_ALL_MASK, &zslave->base->isr);
+
+       /* Manual slave select and Auto start */
+       confr = ZYNQ_SPI_CR_MCS_MASK | ZYNQ_SPI_CR_CS_MASK |
+               ZYNQ_SPI_CR_MSTREN_MASK;
+       confr &= ~ZYNQ_SPI_CR_MSA_MASK;
+       writel(confr, &zslave->base->cr);
+
+       /* Enable SPI */
+       writel(ZYNQ_SPI_ENR_SPI_EN_MASK, &zslave->base->enr);
+}
+
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+{
+       /* 2 bus with 3 chipselect */
+       return bus < 2 && cs < 3;
+}
+
+void spi_cs_activate(struct spi_slave *slave)
+{
+       struct zynq_spi_slave *zslave = to_zynq_spi_slave(slave);
+       u32 cr;
+
+       debug("spi_cs_activate: 0x%08x\n", (u32)slave);
+
+       clrbits_le32(&zslave->base->cr, ZYNQ_SPI_CR_CS_MASK);
+       cr = readl(&zslave->base->cr);
+       /*
+        * CS cal logic: CS[13:10]
+        * xxx0 - cs0
+        * xx01 - cs1
+        * x011 - cs2
+        */
+       cr |= (~(0x1 << slave->cs) << 10) & ZYNQ_SPI_CR_CS_MASK;
+       writel(cr, &zslave->base->cr);
+}
+
+void spi_cs_deactivate(struct spi_slave *slave)
+{
+       struct zynq_spi_slave *zslave = to_zynq_spi_slave(slave);
+
+       debug("spi_cs_deactivate: 0x%08x\n", (u32)slave);
+
+       setbits_le32(&zslave->base->cr, ZYNQ_SPI_CR_CS_MASK);
+}
+
+void spi_init()
+{
+       /* nothing to do */
+}
+
+struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
+               unsigned int max_hz, unsigned int mode)
+{
+       struct zynq_spi_slave *zslave;
+
+       if (!spi_cs_is_valid(bus, cs))
+               return NULL;
+
+       zslave = spi_alloc_slave(struct zynq_spi_slave, bus, cs);
+       if (!zslave) {
+               printf("SPI_error: Fail to allocate zynq_spi_slave\n");
+               return NULL;
+       }
+
+       zslave->base = get_zynq_spi_base(bus);
+       zslave->mode = mode;
+       zslave->fifo_depth = ZYNQ_SPI_FIFO_DEPTH;
+       zslave->input_hz = 166666700;
+       zslave->speed_hz = zslave->input_hz / 2;
+       zslave->req_hz = max_hz;
+
+       /* init the zynq spi hw */
+       zynq_spi_init_hw(zslave);
+
+       return &zslave->slave;
+}
+
+void spi_free_slave(struct spi_slave *slave)
+{
+       struct zynq_spi_slave *zslave = to_zynq_spi_slave(slave);
+
+       debug("spi_free_slave: 0x%08x\n", (u32)slave);
+       free(zslave);
+}
+
+int spi_claim_bus(struct spi_slave *slave)
+{
+       struct zynq_spi_slave *zslave = to_zynq_spi_slave(slave);
+       u32 confr = 0;
+       u8 baud_rate_val = 0;
+
+       writel(~ZYNQ_SPI_ENR_SPI_EN_MASK, &zslave->base->enr);
+
+       /* Set the SPI Clock phase and polarities */
+       confr = readl(&zslave->base->cr);
+       confr &= ~(ZYNQ_SPI_CR_CPHA_MASK | ZYNQ_SPI_CR_CPOL_MASK);
+       if (zslave->mode & SPI_CPHA)
+               confr |= ZYNQ_SPI_CR_CPHA_MASK;
+       if (zslave->mode & SPI_CPOL)
+               confr |= ZYNQ_SPI_CR_CPOL_MASK;
+
+       /* Set the clock frequency */
+       if (zslave->req_hz == 0) {
+               /* Set baudrate x8, if the req_hz is 0 */
+               baud_rate_val = 0x2;
+       } else if (zslave->speed_hz != zslave->req_hz) {
+               while ((baud_rate_val < 8) &&
+                               ((zslave->input_hz /
+                               (2 << baud_rate_val)) > zslave->req_hz))
+                       baud_rate_val++;
+               zslave->speed_hz = zslave->req_hz / (2 << baud_rate_val);
+       }
+       confr &= ~ZYNQ_SPI_CR_BRD_MASK;
+       confr |= (baud_rate_val << 3);
+       writel(confr, &zslave->base->cr);
+
+       writel(ZYNQ_SPI_ENR_SPI_EN_MASK, &zslave->base->enr);
+
+       return 0;
+}
+
+void spi_release_bus(struct spi_slave *slave)
+{
+       struct zynq_spi_slave *zslave = to_zynq_spi_slave(slave);
+
+       debug("spi_release_bus: 0x%08x\n", (u32)slave);
+       writel(~ZYNQ_SPI_ENR_SPI_EN_MASK, &zslave->base->enr);
+}
+
+int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
+               void *din, unsigned long flags)
+{
+       struct zynq_spi_slave *zslave = to_zynq_spi_slave(slave);
+       u32 len = bitlen / 8;
+       u32 tx_len = len, rx_len = len, tx_tvl;
+       const u8 *tx_buf = dout;
+       u8 *rx_buf = din, buf;
+       u32 ts, status;
+
+       debug("spi_xfer: bus:%i cs:%i bitlen:%i len:%i flags:%lx\n",
+             slave->bus, slave->cs, bitlen, len, flags);
+
+       if (bitlen == 0)
+               return -1;
+
+       if (bitlen % 8) {
+               debug("spi_xfer: Non byte aligned SPI transfer\n");
+               return -1;
+       }
+
+       if (flags & SPI_XFER_BEGIN)
+               spi_cs_activate(slave);
+
+       while (rx_len > 0) {
+               /* Write the data into TX FIFO - tx threshold is fifo_depth */
+               tx_tvl = 0;
+               while ((tx_tvl < zslave->fifo_depth) && tx_len) {
+                       if (tx_buf)
+                               buf = *tx_buf++;
+                       else
+                               buf = 0;
+                       writel(buf, &zslave->base->txdr);
+                       tx_len--;
+                       tx_tvl++;
+               }
+
+               /* Check TX FIFO completion */
+               ts = get_timer(0);
+               status = readl(&zslave->base->isr);
+               while (!(status & ZYNQ_SPI_IXR_TXOW_MASK)) {
+                       if (get_timer(ts) > CONFIG_SYS_ZYNQ_SPI_WAIT) {
+                               printf("spi_xfer: Timeout! TX FIFO not full\n");
+                               return -1;
+                       }
+                       status = readl(&zslave->base->isr);
+               }
+
+               /* Read the data from RX FIFO */
+               status = readl(&zslave->base->isr);
+               while (status & ZYNQ_SPI_IXR_RXNEMPTY_MASK) {
+                       buf = readl(&zslave->base->rxdr);
+                       if (rx_buf)
+                               *rx_buf++ = buf;
+                       status = readl(&zslave->base->isr);
+                       rx_len--;
+               }
+       }
+
+       if (flags & SPI_XFER_END)
+               spi_cs_deactivate(slave);
+
+       return 0;
+}
index b04e91cfcbae45ca71bb5f86f88e1df468930b84..15fd9a9f785de9ce20a8b185e68d910fde83598c 100644 (file)
@@ -784,6 +784,7 @@ static const struct smsc95xx_dongle smsc95xx_dongles[] = {
        { 0x0424, 0xec00 },     /* LAN9512/LAN9514 Ethernet */
        { 0x0424, 0x9500 },     /* LAN9500 Ethernet */
        { 0x0424, 0x9730 },     /* LAN9730 Ethernet (HSIC) */
+       { 0x0424, 0x9900 },     /* SMSC9500 USB Ethernet Device (SAL10) */
        { 0x0000, 0x0000 }      /* END - Do not remove */
 };
 
index 5321a689d4dc3905651fade571dd27fcb8b5dc2a..37d04a19285e605a6d4e34ae9b54b989eca28891 100644 (file)
@@ -312,6 +312,8 @@ static int state_dfu_idle(struct f_dfu *f_dfu,
                        DFU_STATE_dfuMANIFEST_WAIT_RST;
                to_runtime_mode(f_dfu);
                f_dfu->dfu_state = DFU_STATE_appIDLE;
+
+               dfu_trigger_reset();
                break;
        default:
                f_dfu->dfu_state = DFU_STATE_dfuERROR;
index 5b348d7a6ef2a6b50bd59b55e165279d9f53c778..b34068a0bb3862f508c2822078f5beb5850f6ed3 100644 (file)
@@ -6,35 +6,7 @@
  *                    Author: Michal Nazarewicz <m.nazarewicz@samsung.com>
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions, and the following disclaimer,
- *    without modification.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The names of the above-listed copyright holders may not be used
- *    to endorse or promote products derived from this software without
- *    specific prior written permission.
- *
- * ALTERNATIVELY, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") as published by the Free Software
- * Foundation, either version 2 of that License or (at your option) any
- * later version.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier: GPL-2.0+   BSD-3-Clause
  */
 
 
index cbfcb2d0748435bf4d9e74e55b46b8c24dba7408..a3e05a872a7bdd157ddcad653a32cc9f97f391d5 100644 (file)
 
 #define STRING_MANUFACTURER 25
 #define STRING_PRODUCT 2
+/* Index of String Descriptor describing this configuration */
 #define STRING_USBDOWN 2
-#define CONFIG_USBDOWNLOADER 2
+/* Number of supported configurations */
+#define CONFIGURATION_NUMBER 1
 
 #define DRIVER_VERSION         "usb_dnl 2.0"
 
@@ -54,11 +56,14 @@ static struct usb_device_descriptor device_desc = {
        .bNumConfigurations = 1,
 };
 
-/* static strings, in UTF-8 */
+/*
+ * static strings, in UTF-8
+ * IDs for those strings are assigned dynamically at g_dnl_bind()
+ */
 static struct usb_string g_dnl_string_defs[] = {
-       { 0, manufacturer, },
-       { 1, product, },
-       {  }            /* end of list */
+       {.s = manufacturer},
+       {.s = product},
+       {             /* end of list */
 };
 
 static struct usb_gadget_strings g_dnl_string_tab = {
@@ -104,7 +109,7 @@ static int g_dnl_config_register(struct usb_composite_dev *cdev)
        static struct usb_configuration config = {
                .label = "usb_dnload",
                .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
-               .bConfigurationValue =  CONFIG_USBDOWNLOADER,
+               .bConfigurationValue =  CONFIGURATION_NUMBER,
                .iConfiguration =       STRING_USBDOWN,
 
                .bind = g_dnl_do_config,
index f038747e63e0d5175bb58ee495b7e419140d8c98..aa54b8547e73d2945a9b5d8df5486c87ec73f3bc 100644 (file)
 #define        gadget_is_m66592(g)     0
 #endif
 
-#ifdef CONFIG_USB_GADGET_MV
+#ifdef CONFIG_MV_UDC
 #define gadget_is_mv(g)        (!strcmp("mv_udc", (g)->name))
 #else
 #define gadget_is_mv(g)        0
index 7fa5288803809653a12fb5308edafaf15b0405e4..7574e31a8f3e8d18fbf7cc0ce7c838f824f656a7 100644 (file)
 #include <linux/types.h>
 #include <usb/mv_udc.h>
 
+#if CONFIG_USB_MAX_CONTROLLER_COUNT > 1
+#error This driver only supports one single controller.
+#endif
+
+/*
+ * Check if the system has too long cachelines. If the cachelines are
+ * longer then 128b, the driver will not be able flush/invalidate data
+ * cache over separate QH entries. We use 128b because one QH entry is
+ * 64b long and there are always two QH list entries for each endpoint.
+ */
+#if ARCH_DMA_MINALIGN > 128
+#error This driver can not work on systems with caches longer than 128b
+#endif
+
 #ifndef DEBUG
 #define DBG(x...) do {} while (0)
 #else
@@ -39,8 +53,6 @@ static const char *reqname(unsigned r)
 }
 #endif
 
-#define PAGE_SIZE      4096
-#define QH_MAXNUM      32
 static struct usb_endpoint_descriptor ep0_out_desc = {
        .bLength = sizeof(struct usb_endpoint_descriptor),
        .bDescriptorType = USB_DT_ENDPOINT,
@@ -55,8 +67,6 @@ static struct usb_endpoint_descriptor ep0_in_desc = {
        .bmAttributes = USB_ENDPOINT_XFER_CONTROL,
 };
 
-struct ept_queue_head *epts;
-struct ept_queue_item *items[2 * NUM_ENDPOINTS];
 static int mv_pullup(struct usb_gadget *gadget, int is_on);
 static int mv_ep_enable(struct usb_ep *ep,
                const struct usb_endpoint_descriptor *desc);
@@ -79,14 +89,115 @@ static struct usb_ep_ops mv_ep_ops = {
        .free_request   = mv_ep_free_request,
 };
 
-static struct mv_ep ep[2 * NUM_ENDPOINTS];
+/* Init values for USB endpoints. */
+static const struct usb_ep mv_ep_init[2] = {
+       [0] = { /* EP 0 */
+               .maxpacket      = 64,
+               .name           = "ep0",
+               .ops            = &mv_ep_ops,
+       },
+       [1] = { /* EP 1..n */
+               .maxpacket      = 512,
+               .name           = "ep-",
+               .ops            = &mv_ep_ops,
+       },
+};
+
 static struct mv_drv controller = {
-       .gadget = {
-               .ep0 = &ep[0].ep,
-               .name = "mv_udc",
+       .gadget = {
+               .name   = "mv_udc",
+               .ops    = &mv_udc_ops,
        },
 };
 
+/**
+ * mv_get_qh() - return queue head for endpoint
+ * @ep_num:    Endpoint number
+ * @dir_in:    Direction of the endpoint (IN = 1, OUT = 0)
+ *
+ * This function returns the QH associated with particular endpoint
+ * and it's direction.
+ */
+static struct ept_queue_head *mv_get_qh(int ep_num, int dir_in)
+{
+       return &controller.epts[(ep_num * 2) + dir_in];
+}
+
+/**
+ * mv_get_qtd() - return queue item for endpoint
+ * @ep_num:    Endpoint number
+ * @dir_in:    Direction of the endpoint (IN = 1, OUT = 0)
+ *
+ * This function returns the QH associated with particular endpoint
+ * and it's direction.
+ */
+static struct ept_queue_item *mv_get_qtd(int ep_num, int dir_in)
+{
+       return controller.items[(ep_num * 2) + dir_in];
+}
+
+/**
+ * mv_flush_qh - flush cache over queue head
+ * @ep_num:    Endpoint number
+ *
+ * This function flushes cache over QH for particular endpoint.
+ */
+static void mv_flush_qh(int ep_num)
+{
+       struct ept_queue_head *head = mv_get_qh(ep_num, 0);
+       const uint32_t start = (uint32_t)head;
+       const uint32_t end = start + 2 * sizeof(*head);
+
+       flush_dcache_range(start, end);
+}
+
+/**
+ * mv_invalidate_qh - invalidate cache over queue head
+ * @ep_num:    Endpoint number
+ *
+ * This function invalidates cache over QH for particular endpoint.
+ */
+static void mv_invalidate_qh(int ep_num)
+{
+       struct ept_queue_head *head = mv_get_qh(ep_num, 0);
+       uint32_t start = (uint32_t)head;
+       uint32_t end = start + 2 * sizeof(*head);
+
+       invalidate_dcache_range(start, end);
+}
+
+/**
+ * mv_flush_qtd - flush cache over queue item
+ * @ep_num:    Endpoint number
+ *
+ * This function flushes cache over qTD pair for particular endpoint.
+ */
+static void mv_flush_qtd(int ep_num)
+{
+       struct ept_queue_item *item = mv_get_qtd(ep_num, 0);
+       const uint32_t start = (uint32_t)item;
+       const uint32_t end_raw = start + 2 * sizeof(*item);
+       const uint32_t end = roundup(end_raw, ARCH_DMA_MINALIGN);
+
+       flush_dcache_range(start, end);
+}
+
+/**
+ * mv_invalidate_qtd - invalidate cache over queue item
+ * @ep_num:    Endpoint number
+ *
+ * This function invalidates cache over qTD pair for particular endpoint.
+ */
+static void mv_invalidate_qtd(int ep_num)
+{
+       struct ept_queue_item *item = mv_get_qtd(ep_num, 0);
+       const uint32_t start = (uint32_t)item;
+       const uint32_t end_raw = start + 2 * sizeof(*item);
+       const uint32_t end = roundup(end_raw, ARCH_DMA_MINALIGN);
+
+       invalidate_dcache_range(start, end);
+}
+
 static struct usb_request *
 mv_ep_alloc_request(struct usb_ep *ep, unsigned int gfp_flags)
 {
@@ -102,9 +213,9 @@ static void mv_ep_free_request(struct usb_ep *ep, struct usb_request *_req)
 static void ep_enable(int num, int in)
 {
        struct ept_queue_head *head;
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        unsigned n;
-       head = epts + 2*num + in;
+       head = mv_get_qh(num, in);
 
        n = readl(&udc->epctrl[num]);
        if (in)
@@ -112,8 +223,10 @@ static void ep_enable(int num, int in)
        else
                n |= (CTRL_RXE | CTRL_RXR | CTRL_RXT_BULK);
 
-       if (num != 0)
+       if (num != 0) {
                head->config = CONFIG_MAX_PKT(EP_MAX_PACKET_SIZE) | CONFIG_ZLT;
+               mv_flush_qh(num);
+       }
        writel(n, &udc->epctrl[num]);
 }
 
@@ -134,40 +247,108 @@ static int mv_ep_disable(struct usb_ep *ep)
        return 0;
 }
 
+static int mv_bounce(struct mv_ep *ep)
+{
+       uint32_t addr = (uint32_t)ep->req.buf;
+       uint32_t ba;
+
+       /* Input buffer address is not aligned. */
+       if (addr & (ARCH_DMA_MINALIGN - 1))
+               goto align;
+
+       /* Input buffer length is not aligned. */
+       if (ep->req.length & (ARCH_DMA_MINALIGN - 1))
+               goto align;
+
+       /* The buffer is well aligned, only flush cache. */
+       ep->b_len = ep->req.length;
+       ep->b_buf = ep->req.buf;
+       goto flush;
+
+align:
+       /* Use internal buffer for small payloads. */
+       if (ep->req.length <= 64) {
+               ep->b_len = 64;
+               ep->b_buf = ep->b_fast;
+       } else {
+               ep->b_len = roundup(ep->req.length, ARCH_DMA_MINALIGN);
+               ep->b_buf = memalign(ARCH_DMA_MINALIGN, ep->b_len);
+               if (!ep->b_buf)
+                       return -ENOMEM;
+       }
+
+       memcpy(ep->b_buf, ep->req.buf, ep->req.length);
+
+flush:
+       ba = (uint32_t)ep->b_buf;
+       flush_dcache_range(ba, ba + ep->b_len);
+
+       return 0;
+}
+
+static void mv_debounce(struct mv_ep *ep)
+{
+       uint32_t addr = (uint32_t)ep->req.buf;
+       uint32_t ba = (uint32_t)ep->b_buf;
+
+       invalidate_dcache_range(ba, ba + ep->b_len);
+
+       /* Input buffer address is not aligned. */
+       if (addr & (ARCH_DMA_MINALIGN - 1))
+               goto copy;
+
+       /* Input buffer length is not aligned. */
+       if (ep->req.length & (ARCH_DMA_MINALIGN - 1))
+               goto copy;
+
+       /* The buffer is well aligned, only invalidate cache. */
+       return;
+
+copy:
+       memcpy(ep->req.buf, ep->b_buf, ep->req.length);
+
+       /* Large payloads use allocated buffer, free it. */
+       if (ep->req.length > 64)
+               free(ep->b_buf);
+}
+
 static int mv_ep_queue(struct usb_ep *ep,
                struct usb_request *req, gfp_t gfp_flags)
 {
        struct mv_ep *mv_ep = container_of(ep, struct mv_ep, ep);
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        struct ept_queue_item *item;
        struct ept_queue_head *head;
-       unsigned phys;
-       int bit, num, len, in;
+       int bit, num, len, in, ret;
        num = mv_ep->desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
        in = (mv_ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
-       item = items[2 * num + in];
-       head = epts + 2 * num + in;
-       phys = (unsigned)req->buf;
+       item = mv_get_qtd(num, in);
+       head = mv_get_qh(num, in);
        len = req->length;
 
+       ret = mv_bounce(mv_ep);
+       if (ret)
+               return ret;
+
        item->next = TERMINATE;
        item->info = INFO_BYTES(len) | INFO_IOC | INFO_ACTIVE;
-       item->page0 = phys;
-       item->page1 = (phys & 0xfffff000) + 0x1000;
+       item->page0 = (uint32_t)mv_ep->b_buf;
+       item->page1 = ((uint32_t)mv_ep->b_buf & 0xfffff000) + 0x1000;
 
        head->next = (unsigned) item;
        head->info = 0;
 
-       DBG("ept%d %s queue len %x, buffer %x\n",
-                       num, in ? "in" : "out", len, phys);
+       DBG("ept%d %s queue len %x, buffer %p\n",
+           num, in ? "in" : "out", len, mv_ep->b_buf);
 
        if (in)
                bit = EPT_TX(num);
        else
                bit = EPT_RX(num);
 
-       flush_cache(phys, len);
-       flush_cache((unsigned long)item, sizeof(struct ept_queue_item));
+       mv_flush_qh(num);
+       mv_flush_qtd(num);
+
        writel(bit, &udc->epprime);
 
        return 0;
@@ -181,13 +362,17 @@ static void handle_ep_complete(struct mv_ep *ep)
        in = (ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
        if (num == 0)
                ep->desc = &ep0_out_desc;
-       item = items[2 * num + in];
-
+       item = mv_get_qtd(num, in);
+       mv_invalidate_qtd(num);
+       
        if (item->info & 0xff)
                printf("EP%d/%s FAIL nfo=%x pg0=%x\n",
                        num, in ? "in" : "out", item->info, item->page0);
 
        len = (item->info >> 16) & 0x7fff;
+
+       mv_debounce(ep);
+
        ep->req.length -= len;
        DBG("ept%d %s complete %x\n",
                        num, in ? "in" : "out", len);
@@ -203,16 +388,16 @@ static void handle_ep_complete(struct mv_ep *ep)
 
 static void handle_setup(void)
 {
-       struct usb_request *req = &ep[0].req;
-       struct mv_udc *udc = controller.udc;
+       struct usb_request *req = &controller.ep[0].req;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        struct ept_queue_head *head;
        struct usb_ctrlrequest r;
        int status = 0;
        int num, in, _num, _in, i;
        char *buf;
-       head = epts;
+       head = mv_get_qh(0, 0); /* EP0 OUT */
 
-       flush_cache((unsigned long)head, sizeof(struct ept_queue_head));
+       mv_invalidate_qh(0);
        memcpy(&r, head->setup_data, sizeof(struct usb_ctrlrequest));
        writel(EPT_RX(0), &udc->epstat);
        DBG("handle setup %s, %x, %x index %x value %x\n", reqname(r.bRequest),
@@ -226,11 +411,11 @@ static void handle_setup(void)
                if ((r.wValue == 0) && (r.wLength == 0)) {
                        req->length = 0;
                        for (i = 0; i < NUM_ENDPOINTS; i++) {
-                               if (!ep[i].desc)
+                               if (!controller.ep[i].desc)
                                        continue;
-                               num = ep[i].desc->bEndpointAddress
-                                       & USB_ENDPOINT_NUMBER_MASK;
-                               in = (ep[i].desc->bEndpointAddress
+                               num = controller.ep[i].desc->bEndpointAddress
+                                               & USB_ENDPOINT_NUMBER_MASK;
+                               in = (controller.ep[i].desc->bEndpointAddress
                                                & USB_DIR_IN) != 0;
                                if ((num == _num) && (in == _in)) {
                                        ep_enable(num, in);
@@ -277,7 +462,7 @@ static void stop_activity(void)
 {
        int i, num, in;
        struct ept_queue_head *head;
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        writel(readl(&udc->epcomp), &udc->epcomp);
        writel(readl(&udc->epstat), &udc->epstat);
        writel(0xffffffff, &udc->epflush);
@@ -286,19 +471,21 @@ static void stop_activity(void)
        for (i = 0; i < NUM_ENDPOINTS; i++) {
                if (i != 0)
                        writel(0, &udc->epctrl[i]);
-               if (ep[i].desc) {
-                       num = ep[i].desc->bEndpointAddress
+               if (controller.ep[i].desc) {
+                       num = controller.ep[i].desc->bEndpointAddress
                                & USB_ENDPOINT_NUMBER_MASK;
-                       in = (ep[i].desc->bEndpointAddress & USB_DIR_IN) != 0;
-                       head = epts + (num * 2) + (in);
+                       in = (controller.ep[i].desc->bEndpointAddress
+                               & USB_DIR_IN) != 0;
+                       head = mv_get_qh(num, in);
                        head->info = INFO_ACTIVE;
+                       mv_flush_qh(num);
                }
        }
 }
 
 void udc_irq(void)
 {
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        unsigned n = readl(&udc->usbsts);
        writel(n, &udc->usbsts);
        int bit, i, num, in;
@@ -320,8 +507,8 @@ void udc_irq(void)
                if (bit == 2) {
                        controller.gadget.speed = USB_SPEED_HIGH;
                        for (i = 1; i < NUM_ENDPOINTS && n; i++)
-                               if (ep[i].desc)
-                                       ep[i].ep.maxpacket = 512;
+                               if (controller.ep[i].desc)
+                                       controller.ep[i].ep.maxpacket = 512;
                } else {
                        controller.gadget.speed = USB_SPEED_FULL;
                }
@@ -340,14 +527,14 @@ void udc_irq(void)
                        writel(n, &udc->epcomp);
 
                for (i = 0; i < NUM_ENDPOINTS && n; i++) {
-                       if (ep[i].desc) {
-                               num = ep[i].desc->bEndpointAddress
+                       if (controller.ep[i].desc) {
+                               num = controller.ep[i].desc->bEndpointAddress
                                        & USB_ENDPOINT_NUMBER_MASK;
-                               in = (ep[i].desc->bEndpointAddress
+                               in = (controller.ep[i].desc->bEndpointAddress
                                                & USB_DIR_IN) != 0;
                                bit = (in) ? EPT_TX(num) : EPT_RX(num);
                                if (n & bit)
-                                       handle_ep_complete(&ep[i]);
+                                       handle_ep_complete(&controller.ep[i]);
                        }
                }
        }
@@ -356,7 +543,7 @@ void udc_irq(void)
 int usb_gadget_handle_interrupts(void)
 {
        u32 value;
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
 
        value = readl(&udc->usbsts);
        if (value)
@@ -367,13 +554,13 @@ int usb_gadget_handle_interrupts(void)
 
 static int mv_pullup(struct usb_gadget *gadget, int is_on)
 {
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        if (is_on) {
                /* RESET */
                writel(USBCMD_ITC(MICRO_8FRAME) | USBCMD_RST, &udc->usbcmd);
                udelay(200);
 
-               writel((unsigned) epts, &udc->epinitaddr);
+               writel((unsigned)controller.epts, &udc->epinitaddr);
 
                /* select DEVICE mode */
                writel(USBMODE_DEVICE, &udc->usbmode);
@@ -395,7 +582,7 @@ static int mv_pullup(struct usb_gadget *gadget, int is_on)
 
 void udc_disconnect(void)
 {
-       struct mv_udc *udc = controller.udc;
+       struct mv_udc *udc = (struct mv_udc *)controller.ctrl->hcor;
        /* disable pullup */
        stop_activity();
        writel(USBCMD_FS2, &udc->usbcmd);
@@ -407,18 +594,48 @@ void udc_disconnect(void)
 static int mvudc_probe(void)
 {
        struct ept_queue_head *head;
+       uint8_t *imem;
        int i;
 
-       controller.gadget.ops = &mv_udc_ops;
-       controller.udc = (struct mv_udc *)CONFIG_USB_REG_BASE;
-       epts = memalign(PAGE_SIZE, QH_MAXNUM * sizeof(struct ept_queue_head));
-       memset(epts, 0, QH_MAXNUM * sizeof(struct ept_queue_head));
+       const int num = 2 * NUM_ENDPOINTS;
+
+       const int eplist_min_align = 4096;
+       const int eplist_align = roundup(eplist_min_align, ARCH_DMA_MINALIGN);
+       const int eplist_raw_sz = num * sizeof(struct ept_queue_head);
+       const int eplist_sz = roundup(eplist_raw_sz, ARCH_DMA_MINALIGN);
+
+       const int ilist_align = roundup(ARCH_DMA_MINALIGN, 32);
+       const int ilist_ent_raw_sz = 2 * sizeof(struct ept_queue_item);
+       const int ilist_ent_sz = roundup(ilist_ent_raw_sz, ARCH_DMA_MINALIGN);
+       const int ilist_sz = NUM_ENDPOINTS * ilist_ent_sz;
+
+       /* The QH list must be aligned to 4096 bytes. */
+       controller.epts = memalign(eplist_align, eplist_sz);
+       if (!controller.epts)
+               return -ENOMEM;
+       memset(controller.epts, 0, eplist_sz);
+
+       /*
+        * Each qTD item must be 32-byte aligned, each qTD touple must be
+        * cacheline aligned. There are two qTD items for each endpoint and
+        * only one of them is used for the endpoint at time, so we can group
+        * them together.
+        */
+       controller.items_mem = memalign(ilist_align, ilist_sz);
+       if (!controller.items_mem) {
+               free(controller.epts);
+               return -ENOMEM;
+       }
+
        for (i = 0; i < 2 * NUM_ENDPOINTS; i++) {
                /*
-                * For item0 and item1, they are served as ep0
-                * out&in seperately
+                * Configure QH for each endpoint. The structure of the QH list
+                * is such that each two subsequent fields, N and N+1 where N is
+                * even, in the QH list represent QH for one endpoint. The Nth
+                * entry represents OUT configuration and the N+1th entry does
+                * represent IN configuration of the endpoint.
                 */
-               head = epts + i;
+               head = controller.epts + i;
                if (i < 2)
                        head->config = CONFIG_MAX_PKT(EP0_MAX_PACKET_SIZE)
                                | CONFIG_ZLT | CONFIG_IOS;
@@ -428,49 +645,65 @@ static int mvudc_probe(void)
                head->next = TERMINATE;
                head->info = 0;
 
-               items[i] = memalign(PAGE_SIZE, sizeof(struct ept_queue_item));
+               imem = controller.items_mem + ((i >> 1) * ilist_ent_sz);
+               if (i & 1)
+                       imem += sizeof(struct ept_queue_item);
+
+               controller.items[i] = (struct ept_queue_item *)imem;
+
+               if (i & 1) {
+                       mv_flush_qh(i - 1);
+                       mv_flush_qtd(i - 1);
+               }
        }
 
        INIT_LIST_HEAD(&controller.gadget.ep_list);
-       ep[0].ep.maxpacket = 64;
-       ep[0].ep.name = "ep0";
-       ep[0].desc = &ep0_in_desc;
+
+       /* Init EP 0 */
+       memcpy(&controller.ep[0].ep, &mv_ep_init[0], sizeof(*mv_ep_init));
+       controller.ep[0].desc = &ep0_in_desc;
+       controller.gadget.ep0 = &controller.ep[0].ep;
        INIT_LIST_HEAD(&controller.gadget.ep0->ep_list);
-       for (i = 0; i < 2 * NUM_ENDPOINTS; i++) {
-               if (i != 0) {
-                       ep[i].ep.maxpacket = 512;
-                       ep[i].ep.name = "ep-";
-                       list_add_tail(&ep[i].ep.ep_list,
-                                     &controller.gadget.ep_list);
-                       ep[i].desc = NULL;
-               }
-               ep[i].ep.ops = &mv_ep_ops;
+
+       /* Init EP 1..n */
+       for (i = 1; i < NUM_ENDPOINTS; i++) {
+               memcpy(&controller.ep[i].ep, &mv_ep_init[1],
+                      sizeof(*mv_ep_init));
+               list_add_tail(&controller.ep[i].ep.ep_list,
+                             &controller.gadget.ep_list);
        }
+
        return 0;
 }
 
 int usb_gadget_register_driver(struct usb_gadget_driver *driver)
 {
-       struct mv_udc *udc = controller.udc;
-       int             retval;
-
-       if (!driver
-                       || driver->speed < USB_SPEED_FULL
-                       || !driver->bind
-                       || !driver->setup) {
-               DBG("bad parameter.\n");
+       struct mv_udc *udc;
+       int ret;
+
+       if (!driver)
                return -EINVAL;
-       }
+       if (!driver->bind || !driver->setup || !driver->disconnect)
+               return -EINVAL;
+       if (driver->speed != USB_SPEED_FULL && driver->speed != USB_SPEED_HIGH)
+               return -EINVAL;
+
+       ret = usb_lowlevel_init(0, (void **)&controller.ctrl);
+       if (ret)
+               return ret;
+
+       ret = mvudc_probe();
+       if (!ret) {
+               udc = (struct mv_udc *)controller.ctrl->hcor;
 
-       if (!mvudc_probe()) {
-               usb_lowlevel_init();
                /* select ULPI phy */
                writel(PTS(PTS_ENABLE) | PFSC, &udc->portsc);
        }
-       retval = driver->bind(&controller.gadget);
-       if (retval) {
-               DBG("driver->bind() returned %d\n", retval);
-               return retval;
+
+       ret = driver->bind(&controller.gadget);
+       if (ret) {
+               DBG("driver->bind() returned %d\n", ret);
+               return ret;
        }
        controller.driver = driver;
 
index 706cf0cb7dba246c2c567b5da4111590bb9679b9..fdad739724eacb545817ebaf8128bdba96a82c91 100644 (file)
 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
 #endif
 
-static struct ehci_ctrl {
-       struct ehci_hccr *hccr; /* R/O registers, not need for volatile */
-       struct ehci_hcor *hcor;
-       int rootdev;
-       uint16_t portreset;
-       struct QH qh_list __aligned(USB_DMA_MINALIGN);
-       struct QH periodic_queue __aligned(USB_DMA_MINALIGN);
-       uint32_t *periodic_list;
-       int ntds;
-} ehcic[CONFIG_USB_MAX_CONTROLLER_COUNT];
+static struct ehci_ctrl ehcic[CONFIG_USB_MAX_CONTROLLER_COUNT];
 
 #define ALIGN_END_ADDR(type, ptr, size)                        \
        ((uint32_t)(ptr) + roundup((size) * sizeof(type), USB_DMA_MINALIGN))
@@ -954,7 +945,9 @@ int usb_lowlevel_init(int index, void **controller)
         *         Split Transactions will be spread across microframes using
         *         S-mask and C-mask.
         */
-       ehcic[index].periodic_list = memalign(4096, 1024*4);
+       if (ehcic[index].periodic_list == NULL)
+               ehcic[index].periodic_list = memalign(4096, 1024 * 4);
+
        if (!ehcic[index].periodic_list)
                return -ENOMEM;
        for (i = 0; i < 1024; i++) {
index 3548620ecafc4d1c027aaeb6076945ae96a31ea5..dd11f535adc5937c3fdd6ea2da52cbf53dd24455 100644 (file)
@@ -221,21 +221,12 @@ void __weak board_ehci_hcd_postinit(struct usb_ehci *ehci, int port)
 int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 {
        struct usb_ehci *ehci;
-#ifdef CONFIG_MX53
-       struct clkctl *sc_regs = (struct clkctl *)CCM_BASE_ADDR;
-       u32 reg;
-
-       reg = __raw_readl(&sc_regs->cscmr1) & ~(1 << 26);
-       /* derive USB PHY clock multiplexer from PLL3 */
-       reg |= 1 << 26;
-       __raw_writel(reg, &sc_regs->cscmr1);
-#endif
 
        set_usboh3_clk();
-       enable_usboh3_clk(1);
+       enable_usboh3_clk(true);
        set_usb_phy_clk();
-       enable_usb_phy1_clk(1);
-       enable_usb_phy2_clk(1);
+       enable_usb_phy1_clk(true);
+       enable_usb_phy2_clk(true);
        mdelay(1);
 
        /* Do board specific initialization */
index a47e078f62a14e8b107c8b3859b4776b4a4197ff..3c58f9e656c6d1a2dbe5a2bd103dfbe623a96eb2 100644 (file)
@@ -28,18 +28,21 @@ static struct omap_ehci *const ehci = (struct omap_ehci *)OMAP_EHCI_BASE;
 
 static int omap_uhh_reset(void)
 {
-       unsigned long init = get_timer(0);
-
-       /* perform UHH soft reset, and wait until reset is complete */
-       writel(OMAP_UHH_SYSCONFIG_SOFTRESET, &uhh->sysc);
-
-       /* Wait for UHH reset to complete */
-       while (!(readl(&uhh->syss) & OMAP_UHH_SYSSTATUS_EHCI_RESETDONE))
-               if (get_timer(init) > CONFIG_SYS_HZ) {
-                       debug("OMAP UHH error: timeout resetting ehci\n");
-                       return -EL3RST;
-               }
-
+/*
+ * Soft resetting the UHH module causes instability issues on
+ * all OMAPs so we just avoid it.
+ *
+ * See OMAP36xx Errata
+ *  i571: USB host EHCI may stall when entering smart-standby mode
+ *  i660: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
+ *
+ * On OMAP4/5, soft-resetting the UHH module will put it into
+ * Smart-Idle mode and lead to a deadlock.
+ *
+ * On OMAP3, this doesn't seem to be the case but still instabilities
+ * are observed on beagle (3530 ES1.0) if soft-reset is used.
+ * e.g. NFS root failures with Linux kernel.
+ */
        return 0;
 }
 
@@ -76,6 +79,7 @@ static void omap_usbhs_hsic_init(int port)
        writel(reg, &usbtll->channel_conf + port);
 }
 
+#ifdef CONFIG_USB_ULPI
 static void omap_ehci_soft_phy_reset(int port)
 {
        struct ulpi_viewport ulpi_vp;
@@ -85,6 +89,12 @@ static void omap_ehci_soft_phy_reset(int port)
 
        ulpi_reset(&ulpi_vp);
 }
+#else
+static void omap_ehci_soft_phy_reset(int port)
+{
+       return;
+}
+#endif
 
 inline int __board_usb_init(void)
 {
@@ -93,7 +103,8 @@ inline int __board_usb_init(void)
 int board_usb_init(void) __attribute__((weak, alias("__board_usb_init")));
 
 #if defined(CONFIG_OMAP_EHCI_PHY1_RESET_GPIO) || \
-       defined(CONFIG_OMAP_EHCI_PHY2_RESET_GPIO)
+       defined(CONFIG_OMAP_EHCI_PHY2_RESET_GPIO) || \
+       defined(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO)
 /* controls PHY(s) reset signal(s) */
 static inline void omap_ehci_phy_reset(int on, int delay)
 {
@@ -112,6 +123,10 @@ static inline void omap_ehci_phy_reset(int on, int delay)
        gpio_request(CONFIG_OMAP_EHCI_PHY2_RESET_GPIO, "USB PHY2 reset");
        gpio_direction_output(CONFIG_OMAP_EHCI_PHY2_RESET_GPIO, !on);
 #endif
+#ifdef CONFIG_OMAP_EHCI_PHY3_RESET_GPIO
+       gpio_request(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO, "USB PHY3 reset");
+       gpio_direction_output(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO, !on);
+#endif
 
        /* Hold the PHY in RESET for enough time till DIR is high */
        /* Refer: ISSUE1 */
@@ -195,10 +210,27 @@ int omap_ehci_hcd_init(struct omap_usbhs_board_data *usbhs_pdata,
                else
                        setbits_le32(&reg, OMAP_UHH_HOSTCONFIG_ULPI_P3_BYPASS);
        } else if (rev == OMAP_USBHS_REV2) {
+
                clrsetbits_le32(&reg, (OMAP_P1_MODE_CLEAR | OMAP_P2_MODE_CLEAR),
                                        OMAP4_UHH_HOSTCONFIG_APP_START_CLK);
 
-               /* Clear port mode fields for PHY mode*/
+               /* Clear port mode fields for PHY mode */
+
+               if (is_ehci_hsic_mode(usbhs_pdata->port_mode[0]))
+                       setbits_le32(&reg, OMAP_P1_MODE_HSIC);
+
+               if (is_ehci_hsic_mode(usbhs_pdata->port_mode[1]))
+                       setbits_le32(&reg, OMAP_P2_MODE_HSIC);
+
+       } else if (rev == OMAP_USBHS_REV2_1) {
+
+               clrsetbits_le32(&reg,
+                               (OMAP_P1_MODE_CLEAR |
+                                OMAP_P2_MODE_CLEAR |
+                                OMAP_P3_MODE_CLEAR),
+                               OMAP4_UHH_HOSTCONFIG_APP_START_CLK);
+
+               /* Clear port mode fields for PHY mode */
 
                if (is_ehci_hsic_mode(usbhs_pdata->port_mode[0]))
                        setbits_le32(&reg, OMAP_P1_MODE_HSIC);
index d090f0a53e87349ee96a5bfe7d64a917bf153d0e..bd52afe2626fa58df48b23357cf3c987f4c4bdcf 100644 (file)
@@ -22,6 +22,8 @@
 #ifndef USB_EHCI_H
 #define USB_EHCI_H
 
+#include <usb.h>
+
 #if !defined(CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS)
 #define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
 #endif
@@ -252,6 +254,17 @@ struct QH {
        };
 };
 
+struct ehci_ctrl {
+       struct ehci_hccr *hccr; /* R/O registers, not need for volatile */
+       struct ehci_hcor *hcor;
+       int rootdev;
+       uint16_t portreset;
+       struct QH qh_list __aligned(USB_DMA_MINALIGN);
+       struct QH periodic_queue __aligned(USB_DMA_MINALIGN);
+       uint32_t *periodic_list;
+       int ntds;
+};
+
 /* Low level init functions */
 int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor);
 int ehci_hcd_stop(int index);
index f1fb26c18044c81299cf9965c03aae713bcaf717..6dee1e930e4f9451ccb85a3c99a7b6b34ab3fed2 100644 (file)
@@ -19,6 +19,7 @@ COBJS-$(CONFIG_EXYNOS_MIPI_DSIM) += exynos_mipi_dsi.o exynos_mipi_dsi_common.o \
                                exynos_mipi_dsi_lowlevel.o
 COBJS-$(CONFIG_EXYNOS_PWM_BL) += exynos_pwm_bl.o
 COBJS-$(CONFIG_FSL_DIU_FB) += fsl_diu_fb.o videomodes.o
+COBJS-$(CONFIG_L5F31188) += l5f31188.o
 COBJS-$(CONFIG_MPC8XX_LCD) += mpc8xx_lcd.o
 COBJS-$(CONFIG_PXA_LCD) += pxa_lcd.o
 COBJS-$(CONFIG_S6E8AX0) += s6e8ax0.o
index 96ef8f9c2620186d3588439b8e60faaca4821f2f..fd2885573ca70538e6c7c23a8aa463ff455fd615 100644 (file)
 #include <linux/types.h>
 #include <stdio_dev.h>
 #include <video_font.h>
-#include <video_font_data.h>
 
 #if defined(CONFIG_CMD_DATE)
 #include <rtc.h>
@@ -431,6 +430,16 @@ static const int video_font_draw_table32[16][4] = {
        {0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff}
 };
 
+/*
+ * Implement a weak default function for boards that optionally
+ * need to skip the cfb initialization.
+ */
+__weak int board_cfb_skip(void)
+{
+       /* As default, don't skip cfb init */
+       return 0;
+}
+
 static void video_drawchars(int xx, int yy, unsigned char *s, int count)
 {
        u8 *cdat, *dest, *dest0;
@@ -452,6 +461,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)
                                ((u32 *) dest)[0] =
                                        (video_font_draw_table8[bits >> 4] &
                                         eorx) ^ bgx;
+
+                               if (VIDEO_FONT_WIDTH == 4)
+                                       continue;
+
                                ((u32 *) dest)[1] =
                                        (video_font_draw_table8[bits & 15] &
                                         eorx) ^ bgx;
@@ -477,6 +490,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)
                                        SHORTSWAP32((video_font_draw_table15
                                                     [bits >> 4 & 3] & eorx) ^
                                                    bgx);
+
+                               if (VIDEO_FONT_WIDTH == 4)
+                                       continue;
+
                                ((u32 *) dest)[2] =
                                        SHORTSWAP32((video_font_draw_table15
                                                     [bits >> 2 & 3] & eorx) ^
@@ -507,6 +524,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)
                                        SHORTSWAP32((video_font_draw_table16
                                                     [bits >> 4 & 3] & eorx) ^
                                                    bgx);
+
+                               if (VIDEO_FONT_WIDTH == 4)
+                                       continue;
+
                                ((u32 *) dest)[2] =
                                        SHORTSWAP32((video_font_draw_table16
                                                     [bits >> 2 & 3] & eorx) ^
@@ -541,6 +562,11 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)
                                ((u32 *) dest)[3] =
                                        SWAP32((video_font_draw_table32
                                                [bits >> 4][3] & eorx) ^ bgx);
+
+
+                               if (VIDEO_FONT_WIDTH == 4)
+                                       continue;
+
                                ((u32 *) dest)[4] =
                                        SWAP32((video_font_draw_table32
                                                [bits & 15][0] & eorx) ^ bgx);
@@ -576,6 +602,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)
                                ((u32 *) dest)[2] =
                                        (video_font_draw_table24[bits >> 4][2]
                                         & eorx) ^ bgx;
+
+                               if (VIDEO_FONT_WIDTH == 4)
+                                       continue;
+
                                ((u32 *) dest)[3] =
                                        (video_font_draw_table24[bits & 15][0]
                                         & eorx) ^ bgx;
@@ -1996,6 +2026,8 @@ static void *video_logo(void)
                return video_fb_address + video_logo_height * VIDEO_LINE_LEN;
        }
 #endif
+       if (board_cfb_skip())
+               return 0;
 
        sprintf(info, " %s", version_string);
 
@@ -2205,6 +2237,9 @@ int drv_video_init(void)
        /* Init video chip - returns with framebuffer cleared */
        skip_dev_init = (video_init() == -1);
 
+       if (board_cfb_skip())
+               return 0;
+
 #if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)
        debug("KBD: Keyboard init ...\n");
        skip_dev_init |= (VIDEO_KBD_INIT_FCT == -1);
index 373991ddee16a4c05a85b81ece15428f85c9b84c..3a5f325cd30b97337c77280d5dc8877d2c86fceb 100644 (file)
 #include <asm/arch/hardware.h>
 
 #include "videomodes.h"
-#include <asm/arch/da8xx-fb.h>
+#include "da8xx-fb.h"
+
+#if !defined(DA8XX_LCD_CNTL_BASE)
+#define DA8XX_LCD_CNTL_BASE    DAVINCI_LCD_CNTL_BASE
+#endif
 
 #define DRIVER_NAME "da8xx_lcdc"
 
+#define LCD_VERSION_1  1
+#define LCD_VERSION_2  2
+
 /* LCD Status Register */
 #define LCD_END_OF_FRAME1              (1 << 9)
 #define LCD_END_OF_FRAME0              (1 << 8)
 #define LCD_DMA_BURST_4                        0x2
 #define LCD_DMA_BURST_8                        0x3
 #define LCD_DMA_BURST_16               0x4
-#define LCD_END_OF_FRAME_INT_ENA       (1 << 2)
+#define LCD_V1_END_OF_FRAME_INT_ENA    (1 << 2)
+#define LCD_V2_END_OF_FRAME0_INT_ENA   (1 << 8)
+#define LCD_V2_END_OF_FRAME1_INT_ENA   (1 << 9)
 #define LCD_DUAL_FRAME_BUFFER_ENABLE   (1 << 0)
 
+#define LCD_V2_TFT_24BPP_MODE          (1 << 25)
+#define LCD_V2_TFT_24BPP_UNPACK                (1 << 26)
+
 /* LCD Control Register */
 #define LCD_CLK_DIVISOR(x)             ((x) << 8)
 #define LCD_RASTER_MODE                        0x01
 #define LCD_MONO_8BIT_MODE             (1 << 9)
 #define LCD_RASTER_ORDER               (1 << 8)
 #define LCD_TFT_MODE                   (1 << 7)
-#define LCD_UNDERFLOW_INT_ENA          (1 << 6)
-#define LCD_PL_ENABLE                  (1 << 4)
+#define LCD_V1_UNDERFLOW_INT_ENA       (1 << 6)
+#define LCD_V2_UNDERFLOW_INT_ENA       (1 << 5)
+#define LCD_V1_PL_INT_ENA              (1 << 4)
+#define LCD_V2_PL_INT_ENA              (1 << 6)
 #define LCD_MONOCHROME_MODE            (1 << 1)
 #define LCD_RASTER_ENABLE              (1 << 0)
 #define LCD_TFT_ALT_ENABLE             (1 << 23)
 #define LCD_STN_565_ENABLE             (1 << 24)
+#define LCD_V2_DMA_CLK_EN              (1 << 2)
+#define LCD_V2_LIDD_CLK_EN             (1 << 1)
+#define LCD_V2_CORE_CLK_EN             (1 << 0)
+#define LCD_V2_LPP_B10                 26
+#define LCD_V2_TFT_24BPP_MODE          (1 << 25)
+#define LCD_V2_TFT_24BPP_UNPACK                (1 << 26)
 
 /* LCD Raster Timing 2 Register */
 #define LCD_AC_BIAS_TRANSITIONS_PER_INT(x)     ((x) << 16)
@@ -74,6 +94,8 @@
 #define LCD_INVERT_LINE_CLOCK                  (1 << 21)
 #define LCD_INVERT_FRAME_CLOCK                 (1 << 20)
 
+/* Clock registers available only on Version 2 */
+#define  LCD_CLK_MAIN_RESET                    (1 << 3)
 /* LCD Block */
 struct da8xx_lcd_regs {
        u32     revid;
@@ -97,6 +119,15 @@ struct da8xx_lcd_regs {
        u32     dma_frm_buf_ceiling_addr_0;
        u32     dma_frm_buf_base_addr_1;
        u32     dma_frm_buf_ceiling_addr_1;
+       u32     resv1;
+       u32     raw_stat;
+       u32     masked_stat;
+       u32     int_ena_set;
+       u32     int_ena_clr;
+       u32     end_of_int_ind;
+       /* Clock registers available only on Version 2 */
+       u32     clk_ena;
+       u32     clk_reset;
 };
 
 #define LCD_NUM_BUFFERS        1
@@ -107,6 +138,8 @@ struct da8xx_lcd_regs {
 #define RIGHT_MARGIN   64
 #define UPPER_MARGIN   32
 #define LOWER_MARGIN   32
+#define WAIT_FOR_FRAME_DONE    true
+#define NO_WAIT_FOR_FRAME_DONE false
 
 #define calc_fbsize() (panel.plnSizeX * panel.plnSizeY * panel.gdfBytesPP)
 
@@ -119,6 +152,8 @@ static GraphicDevice gpanel;
 static const struct da8xx_panel *lcd_panel;
 static struct fb_info *da8xx_fb_info;
 static int bits_x_pixel;
+static unsigned int lcd_revision;
+const struct lcd_ctrl_config *da8xx_lcd_cfg;
 
 static inline unsigned int lcdc_read(u32 *addr)
 {
@@ -179,35 +214,24 @@ static struct fb_fix_screeninfo da8xx_fb_fix = {
        .accel = FB_ACCEL_NONE
 };
 
-static const struct display_panel disp_panel = {
-       QVGA,
-       16,
-       16,
-       COLOR_ACTIVE,
-};
-
-static const struct lcd_ctrl_config lcd_cfg = {
-       &disp_panel,
-       .ac_bias                = 255,
-       .ac_bias_intrpt         = 0,
-       .dma_burst_sz           = 16,
-       .bpp                    = 16,
-       .fdd                    = 255,
-       .tft_alt_mode           = 0,
-       .stn_565_mode           = 0,
-       .mono_8bit_mode         = 0,
-       .invert_line_clock      = 1,
-       .invert_frm_clock       = 1,
-       .sync_edge              = 0,
-       .sync_ctrl              = 1,
-       .raster_order           = 0,
-};
-
 /* Enable the Raster Engine of the LCD Controller */
 static inline void lcd_enable_raster(void)
 {
        u32 reg;
 
+       /* Put LCDC in reset for several cycles */
+       if (lcd_revision == LCD_VERSION_2)
+               lcdc_write(LCD_CLK_MAIN_RESET,
+                          &da8xx_fb_reg_base->clk_reset);
+
+       udelay(1000);
+       /* Bring LCDC out of reset */
+       if (lcd_revision == LCD_VERSION_2)
+               lcdc_write(0,
+                          &da8xx_fb_reg_base->clk_reset);
+
+       udelay(1000);
+
        reg = lcdc_read(&da8xx_fb_reg_base->raster_ctrl);
        if (!(reg & LCD_RASTER_ENABLE))
                lcdc_write(reg | LCD_RASTER_ENABLE,
@@ -215,14 +239,40 @@ static inline void lcd_enable_raster(void)
 }
 
 /* Disable the Raster Engine of the LCD Controller */
-static inline void lcd_disable_raster(void)
+static inline void lcd_disable_raster(bool wait_for_frame_done)
 {
        u32 reg;
+       u32 loop_cnt = 0;
+       u32 stat;
+       u32 i = 0;
+
+       if (wait_for_frame_done)
+               loop_cnt = 5000;
 
        reg = lcdc_read(&da8xx_fb_reg_base->raster_ctrl);
        if (reg & LCD_RASTER_ENABLE)
                lcdc_write(reg & ~LCD_RASTER_ENABLE,
                        &da8xx_fb_reg_base->raster_ctrl);
+
+       /* Wait for the current frame to complete */
+       do {
+               if (lcd_revision == LCD_VERSION_1)
+                       stat = lcdc_read(&da8xx_fb_reg_base->stat);
+               else
+                       stat = lcdc_read(&da8xx_fb_reg_base->raw_stat);
+
+               mdelay(1);
+       } while (!(stat & 0x01) && (i++ < loop_cnt));
+
+       if (lcd_revision == LCD_VERSION_1)
+               lcdc_write(stat, &da8xx_fb_reg_base->stat);
+       else
+               lcdc_write(stat, &da8xx_fb_reg_base->raw_stat);
+
+       if ((loop_cnt != 0) && (i >= loop_cnt)) {
+               printf("LCD Controller timed out\n");
+               return;
+       }
 }
 
 static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
@@ -231,6 +281,7 @@ static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
        u32 end;
        u32 reg_ras;
        u32 reg_dma;
+       u32 reg_int;
 
        /* init reg to clear PLM (loading mode) fields */
        reg_ras = lcdc_read(&da8xx_fb_reg_base->raster_ctrl);
@@ -243,7 +294,15 @@ static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
                end      = par->dma_end;
 
                reg_ras |= LCD_PALETTE_LOAD_MODE(DATA_ONLY);
-               reg_dma |= LCD_END_OF_FRAME_INT_ENA;
+               if (lcd_revision == LCD_VERSION_1) {
+                       reg_dma |= LCD_V1_END_OF_FRAME_INT_ENA;
+               } else {
+                       reg_int = lcdc_read(&da8xx_fb_reg_base->int_ena_set) |
+                               LCD_V2_END_OF_FRAME0_INT_ENA |
+                               LCD_V2_END_OF_FRAME1_INT_ENA |
+                               LCD_V2_UNDERFLOW_INT_ENA | LCD_SYNC_LOST;
+                       lcdc_write(reg_int, &da8xx_fb_reg_base->int_ena_set);
+               }
 
 #if (LCD_NUM_BUFFERS == 2)
                reg_dma |= LCD_DUAL_FRAME_BUFFER_ENABLE;
@@ -264,7 +323,13 @@ static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
                end      = start + par->palette_sz - 1;
 
                reg_ras |= LCD_PALETTE_LOAD_MODE(PALETTE_ONLY);
-               reg_ras |= LCD_PL_ENABLE;
+               if (lcd_revision == LCD_VERSION_1) {
+                       reg_ras |= LCD_V1_PL_INT_ENA;
+               } else {
+                       reg_int = lcdc_read(&da8xx_fb_reg_base->int_ena_set) |
+                               LCD_V2_PL_INT_ENA;
+                       lcdc_write(reg_int, &da8xx_fb_reg_base->int_ena_set);
+               }
 
                lcdc_write(start, &da8xx_fb_reg_base->dma_frm_buf_base_addr_0);
                lcdc_write(end, &da8xx_fb_reg_base->dma_frm_buf_ceiling_addr_0);
@@ -348,6 +413,7 @@ static void lcd_cfg_vertical_sync(int back_porch, int pulse_width,
 static int lcd_cfg_display(const struct lcd_ctrl_config *cfg)
 {
        u32 reg;
+       u32 reg_int;
 
        reg = lcdc_read(&da8xx_fb_reg_base->raster_ctrl) & ~(LCD_TFT_MODE |
                                                LCD_MONO_8BIT_MODE |
@@ -375,7 +441,13 @@ static int lcd_cfg_display(const struct lcd_ctrl_config *cfg)
        }
 
        /* enable additional interrupts here */
-       reg |= LCD_UNDERFLOW_INT_ENA;
+       if (lcd_revision == LCD_VERSION_1) {
+               reg |= LCD_V1_UNDERFLOW_INT_ENA;
+       } else {
+               reg_int = lcdc_read(&da8xx_fb_reg_base->int_ena_set) |
+                       LCD_V2_UNDERFLOW_INT_ENA;
+               lcdc_write(reg_int, &da8xx_fb_reg_base->int_ena_set);
+       }
 
        lcdc_write(reg, &da8xx_fb_reg_base->raster_ctrl);
 
@@ -413,22 +485,53 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,
 
        /* Set the Panel Width */
        /* Pixels per line = (PPL + 1)*16 */
-       /*0x3F in bits 4..9 gives max horisontal resolution = 1024 pixels*/
-       width &= 0x3f0;
+       if (lcd_revision == LCD_VERSION_1) {
+               /*
+                * 0x3F in bits 4..9 gives max horisontal resolution = 1024
+                * pixels
+                */
+               width &= 0x3f0;
+       } else {
+               /*
+                * 0x7F in bits 4..10 gives max horizontal resolution = 2048
+                * pixels.
+                */
+               width &= 0x7f0;
+       }
        reg = lcdc_read(&da8xx_fb_reg_base->raster_timing_0);
        reg &= 0xfffffc00;
-       reg |= ((width >> 4) - 1) << 4;
+       if (lcd_revision == LCD_VERSION_1) {
+               reg |= ((width >> 4) - 1) << 4;
+       } else {
+               width = (width >> 4) - 1;
+               reg |= ((width & 0x3f) << 4) | ((width & 0x40) >> 3);
+       }
        lcdc_write(reg, &da8xx_fb_reg_base->raster_timing_0);
 
        /* Set the Panel Height */
+       /* Set bits 9:0 of Lines Per Pixel */
        reg = lcdc_read(&da8xx_fb_reg_base->raster_timing_1);
        reg = ((height - 1) & 0x3ff) | (reg & 0xfffffc00);
        lcdc_write(reg, &da8xx_fb_reg_base->raster_timing_1);
 
+       /* Set bit 10 of Lines Per Pixel */
+       if (lcd_revision == LCD_VERSION_2) {
+               reg = lcdc_read(&da8xx_fb_reg_base->raster_timing_2);
+               reg |= ((height - 1) & 0x400) << 16;
+               lcdc_write(reg, &da8xx_fb_reg_base->raster_timing_2);
+       }
+
        /* Set the Raster Order of the Frame Buffer */
        reg = lcdc_read(&da8xx_fb_reg_base->raster_ctrl) & ~(1 << 8);
        if (raster_order)
                reg |= LCD_RASTER_ORDER;
+
+       if (bpp == 24)
+               reg |= (LCD_TFT_MODE | LCD_V2_TFT_24BPP_MODE);
+       else if (bpp == 32)
+               reg |= (LCD_TFT_MODE | LCD_V2_TFT_24BPP_MODE
+                               | LCD_V2_TFT_24BPP_UNPACK);
+
        lcdc_write(reg, &da8xx_fb_reg_base->raster_ctrl);
 
        switch (bpp) {
@@ -436,6 +539,8 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,
        case 2:
        case 4:
        case 16:
+       case 24:
+       case 32:
                par->palette_sz = 16 * 2;
                break;
 
@@ -490,6 +595,23 @@ static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
 
                par->pseudo_palette[regno] = red | green | blue;
 
+               if (palette[0] != 0x4000) {
+                       update_hw = 1;
+                       palette[0] = 0x4000;
+               }
+       } else if (((info->var.bits_per_pixel == 32) && regno < 32) ||
+                  ((info->var.bits_per_pixel == 24) && regno < 24)) {
+               red >>= (24 - info->var.red.length);
+               red <<= info->var.red.offset;
+
+               green >>= (24 - info->var.green.length);
+               green <<= info->var.green.offset;
+
+               blue >>= (24 - info->var.blue.length);
+               blue <<= info->var.blue.offset;
+
+               par->pseudo_palette[regno] = red | green | blue;
+
                if (palette[0] != 0x4000) {
                        update_hw = 1;
                        palette[0] = 0x4000;
@@ -506,11 +628,18 @@ static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
 static void lcd_reset(struct da8xx_fb_par *par)
 {
        /* Disable the Raster if previously Enabled */
-       lcd_disable_raster();
+       lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
 
        /* DMA has to be disabled */
        lcdc_write(0, &da8xx_fb_reg_base->dma_ctrl);
        lcdc_write(0, &da8xx_fb_reg_base->raster_ctrl);
+
+       if (lcd_revision == LCD_VERSION_2) {
+               lcdc_write(0, &da8xx_fb_reg_base->int_ena_set);
+               /* Write 1 to reset */
+               lcdc_write(LCD_CLK_MAIN_RESET, &da8xx_fb_reg_base->clk_reset);
+               lcdc_write(0, &da8xx_fb_reg_base->clk_reset);
+       }
 }
 
 static void lcd_calc_clk_divider(struct da8xx_fb_par *par)
@@ -521,12 +650,17 @@ static void lcd_calc_clk_divider(struct da8xx_fb_par *par)
        lcd_clk = clk_get(2);
 
        div = lcd_clk / par->pxl_clk;
-       debug("LCD Clock: 0x%x Divider: 0x%x PixClk: 0x%x\n",
-               lcd_clk, div, par->pxl_clk);
+       debug("LCD Clock: %d Divider: %d PixClk: %d\n",
+             lcd_clk, div, par->pxl_clk);
 
        /* Configure the LCD clock divisor. */
        lcdc_write(LCD_CLK_DIVISOR(div) |
                        (LCD_RASTER_MODE & 0x1), &da8xx_fb_reg_base->ctrl);
+
+       if (lcd_revision == LCD_VERSION_2)
+               lcdc_write(LCD_V2_DMA_CLK_EN | LCD_V2_LIDD_CLK_EN |
+                               LCD_V2_CORE_CLK_EN,
+                               &da8xx_fb_reg_base->clk_ena);
 }
 
 static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg,
@@ -566,7 +700,8 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg,
        if (ret < 0)
                return ret;
 
-       if (QVGA != cfg->p_disp_panel->panel_type)
+       if ((QVGA != cfg->p_disp_panel->panel_type) &&
+           (WVGA != cfg->p_disp_panel->panel_type))
                return -EINVAL;
 
        if (cfg->bpp <= cfg->p_disp_panel->max_bpp &&
@@ -602,7 +737,7 @@ static void lcdc_dma_start(void)
                &da8xx_fb_reg_base->dma_frm_buf_ceiling_addr_1);
 }
 
-static u32 lcdc_irq_handler(void)
+static u32 lcdc_irq_handler_rev01(void)
 {
        struct da8xx_fb_par *par = da8xx_fb_info->par;
        u32 stat = lcdc_read(&da8xx_fb_reg_base->stat);
@@ -610,7 +745,7 @@ static u32 lcdc_irq_handler(void)
 
        if ((stat & LCD_SYNC_LOST) && (stat & LCD_FIFO_UNDERFLOW)) {
                debug("LCD_SYNC_LOST\n");
-               lcd_disable_raster();
+               lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
                lcdc_write(stat, &da8xx_fb_reg_base->stat);
                lcd_enable_raster();
                return LCD_SYNC_LOST;
@@ -622,13 +757,13 @@ static u32 lcdc_irq_handler(void)
                 * interrupt via the following write to the status register. If
                 * this is done after then one gets multiple PL done interrupts.
                 */
-               lcd_disable_raster();
+               lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
 
                lcdc_write(stat, &da8xx_fb_reg_base->stat);
 
                /* Disable PL completion inerrupt */
                reg_ras  = lcdc_read(&da8xx_fb_reg_base->raster_ctrl);
-               reg_ras &= ~LCD_PL_ENABLE;
+               reg_ras &= ~LCD_V1_PL_INT_ENA;
                lcdc_write(reg_ras, &da8xx_fb_reg_base->raster_ctrl);
 
                /* Setup and start data loading mode */
@@ -650,6 +785,66 @@ static u32 lcdc_irq_handler(void)
        return stat;
 }
 
+static u32 lcdc_irq_handler_rev02(void)
+{
+       struct da8xx_fb_par *par = da8xx_fb_info->par;
+       u32 stat = lcdc_read(&da8xx_fb_reg_base->masked_stat);
+       u32 reg_int;
+
+       if ((stat & LCD_SYNC_LOST) && (stat & LCD_FIFO_UNDERFLOW)) {
+               debug("LCD_SYNC_LOST\n");
+               lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
+               lcdc_write(stat, &da8xx_fb_reg_base->masked_stat);
+               lcd_enable_raster();
+               lcdc_write(0, &da8xx_fb_reg_base->end_of_int_ind);
+               return LCD_SYNC_LOST;
+       } else if (stat & LCD_PL_LOAD_DONE) {
+               debug("LCD_PL_LOAD_DONE\n");
+               /*
+                * Must disable raster before changing state of any control bit.
+                * And also must be disabled before clearing the PL loading
+                * interrupt via the following write to the status register. If
+                * this is done after then one gets multiple PL done interrupts.
+                */
+               lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
+
+               lcdc_write(stat, &da8xx_fb_reg_base->masked_stat);
+
+               /* Disable PL completion inerrupt */
+               reg_int  = lcdc_read(&da8xx_fb_reg_base->int_ena_clr) |
+                       (LCD_V2_PL_INT_ENA);
+               lcdc_write(reg_int, &da8xx_fb_reg_base->int_ena_clr);
+
+               /* Setup and start data loading mode */
+               lcd_blit(LOAD_DATA, par);
+               lcdc_write(0, &da8xx_fb_reg_base->end_of_int_ind);
+               return LCD_PL_LOAD_DONE;
+       } else {
+               lcdc_write(stat, &da8xx_fb_reg_base->masked_stat);
+
+               if (stat & LCD_END_OF_FRAME0)
+                       debug("LCD_END_OF_FRAME0\n");
+
+               lcdc_write(par->dma_start,
+                          &da8xx_fb_reg_base->dma_frm_buf_base_addr_0);
+               lcdc_write(par->dma_end,
+                          &da8xx_fb_reg_base->dma_frm_buf_ceiling_addr_0);
+               par->vsync_flag = 1;
+               lcdc_write(0, &da8xx_fb_reg_base->end_of_int_ind);
+               return LCD_END_OF_FRAME0;
+       }
+       lcdc_write(0, &da8xx_fb_reg_base->end_of_int_ind);
+       return stat;
+}
+
+static u32 lcdc_irq_handler(void)
+{
+       if (lcd_revision == LCD_VERSION_1)
+               return lcdc_irq_handler_rev01();
+       else
+               return lcdc_irq_handler_rev02();
+}
+
 static u32 wait_for_event(u32 event)
 {
        u32 timeout = 50000;
@@ -673,6 +868,7 @@ void *video_hw_init(void)
 {
        struct da8xx_fb_par *par;
        u32 size;
+       u32 rev;
        char *p;
 
        if (!lcd_panel) {
@@ -685,6 +881,10 @@ void *video_hw_init(void)
        gpanel.plnSizeY = lcd_panel->height;
 
        switch (bits_x_pixel) {
+       case 32:
+               gpanel.gdfBytesPP = 4;
+               gpanel.gdfIndex = GDF_32BIT_X888RGB;
+               break;
        case 24:
                gpanel.gdfBytesPP = 4;
                gpanel.gdfIndex = GDF_32BIT_X888RGB;
@@ -699,12 +899,29 @@ void *video_hw_init(void)
                break;
        }
 
-       da8xx_fb_reg_base = (struct da8xx_lcd_regs *)DAVINCI_LCD_CNTL_BASE;
+       da8xx_fb_reg_base = (struct da8xx_lcd_regs *)DA8XX_LCD_CNTL_BASE;
+
+       /* Determine LCD IP Version */
+       rev = lcdc_read(&da8xx_fb_reg_base->revid);
+       switch (rev) {
+       case 0x4C100102:
+               lcd_revision = LCD_VERSION_1;
+               break;
+       case 0x4F200800:
+       case 0x4F201000:
+               lcd_revision = LCD_VERSION_2;
+               break;
+       default:
+               printf("Unknown PID Reg value 0x%x, defaulting to LCD revision 1\n",
+                      rev);
+               lcd_revision = LCD_VERSION_1;
+               break;
+       }
 
-       debug("Resolution: %dx%d %x\n",
-               gpanel.winSizeX,
-               gpanel.winSizeY,
-               lcd_cfg.bpp);
+       debug("rev: 0x%x Resolution: %dx%d %d\n", rev,
+             gpanel.winSizeX,
+             gpanel.winSizeY,
+             da8xx_lcd_cfg->bpp);
 
        size = sizeof(struct fb_info) + sizeof(struct da8xx_fb_par);
        da8xx_fb_info = malloc(size);
@@ -722,13 +939,14 @@ void *video_hw_init(void)
        par = da8xx_fb_info->par;
        par->pxl_clk = lcd_panel->pxl_clk;
 
-       if (lcd_init(par, &lcd_cfg, lcd_panel) < 0) {
+       if (lcd_init(par, da8xx_lcd_cfg, lcd_panel) < 0) {
                printf("lcd_init failed\n");
                goto err_release_fb;
        }
 
        /* allocate frame buffer */
-       par->vram_size = lcd_panel->width * lcd_panel->height * lcd_cfg.bpp;
+       par->vram_size = lcd_panel->width * lcd_panel->height *
+                       da8xx_lcd_cfg->bpp;
        par->vram_size = par->vram_size * LCD_NUM_BUFFERS / 8;
 
        par->vram_virt = malloc(par->vram_size);
@@ -741,12 +959,13 @@ void *video_hw_init(void)
                printf("GLCD: malloc for frame buffer failed\n");
                goto err_release_fb;
        }
+       gd->fb_base = (int)par->vram_virt;
 
        gpanel.frameAdrs = (unsigned int)par->vram_virt;
        da8xx_fb_info->screen_base = (char *) par->vram_virt;
        da8xx_fb_fix.smem_start = gpanel.frameAdrs;
        da8xx_fb_fix.smem_len = par->vram_size;
-       da8xx_fb_fix.line_length = (lcd_panel->width * lcd_cfg.bpp) / 8;
+       da8xx_fb_fix.line_length = (lcd_panel->width * da8xx_lcd_cfg->bpp) / 8;
 
        par->dma_start = par->vram_phys;
        par->dma_end   = par->dma_start + lcd_panel->height *
@@ -762,7 +981,7 @@ void *video_hw_init(void)
        par->p_palette_base = (unsigned int)par->v_palette_base;
 
        /* Initialize par */
-       da8xx_fb_info->var.bits_per_pixel = lcd_cfg.bpp;
+       da8xx_fb_info->var.bits_per_pixel = da8xx_lcd_cfg->bpp;
 
        da8xx_fb_var.xres = lcd_panel->width;
        da8xx_fb_var.xres_virtual = lcd_panel->width;
@@ -771,8 +990,8 @@ void *video_hw_init(void)
        da8xx_fb_var.yres_virtual = lcd_panel->height * LCD_NUM_BUFFERS;
 
        da8xx_fb_var.grayscale =
-           lcd_cfg.p_disp_panel->panel_shade == MONOCHROME ? 1 : 0;
-       da8xx_fb_var.bits_per_pixel = lcd_cfg.bpp;
+           da8xx_lcd_cfg->p_disp_panel->panel_shade == MONOCHROME ? 1 : 0;
+       da8xx_fb_var.bits_per_pixel = da8xx_lcd_cfg->bpp;
 
        da8xx_fb_var.hsync_len = lcd_panel->hsw;
        da8xx_fb_var.vsync_len = lcd_panel->vsw;
@@ -787,8 +1006,11 @@ void *video_hw_init(void)
 
        /* Clear interrupt */
        memset((void *)par->vram_virt, 0, par->vram_size);
-       lcd_disable_raster();
-       lcdc_write(0xFFFF, &da8xx_fb_reg_base->stat);
+       lcd_disable_raster(NO_WAIT_FOR_FRAME_DONE);
+       if (lcd_revision == LCD_VERSION_1)
+               lcdc_write(0xFFFF, &da8xx_fb_reg_base->stat);
+       else
+               lcdc_write(0xFFFF, &da8xx_fb_reg_base->masked_stat);
        debug("Palette at 0x%x size %d\n", par->p_palette_base,
                par->palette_sz);
        lcdc_dma_start();
@@ -823,8 +1045,10 @@ void video_set_lut(unsigned int index,    /* color number */
        return;
 }
 
-void da8xx_video_init(const struct da8xx_panel *panel, int bits_pixel)
+void da8xx_video_init(const struct da8xx_panel *panel,
+                     const struct lcd_ctrl_config *lcd_cfg, int bits_pixel)
 {
        lcd_panel = panel;
+       da8xx_lcd_cfg = lcd_cfg;
        bits_x_pixel = bits_pixel;
 }
similarity index 94%
rename from arch/arm/include/asm/arch-davinci/da8xx-fb.h
rename to drivers/video/da8xx-fb.h
index c115034f061844f7e418b298a3aaeafdb1bd6bcf..6447a4047de204259d6c9ab15b63770ff53aaaee 100644 (file)
@@ -17,7 +17,8 @@
 #define DA8XX_FB_H
 
 enum panel_type {
-       QVGA = 0
+       QVGA = 0,
+       WVGA
 };
 
 enum panel_shade {
@@ -108,6 +109,8 @@ struct lcd_sync_arg {
        int pulse_width;
 };
 
-void da8xx_video_init(const struct da8xx_panel *panel, int bits_pixel);
+void da8xx_video_init(const struct da8xx_panel *panel,
+                     const struct lcd_ctrl_config *lcd_cfg,
+                     int bits_pixel);
 
 #endif  /* ifndef DA8XX_FB_H */
index 2cc847f6e12869e3e270e3f3765e07baaafb56ac..97e12484fd126d473f0774dbf9b8ff31c81af839 100644 (file)
@@ -50,7 +50,7 @@ static unsigned int dpll_table[15] = {
 };
 
 static void exynos_mipi_dsi_long_data_wr(struct mipi_dsim_device *dsim,
-               unsigned int data0, unsigned int data1)
+               const unsigned char *data0, unsigned int data1)
 {
        unsigned int data_cnt = 0, payload = 0;
 
@@ -62,42 +62,40 @@ static void exynos_mipi_dsi_long_data_wr(struct mipi_dsim_device *dsim,
                 */
                if ((data1 - data_cnt) < 4) {
                        if ((data1 - data_cnt) == 3) {
-                               payload = *(u8 *)(data0 + data_cnt) |
-                                       (*(u8 *)(data0 + (data_cnt + 1))) << 8 |
-                                       (*(u8 *)(data0 + (data_cnt + 2))) << 16;
+                               payload = data0[data_cnt] |
+                                       data0[data_cnt + 1] << 8 |
+                                       data0[data_cnt + 2] << 16;
                        debug("count = 3 payload = %x, %x %x %x\n",
-                               payload, *(u8 *)(data0 + data_cnt),
-                               *(u8 *)(data0 + (data_cnt + 1)),
-                               *(u8 *)(data0 + (data_cnt + 2)));
+                               payload, data0[data_cnt],
+                               data0[data_cnt + 1],
+                               data0[data_cnt + 2]);
                        } else if ((data1 - data_cnt) == 2) {
-                               payload = *(u8 *)(data0 + data_cnt) |
-                                       (*(u8 *)(data0 + (data_cnt + 1))) << 8;
+                               payload = data0[data_cnt] |
+                                       data0[data_cnt + 1] << 8;
                        debug("count = 2 payload = %x, %x %x\n", payload,
-                               *(u8 *)(data0 + data_cnt),
-                               *(u8 *)(data0 + (data_cnt + 1)));
+                               data0[data_cnt], data0[data_cnt + 1]);
                        } else if ((data1 - data_cnt) == 1) {
-                               payload = *(u8 *)(data0 + data_cnt);
+                               payload = data0[data_cnt];
                        }
                } else {
                        /* send 4bytes per one time. */
-                       payload = *(u8 *)(data0 + data_cnt) |
-                               (*(u8 *)(data0 + (data_cnt + 1))) << 8 |
-                               (*(u8 *)(data0 + (data_cnt + 2))) << 16 |
-                               (*(u8 *)(data0 + (data_cnt + 3))) << 24;
+                       payload = data0[data_cnt] |
+                               data0[data_cnt + 1] << 8 |
+                               data0[data_cnt + 2] << 16 |
+                               data0[data_cnt + 3] << 24;
 
                        debug("count = 4 payload = %x, %x %x %x %x\n",
                                payload, *(u8 *)(data0 + data_cnt),
-                               *(u8 *)(data0 + (data_cnt + 1)),
-                               *(u8 *)(data0 + (data_cnt + 2)),
-                               *(u8 *)(data0 + (data_cnt + 3)));
-
+                               data0[data_cnt + 1],
+                               data0[data_cnt + 2],
+                               data0[data_cnt + 3]);
                }
                exynos_mipi_dsi_wr_tx_data(dsim, payload);
        }
 }
 
 int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
-       unsigned int data0, unsigned int data1)
+       const unsigned char *data0, unsigned int data1)
 {
        unsigned int timeout = TRY_GET_FIFO_TIMEOUT;
        unsigned long delay_val, delay;
@@ -136,8 +134,8 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
        case MIPI_DSI_DCS_SHORT_WRITE_PARAM:
        case MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE:
                debug("data0 = %x data1 = %x\n",
-                               data0, data1);
-               exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0, data1);
+                               data0[0], data0[1]);
+               exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0[0], data0[1]);
                if (check_rx_ack) {
                        /* process response func should be implemented */
                        return 0;
@@ -150,7 +148,7 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
        case MIPI_DSI_COLOR_MODE_ON:
        case MIPI_DSI_SHUTDOWN_PERIPHERAL:
        case MIPI_DSI_TURN_ON_PERIPHERAL:
-               exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0, data1);
+               exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0[0], data0[1]);
                if (check_rx_ack) {
                        /* process response func should be implemented. */
                        return 0;
@@ -172,7 +170,7 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
        case MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM:
        case MIPI_DSI_DCS_READ:
                exynos_mipi_dsi_clear_all_interrupt(dsim);
-               exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0, data1);
+               exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0[0], data0[1]);
                /* process response func should be implemented. */
                return 0;
 
@@ -183,21 +181,19 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
        case MIPI_DSI_GENERIC_LONG_WRITE:
        case MIPI_DSI_DCS_LONG_WRITE:
        {
-               unsigned int data_cnt = 0, payload = 0;
+               unsigned int payload = 0;
 
                /* if data count is less then 4, then send 3bytes data.  */
                if (data1 < 4) {
-                       payload = *(u8 *)(data0) |
-                               *(u8 *)(data0 + 1) << 8 |
-                               *(u8 *)(data0 + 2) << 16;
+                       payload = data0[0] |
+                               data0[1] << 8 |
+                               data0[2] << 16;
 
                        exynos_mipi_dsi_wr_tx_data(dsim, payload);
 
                        debug("count = %d payload = %x,%x %x %x\n",
-                               data1, payload,
-                               *(u8 *)(data0 + data_cnt),
-                               *(u8 *)(data0 + (data_cnt + 1)),
-                               *(u8 *)(data0 + (data_cnt + 2)));
+                               data1, payload, data0[0],
+                               data0[1], data0[2]);
                } else {
                        /* in case that data count is more then 4 */
                        exynos_mipi_dsi_long_data_wr(dsim, data0, data1);
index 318c7ecec331b3893169ca2048996cb17cb49495..ef6510abdd8997484015447a2ff6f9d5fc721e78 100644 (file)
@@ -13,7 +13,7 @@
 #define _EXYNOS_MIPI_DSI_COMMON_H
 
 int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
-       unsigned int data0, unsigned int data1);
+       const unsigned char *data0, unsigned int data1);
 int exynos_mipi_dsi_pll_on(struct mipi_dsim_device *dsim, unsigned int enable);
 unsigned long exynos_mipi_dsi_change_pll(struct mipi_dsim_device *dsim,
        unsigned int pre_divider, unsigned int main_divider,
index b47eee45defc7ededb639df607f00ba92edb7fc9..1313bcea4cfe88a7625ec978c0e77bee2426cff5 100644 (file)
@@ -600,7 +600,7 @@ unsigned int exynos_mipi_dsi_get_fifo_state(struct mipi_dsim_device *dsim)
 }
 
 void exynos_mipi_dsi_wr_tx_header(struct mipi_dsim_device *dsim,
-       unsigned int di, unsigned int data0, unsigned int data1)
+       unsigned int di, const unsigned char data0, const unsigned char data1)
 {
        struct exynos_mipi_dsim *mipi_dsim =
                (struct exynos_mipi_dsim *)samsung_get_base_mipi_dsim();
index 8a45954e9eee078189b19afeacfb2dfe63f9f031..59f6ce09e40ce51dafebbe74a215ba343c883ae9 100644 (file)
@@ -91,7 +91,7 @@ unsigned int _exynos_mipi_dsi_get_frame_done_status(struct mipi_dsim_device
                                                *dsim);
 void _exynos_mipi_dsi_clear_frame_done(struct mipi_dsim_device *dsim);
 void exynos_mipi_dsi_wr_tx_header(struct mipi_dsim_device *dsim,
-               unsigned int di, unsigned int data0, unsigned int data1);
+               unsigned int di, const unsigned char data0, const unsigned char data1);
 void exynos_mipi_dsi_wr_tx_data(struct mipi_dsim_device *dsim,
                unsigned int tx_data);
 
diff --git a/drivers/video/l5f31188.c b/drivers/video/l5f31188.c
new file mode 100644 (file)
index 0000000..3312dcf
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ * Hyungwon Hwang <human.hwang@samsung.com>
+ *
+ * SPDX-License-Identifier:      GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/mipi_dsim.h>
+
+#define SCAN_FROM_LEFT_TO_RIGHT 0
+#define SCAN_FROM_RIGHT_TO_LEFT 1
+#define SCAN_FROM_TOP_TO_BOTTOM 0
+#define SCAN_FROM_BOTTOM_TO_TOP 1
+
+static void l5f31188_sleep_in(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE, 0x10, 0x00);
+}
+
+static void l5f31188_sleep_out(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE, 0x11, 0x00);
+}
+
+static void l5f31188_set_gamma(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE, 0x26, 0x00);
+}
+
+static void l5f31188_display_off(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE, 0x28, 0x00);
+}
+
+static void l5f31188_display_on(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE, 0x29, 0x00);
+}
+
+static void l5f31188_ctl_memory_access(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops,
+               int h_direction, int v_direction)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0x36,
+                       (((h_direction & 0x1) << 1) | (v_direction & 0x1)));
+}
+
+static void l5f31188_set_pixel_format(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0x3A, 0x70);
+}
+
+static void l5f31188_write_disbv(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops, unsigned int brightness)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0x51, brightness);
+}
+
+static void l5f31188_write_ctrld(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0x53, 0x2C);
+}
+
+static void l5f31188_write_cabc(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops,
+                       unsigned int wm_mode)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0x55, wm_mode);
+}
+
+static void l5f31188_write_cabcmb(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops, unsigned int min_brightness)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0x5E,
+                       min_brightness);
+}
+
+static void l5f31188_set_extension(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       const unsigned char data_to_send[] = {
+               0xB9, 0xFF, 0x83, 0x94
+       };
+
+       ops->cmd_write(dev, MIPI_DSI_DCS_LONG_WRITE,
+                       (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+}
+
+static void l5f31188_set_dgc_lut(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       const unsigned char data_to_send[] = {
+               0xC1, 0x01, 0x00, 0x04, 0x0E, 0x18, 0x1E, 0x26,
+               0x2F, 0x36, 0x3E, 0x47, 0x4E, 0x56, 0x5D, 0x65,
+               0x6D, 0x75, 0x7D, 0x84, 0x8C, 0x94, 0x9C, 0xA4,
+               0xAD, 0xB5, 0xBD, 0xC5, 0xCC, 0xD4, 0xDE, 0xE5,
+               0xEE, 0xF7, 0xFF, 0x3F, 0x9A, 0xCE, 0xD4, 0x21,
+               0xA1, 0x26, 0x54, 0x00, 0x00, 0x04, 0x0E, 0x19,
+               0x1F, 0x27, 0x30, 0x37, 0x40, 0x48, 0x50, 0x58,
+               0x60, 0x67, 0x6F, 0x77, 0x7F, 0x87, 0x8F, 0x97,
+               0x9F, 0xA7, 0xB0, 0xB8, 0xC0, 0xC8, 0xCE, 0xD8,
+               0xE0, 0xE7, 0xF0, 0xF7, 0xFF, 0x3C, 0xEB, 0xFD,
+               0x2F, 0x66, 0xA8, 0x2C, 0x46, 0x00, 0x00, 0x04,
+               0x0E, 0x18, 0x1E, 0x26, 0x30, 0x38, 0x41, 0x4A,
+               0x52, 0x5A, 0x62, 0x6B, 0x73, 0x7B, 0x83, 0x8C,
+               0x94, 0x9C, 0xA5, 0xAD, 0xB6, 0xBD, 0xC5, 0xCC,
+               0xD4, 0xDD, 0xE3, 0xEB, 0xF2, 0xF9, 0xFF, 0x3F,
+               0xA4, 0x8A, 0x8F, 0xC7, 0x33, 0xF5, 0xE9, 0x00
+       };
+       ops->cmd_write(dev, MIPI_DSI_DCS_LONG_WRITE,
+                       (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+}
+
+static void l5f31188_set_tcon(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       const unsigned char data_to_send[] = {
+               0xC7, 0x00, 0x20
+       };
+       ops->cmd_write(dev, MIPI_DSI_DCS_LONG_WRITE,
+                       (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+}
+
+static void l5f31188_set_ptba(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       const unsigned char data_to_send[] = {
+               0xBF, 0x06, 0x10
+       };
+       ops->cmd_write(dev, MIPI_DSI_DCS_LONG_WRITE,
+                       (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+}
+
+static void l5f31188_set_eco(struct mipi_dsim_device *dev,
+               struct mipi_dsim_master_ops *ops)
+{
+       ops->cmd_write(dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0xC6, 0x0C);
+}
+
+static int l5f31188_panel_init(struct mipi_dsim_device *dev)
+{
+       struct mipi_dsim_master_ops *ops = dev->master_ops;
+
+       l5f31188_set_extension(dev, ops);
+       l5f31188_set_dgc_lut(dev, ops);
+
+       l5f31188_set_eco(dev, ops);
+       l5f31188_set_tcon(dev, ops);
+       l5f31188_set_ptba(dev, ops);
+       l5f31188_set_gamma(dev, ops);
+       l5f31188_ctl_memory_access(dev, ops,
+                       SCAN_FROM_LEFT_TO_RIGHT, SCAN_FROM_TOP_TO_BOTTOM);
+       l5f31188_set_pixel_format(dev, ops);
+       l5f31188_write_disbv(dev, ops, 0xFF);
+       l5f31188_write_ctrld(dev, ops);
+       l5f31188_write_cabc(dev, ops, 0x0);
+       l5f31188_write_cabcmb(dev, ops, 0x0);
+
+       l5f31188_sleep_out(dev, ops);
+
+       /* 120 msec */
+       udelay(120 * 1000);
+
+       return 0;
+}
+
+static void l5f31188_display_enable(struct mipi_dsim_device *dev)
+{
+       struct mipi_dsim_master_ops *ops = dev->master_ops;
+       l5f31188_display_on(dev, ops);
+}
+
+static struct mipi_dsim_lcd_driver l5f31188_dsim_ddi_driver = {
+       .name = "l5f31188",
+       .id = -1,
+
+       .mipi_panel_init = l5f31188_panel_init,
+       .mipi_display_on = l5f31188_display_enable,
+};
+
+void l5f31188_init(void)
+{
+       exynos_mipi_dsi_register_lcd_driver(&l5f31188_dsim_ddi_driver);
+}
index 6bf9fc5036e351edfd8ee5d4c7276be54fb6d9dd..03b0f88acfaa26cf930bbe8d6390b1b731de32b8 100644 (file)
 #include <asm/errno.h>
 #include <asm/io.h>
 
+#include <asm/imx-common/dma.h>
+
 #include "videomodes.h"
 
 #define        PS2KHZ(ps)      (1000000000UL / (ps))
 
 static GraphicDevice panel;
+struct mxs_dma_desc desc;
+
+/**
+ * mxsfb_system_setup() - Fine-tune LCDIF configuration
+ *
+ * This function is used to adjust the LCDIF configuration. This is usually
+ * needed when driving the controller in System-Mode to operate an 8080 or
+ * 6800 connected SmartLCD.
+ */
+__weak void mxsfb_system_setup(void)
+{
+}
 
 /*
  * DENX M28EVK:
@@ -75,6 +89,9 @@ static void mxs_lcd_init(GraphicDevice *panel,
 
        writel(valid_data << LCDIF_CTRL1_BYTE_PACKING_FORMAT_OFFSET,
                &regs->hw_lcdif_ctrl1);
+
+       mxsfb_system_setup();
+
        writel((mode->yres << LCDIF_TRANSFER_COUNT_V_COUNT_OFFSET) | mode->xres,
                &regs->hw_lcdif_transfer_count);
 
@@ -102,8 +119,10 @@ static void mxs_lcd_init(GraphicDevice *panel,
        /* Flush FIFO first */
        writel(LCDIF_CTRL1_FIFO_CLEAR, &regs->hw_lcdif_ctrl1_set);
 
+#ifndef CONFIG_VIDEO_MXS_MODE_SYSTEM
        /* Sync signals ON */
        setbits_le32(&regs->hw_lcdif_vdctrl4, LCDIF_VDCTRL4_SYNC_SIGNALS_ON);
+#endif
 
        /* FIFO cleared */
        writel(LCDIF_CTRL1_FIFO_CLEAR, &regs->hw_lcdif_ctrl1_clr);
@@ -161,7 +180,8 @@ void *video_hw_init(void)
        panel.memSize = mode.xres * mode.yres * panel.gdfBytesPP;
 
        /* Allocate framebuffer */
-       fb = malloc(panel.memSize);
+       fb = memalign(ARCH_DMA_MINALIGN,
+                     roundup(panel.memSize, ARCH_DMA_MINALIGN));
        if (!fb) {
                printf("MXSFB: Error allocating framebuffer!\n");
                return NULL;
@@ -177,5 +197,28 @@ void *video_hw_init(void)
        /* Start framebuffer */
        mxs_lcd_init(&panel, &mode, bpp);
 
+#ifdef CONFIG_VIDEO_MXS_MODE_SYSTEM
+       /*
+        * If the LCD runs in system mode, the LCD refresh has to be triggered
+        * manually by setting the RUN bit in HW_LCDIF_CTRL register. To avoid
+        * having to set this bit manually after every single change in the
+        * framebuffer memory, we set up specially crafted circular DMA, which
+        * sets the RUN bit, then waits until it gets cleared and repeats this
+        * infinitelly. This way, we get smooth continuous updates of the LCD.
+        */
+       struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE;
+
+       memset(&desc, 0, sizeof(struct mxs_dma_desc));
+       desc.address = (dma_addr_t)&desc;
+       desc.cmd.data = MXS_DMA_DESC_COMMAND_NO_DMAXFER | MXS_DMA_DESC_CHAIN |
+                       MXS_DMA_DESC_WAIT4END |
+                       (1 << MXS_DMA_DESC_PIO_WORDS_OFFSET);
+       desc.cmd.pio_words[0] = readl(&regs->hw_lcdif_ctrl) | LCDIF_CTRL_RUN;
+       desc.cmd.next = (uint32_t)&desc.cmd;
+
+       /* Execute the DMA chain. */
+       mxs_dma_circ_start(MXS_DMA_CHANNEL_AHB_APBH_LCDIF, &desc);
+#endif
+
        return (void *)&panel;
 }
index fc092522b261c39f7062ee1d419e28a782c83bdb..0e97f511fdcfa4de21af43e88ff8e44d30e546e7 100644 (file)
@@ -34,11 +34,11 @@ static void s6e8ax0_panel_cond(struct mipi_dsim_device *dsim_dev)
 
        if (reverse) {
                ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send_reverse,
+                       data_to_send_reverse,
                        ARRAY_SIZE(data_to_send_reverse));
        } else {
                ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
        }
 }
 
@@ -50,8 +50,7 @@ static void s6e8ax0_display_cond(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_gamma_cond(struct mipi_dsim_device *dsim_dev)
@@ -65,15 +64,18 @@ static void s6e8ax0_gamma_cond(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_gamma_update(struct mipi_dsim_device *dsim_dev)
 {
        struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
+       static const unsigned char data_to_send[] = {
+               0xf7, 0x03
+       };
 
-       ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0xf7, 0x3);
+       ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, data_to_send,
+                       ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_source_control(struct mipi_dsim_device *dsim_dev)
@@ -84,8 +86,7 @@ static void s6e8ax0_etc_source_control(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_pentile_control(struct mipi_dsim_device *dsim_dev)
@@ -97,8 +98,7 @@ static void s6e8ax0_etc_pentile_control(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_mipi_control1(struct mipi_dsim_device *dsim_dev)
@@ -109,8 +109,7 @@ static void s6e8ax0_etc_mipi_control1(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_mipi_control2(struct mipi_dsim_device *dsim_dev)
@@ -121,8 +120,7 @@ static void s6e8ax0_etc_mipi_control2(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_power_control(struct mipi_dsim_device *dsim_dev)
@@ -133,14 +131,18 @@ static void s6e8ax0_etc_power_control(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-               (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+               data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_mipi_control3(struct mipi_dsim_device *dsim_dev)
 {
        struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
+       static const unsigned char data_to_send[] = {
+               0xe3, 0x40
+       };
 
-       ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0xe3, 0x40);
+       ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, data_to_send,
+                      ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_etc_mipi_control4(struct mipi_dsim_device *dsim_dev)
@@ -151,7 +153,7 @@ static void s6e8ax0_etc_mipi_control4(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-               (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+               data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_elvss_set(struct mipi_dsim_device *dsim_dev)
@@ -162,24 +164,29 @@ static void s6e8ax0_elvss_set(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-                       (unsigned int)data_to_send,
-                       ARRAY_SIZE(data_to_send));
+                       data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_display_on(struct mipi_dsim_device *dsim_dev)
 {
        struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
+       static const unsigned char data_to_send[] = {
+               0x29, 0x00
+       };
 
-       ops->cmd_write(dsim_dev,
-               MIPI_DSI_DCS_SHORT_WRITE, 0x29, 0x00);
+       ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE, data_to_send,
+                      ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_sleep_out(struct mipi_dsim_device *dsim_dev)
 {
        struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
+       static const unsigned char data_to_send[] = {
+               0x11, 0x00
+       };
 
-       ops->cmd_write(dsim_dev,
-               MIPI_DSI_DCS_SHORT_WRITE, 0x11, 0x00);
+       ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE, data_to_send,
+                      ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_apply_level1_key(struct mipi_dsim_device *dsim_dev)
@@ -190,7 +197,7 @@ static void s6e8ax0_apply_level1_key(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-               (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+               data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_apply_mtp_key(struct mipi_dsim_device *dsim_dev)
@@ -201,7 +208,7 @@ static void s6e8ax0_apply_mtp_key(struct mipi_dsim_device *dsim_dev)
        };
 
        ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
-               (unsigned int)data_to_send, ARRAY_SIZE(data_to_send));
+               data_to_send, ARRAY_SIZE(data_to_send));
 }
 
 static void s6e8ax0_panel_init(struct mipi_dsim_device *dsim_dev)
index d8b0d7f5d6ff5eb2cb4b3141eb1af8be15875003..f324354c39d619b6e3741826729d9a0c56b0e8f9 100644 (file)
@@ -25,7 +25,6 @@
 
 /* include the font data */
 #include <video_font.h>
-#include <video_font_data.h>
 
 #if VIDEO_FONT_WIDTH != 8 || VIDEO_FONT_HEIGHT != 16
 #error Expecting VIDEO_FONT_WIDTH == 8 && VIDEO_FONT_HEIGHT == 16
index 35303f7c5a8fdab0e5391c09d3a2bd9acb232c56..3cf991eaf2f801b1f3886a9627d927296aa239ea 100644 (file)
@@ -17,15 +17,15 @@ $(error Please define CONFIG_DEFAULT_DEVICE_TREE in your board header file))
 DEVICE_TREE = $(subst ",,$(CONFIG_DEFAULT_DEVICE_TREE))
 endif
 
-$(if $(CONFIG_ARCH_DEVICE_TREE),,\
-$(error Your architecture does not have device tree support enabled. \
-Please define CONFIG_ARCH_DEVICE_TREE))
+DTS_INCDIRS =  $(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts
+DTS_INCDIRS += $(SRCTREE)/board/$(VENDOR)/dts
+DTS_INCDIRS += $(SRCTREE)/arch/$(ARCH)/dts
 
-# We preprocess the device tree file provide a useful define
-DTS_CPPFLAGS := -x assembler-with-cpp \
-               -DARCH_CPU_DTS=\"$(SRCTREE)/arch/$(ARCH)/dts/$(CONFIG_ARCH_DEVICE_TREE).dtsi\" \
-               -DBOARD_DTS=\"$(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts/$(DEVICE_TREE).dts\" \
-               -I$(SRCTREE)/board/$(VENDOR)/dts -I$(SRCTREE)/arch/$(ARCH)/dts
+DTS_CPPFLAGS := -x assembler-with-cpp -undef -D__DTS__ \
+               -nostdinc $(addprefix -I,$(DTS_INCDIRS))
+
+DTC_FLAGS := -R 4 -p 0x1000 \
+       $(addprefix -i ,$(DTS_INCDIRS))
 
 all:   $(obj).depend $(LIB)
 
@@ -35,13 +35,8 @@ all: $(obj).depend $(LIB)
 DT_BIN := $(obj)dt.dtb
 
 $(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts
-       rc=$$( \
-               cat $< | $(CPP) -P $(DTS_CPPFLAGS) - | \
-               { { $(DTC) -R 4 -p 0x1000 -O dtb -o ${DT_BIN} - 2>&1 ; \
-                   echo $$? >&3 ; } | \
-                 grep -v '^DTC: dts->dtb  on file' ; \
-               } 3>&1 1>&2 ) ; \
-       exit $$rc
+       $(CPP) $(DTS_CPPFLAGS) $< -o $(DT_BIN).dts.tmp
+       $(DTC) $(DTC_FLAGS) -O dtb -o ${DT_BIN} $(DT_BIN).dts.tmp
 
 process_lds = \
        $(1) | sed -r -n 's/^OUTPUT_$(2)[ ("]*([^")]*).*/\1/p'
index afd1ffa799ead0a2d197b0a5f42f4e99a81ca3a1..1ca5895740bffbdf12f6b74f2ab983d97379fb09 100644 (file)
@@ -2,29 +2,7 @@
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  */
 
 #include "yportenv.h"
index 4420c990b4cca52ae3a080748c7e278e0442a9d0..f5c89f3f13773199f5a971e5db11bce338c7f647 100644 (file)
@@ -3,50 +3,7 @@
  *
  * Written by: Rafal Jaworowski <raj@semihalf.com>
  *
- * This file is dual licensed; you can use it under the terms of
- * either the GPL, or the BSD license, at your option.
- *
- * I. GPL:
- *
- * This file 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 file 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
- *
- * Alternatively,
- *
- * II. BSD license:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+        BSD-2-Clause
  */
 
 #ifndef _API_PUBLIC_H_
index 29e0438ba450bf2cb1cb51421e41b3fd0a229422..43872010c7f2ba43a91b6b9c70907861a5d56abd 100644 (file)
@@ -69,7 +69,6 @@ typedef struct bd_info {
        unsigned int    bi_baudrate;    /* Console Baudrate */
 #if defined(CONFIG_405)   || \
                defined(CONFIG_405GP) || \
-               defined(CONFIG_405CR) || \
                defined(CONFIG_405EP) || \
                defined(CONFIG_405EZ) || \
                defined(CONFIG_405EX) || \
index 09043435b433d9a97fa55c7d6fcb4742a9bdd6ce..2f0bc6b062b325e2f35282e378bbad0201ed1d1a 100644 (file)
@@ -33,7 +33,6 @@
 #define CONFIG_E500MC                  /* BOOKE e500mc family */
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MPC85xx                 /* MPC85xx/PQ3 platform */
-#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MP                      /* support multiple processors */
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define VSC3308_TX_ADDRESS              0x02
 #define VSC3308_RX_ADDRESS              0x03
 
+/* IDT clock synthesizers */
+#define CONFIG_IDT8T49N222A
+#define I2C_CH_IDT                     0x9
+
+#define IDT_SERDES1_ADDRESS            0x6E
+#define IDT_SERDES2_ADDRESS            0x6C
+
 #define CONFIG_ENV_OVERWRITE
 
 #ifdef CONFIG_SYS_NO_FLASH
@@ -578,6 +584,8 @@ unsigned long get_board_ddr_clk(void);
 
 #define CONFIG_SYS_DPAA_FMAN
 
+#define CONFIG_SYS_DPAA_RMAN
+
 /* Default address of microcode for the Linux Fman driver */
 #if defined(CONFIG_SPIFLASH)
 /*
index 1ab68915859bfac3b8f15c2a2dbedd15f1bf05ed..03f3a4f80377ef0093612cee9746821057dd6f04 100644 (file)
@@ -224,6 +224,10 @@ combinations. this should be removed later
 
 #define CONFIG_SYS_IMMR                CONFIG_SYS_CCSRBAR
 
+/* DSP CCSRBAR */
+#define CONFIG_SYS_FSL_DSP_CCSRBAR     CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT
+#define CONFIG_SYS_FSL_DSP_CCSRBAR_PHYS        CONFIG_SYS_FSL_DSP_CCSRBAR_DEFAULT
+
 /*
  * IFC Definitions
  */
diff --git a/include/configs/C29XPCIE.h b/include/configs/C29XPCIE.h
new file mode 100644 (file)
index 0000000..83779ef
--- /dev/null
@@ -0,0 +1,456 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * C29XPCIE board configuration file
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CONFIG_PHYS_64BIT
+
+#ifdef CONFIG_C29XPCIE
+#define CONFIG_PPC_C29X
+#endif
+
+#ifdef CONFIG_SPIFLASH
+#define CONFIG_RAMBOOT_SPIFLASH
+#define CONFIG_SYS_TEXT_BASE           0x11000000
+#define CONFIG_RESET_VECTOR_ADDRESS    0x1107fffc
+#endif
+
+#ifndef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE           0xeff80000
+#endif
+
+#ifndef CONFIG_RESET_VECTOR_ADDRESS
+#define CONFIG_RESET_VECTOR_ADDRESS    0xeffffffc
+#endif
+
+#ifndef CONFIG_SYS_MONITOR_BASE
+#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
+#endif
+
+/* High Level Configuration Options */
+#define CONFIG_BOOKE                   /* BOOKE */
+#define CONFIG_E500                    /* BOOKE e500 family */
+#define CONFIG_MPC85xx
+#define CONFIG_FSL_IFC                 /* Enable IFC Support */
+#define CONFIG_SYS_HAS_SERDES          /* common SERDES init code */
+
+#define CONFIG_PCI                     /* Enable PCI/PCIE */
+#ifdef CONFIG_PCI
+#define CONFIG_PCIE1                   /* PCIE controler 1 (slot 1) */
+#define CONFIG_FSL_PCI_INIT            /* Use common FSL init code */
+#define CONFIG_PCI_INDIRECT_BRIDGE
+#define CONFIG_FSL_PCIE_RESET          /* need PCIe reset errata */
+#define CONFIG_SYS_PCI_64BIT           /* enable 64-bit PCI resources */
+
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PCI
+
+#define CONFIG_E1000
+
+/*
+ * PCI Windows
+ * Memory space is mapped 1-1, but I/O space must start from 0.
+ */
+/* controller 1, Slot 1, tgtid 1, Base address a000 */
+#define CONFIG_SYS_PCIE1_NAME          "Slot 1"
+#define CONFIG_SYS_PCIE1_MEM_VIRT      0x80000000
+#define CONFIG_SYS_PCIE1_MEM_BUS       0x80000000
+#define CONFIG_SYS_PCIE1_MEM_PHYS      0xc00000000ull
+#define CONFIG_SYS_PCIE1_MEM_SIZE      0x10000000      /* 256M */
+#define CONFIG_SYS_PCIE1_IO_VIRT       0xffc00000
+#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE1_IO_SIZE       0x00010000      /* 64k */
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xfffc00000ull
+
+#define CONFIG_PCI_PNP                 /* do pci plug-and-play */
+
+#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup */
+#define CONFIG_DOS_PARTITION
+#endif
+
+#define CONFIG_FSL_LAW                 /* Use common FSL init code */
+#define CONFIG_TSEC_ENET
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_DDR_CLK_FREQ    100000000
+#define CONFIG_SYS_CLK_FREQ    66666666
+
+#define CONFIG_HWCONFIG
+
+/*
+ * These can be toggled for performance analysis, otherwise use default.
+ */
+#define CONFIG_L2_CACHE                        /* toggle L2 cache */
+#define CONFIG_BTB                     /* toggle branch predition */
+
+#define CONFIG_ADDR_STREAMING          /* toggle addr streaming */
+
+#define CONFIG_ENABLE_36BIT_PHYS
+
+#define CONFIG_ADDR_MAP                        1
+#define CONFIG_SYS_NUM_ADDR_MAP                16      /* number of TLB1 entries */
+
+#define CONFIG_SYS_MEMTEST_START       0x00200000
+#define CONFIG_SYS_MEMTEST_END         0x00400000
+#define CONFIG_PANIC_HANG
+
+/* DDR Setup */
+#define CONFIG_FSL_DDR3
+#define CONFIG_DDR_SPD
+#define CONFIG_SYS_SPD_BUS_NUM         0
+#define SPD_EEPROM_ADDRESS             0x50
+#define CONFIG_SYS_DDR_RAW_TIMING
+
+/* DDR ECC Setup*/
+#define CONFIG_DDR_ECC
+#define CONFIG_MEM_INIT_VALUE          0xDeadBeef
+#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
+
+#define CONFIG_SYS_SDRAM_SIZE          512
+#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
+
+#define CONFIG_DIMM_SLOTS_PER_CTLR     1
+#define CONFIG_CHIP_SELECTS_PER_CTRL   1
+
+#define CONFIG_SYS_CCSRBAR             0xffe00000
+#define CONFIG_SYS_CCSRBAR_PHYS_LOW    CONFIG_SYS_CCSRBAR
+
+/* Platform SRAM setting  */
+#define CONFIG_SYS_PLATFORM_SRAM_BASE  0xffb00000
+#define CONFIG_SYS_PLATFORM_SRAM_BASE_PHYS \
+                       (0xf00000000ull | CONFIG_SYS_PLATFORM_SRAM_BASE)
+#define CONFIG_SYS_PLATFORM_SRAM_SIZE  (512 << 10)
+
+/*
+ * IFC Definitions
+ */
+/* NOR Flash on IFC */
+#define CONFIG_SYS_FLASH_BASE          0xec000000
+#define CONFIG_SYS_MAX_FLASH_SECT      512     /* 64M */
+
+#define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
+
+#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE_PHYS }
+#define CONFIG_SYS_MAX_FLASH_BANKS     1
+
+#define CONFIG_SYS_FLASH_QUIET_TEST
+#define CONFIG_FLASH_SHOW_PROGRESS     45
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* in ms */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* in ms */
+
+/* 16Bit NOR Flash - S29GL512S10TFI01 */
+#define CONFIG_SYS_NOR_CSPR    (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | \
+                               CSPR_PORT_SIZE_16 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR_AMASK   IFC_AMASK(64*1024*1024)
+#define CONFIG_SYS_NOR_CSOR    CSOR_NOR_ADM_SHIFT(4)
+#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(0x1e) | \
+                               FTIM1_NOR_TRAD_NOR(0x0f) | \
+                               FTIM1_NOR_TSEQRAD_NOR(0x0f))
+#define CONFIG_SYS_NOR_FTIM2   (FTIM2_NOR_TCS(0x4) | \
+                               FTIM2_NOR_TCH(0x4) | \
+                               FTIM2_NOR_TWP(0x1c))
+#define CONFIG_SYS_NOR_FTIM3   0x0
+
+/* CFI for NOR Flash */
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+
+/* NAND Flash on IFC */
+#define CONFIG_NAND_FSL_IFC
+#define CONFIG_SYS_NAND_BASE           0xff800000
+#define CONFIG_SYS_NAND_BASE_PHYS      0xfff800000ull
+
+#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
+
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_MTD_NAND_VERIFY_WRITE
+#define CONFIG_CMD_NAND
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
+
+/* 8Bit NAND Flash - K9F1G08U0B */
+#define CONFIG_SYS_NAND_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
+                               | CSPR_PORT_SIZE_8 \
+                               | CSPR_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_2       /* RAL = 2 Bytes */ \
+                               | CSOR_NAND_PGS_2K      /* Page Size = 2k */ \
+                               | CSOR_NAND_SPRZ_64     /* Spare size = 64 */ \
+                               | CSOR_NAND_PB(64))     /* 64 Pages Per Block */
+#define CONFIG_SYS_NAND_FTIM0  (FTIM0_NAND_TCCST(0x01) | \
+                               FTIM0_NAND_TWP(0x0c)   | \
+                               FTIM0_NAND_TWCHT(0x08) | \
+                               FTIM0_NAND_TWH(0x06))
+#define CONFIG_SYS_NAND_FTIM1  (FTIM1_NAND_TADLE(0x28) | \
+                               FTIM1_NAND_TWBE(0x1d)  | \
+                               FTIM1_NAND_TRR(0x08)   | \
+                               FTIM1_NAND_TRP(0x0c))
+#define CONFIG_SYS_NAND_FTIM2  (FTIM2_NAND_TRAD(0x0c) | \
+                               FTIM2_NAND_TREH(0x0a) | \
+                               FTIM2_NAND_TWHRE(0x18))
+#define CONFIG_SYS_NAND_FTIM3  (FTIM3_NAND_TWW(0x04))
+
+#define CONFIG_SYS_NAND_DDR_LAW                11
+
+/* Set up IFC registers for boot location NOR/NAND */
+#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               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
+
+/* CPLD on IFC, selected by CS2 */
+#define CONFIG_SYS_CPLD_BASE           0xffdf0000
+#define CONFIG_SYS_CPLD_BASE_PHYS      (0xf00000000ull \
+                                       | CONFIG_SYS_CPLD_BASE)
+
+#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
+
+#if defined(CONFIG_RAMBOOT_SPIFLASH)
+#define CONFIG_SYS_RAMBOOT
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#endif
+
+#define CONFIG_BOARD_EARLY_INIT_R
+
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0xffd00000
+#define CONFIG_SYS_INIT_RAM_END                0x00004000
+
+#define CONFIG_SYS_GBL_DATA_OFFSET     (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         (512 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)
+
+/* Serial Port */
+#define CONFIG_CONS_INDEX      1
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE    1
+#define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
+
+#define CONFIG_SERIAL_MULTI            /* Enable both serial ports */
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+
+#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
+
+/*
+ * 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}() */
+
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_FSL
+#define CONFIG_SYS_FSL_I2C_SPEED       400000
+#define CONFIG_SYS_FSL_I2C2_SPEED      400000
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x3100
+
+/* I2C EEPROM */
+/* enable read and write access to EEPROM */
+#define CONFIG_CMD_EEPROM
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5
+
+#define CONFIG_CMD_I2C
+
+/* eSPI - Enhanced SPI */
+#define CONFIG_FSL_ESPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_SPANSION
+#define CONFIG_SPI_FLASH_EON
+#define CONFIG_CMD_SF
+#define CONFIG_SF_DEFAULT_SPEED                10000000
+#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
+
+#ifdef CONFIG_TSEC_ENET
+#define CONFIG_NET_MULTI
+#define CONFIG_MII                     /* MII PHY management */
+#define CONFIG_MII_DEFAULT_TSEC        1       /* Allow unregistered phys */
+#define CONFIG_TSEC1           1
+#define CONFIG_TSEC1_NAME      "eTSEC1"
+#define CONFIG_TSEC2           1
+#define CONFIG_TSEC2_NAME      "eTSEC2"
+
+/* Default mode is RGMII mode */
+#define TSEC1_PHY_ADDR         0
+#define TSEC2_PHY_ADDR         2
+
+#define TSEC1_FLAGS            (TSEC_GIGABIT | TSEC_REDUCED)
+#define TSEC2_FLAGS            (TSEC_GIGABIT | TSEC_REDUCED)
+
+#define CONFIG_ETHPRIME                "eTSEC1"
+
+#define CONFIG_PHY_GIGE
+#endif /* CONFIG_TSEC_ENET */
+
+/*
+ * Environment
+ */
+#if defined(CONFIG_SYS_RAMBOOT)
+#if defined(CONFIG_RAMBOOT_SPIFLASH)
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS     0
+#define CONFIG_ENV_SPI_CS      0
+#define CONFIG_ENV_SPI_MAX_HZ  10000000
+#define CONFIG_ENV_SPI_MODE    0
+#define CONFIG_ENV_OFFSET      0x100000        /* 1MB */
+#define CONFIG_ENV_SECT_SIZE   0x10000
+#define CONFIG_ENV_SIZE                0x2000
+#endif
+#else
+#define CONFIG_ENV_IS_IN_FLASH
+#if CONFIG_SYS_MONITOR_BASE > 0xfff80000
+#define CONFIG_ENV_ADDR        0xfff80000
+#else
+#define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
+#endif
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_SECT_SIZE   0x20000
+#endif
+
+#define CONFIG_LOADS_ECHO
+#define CONFIG_SYS_LOADS_BAUD_CHANGE
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_ERRATA
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_CMD_REGINFO
+
+/*
+ * 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 */
+
+#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_HZ          1000            /* dec freq: 1ms ticks */
+
+/*
+ * 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 Memory map for Linux */
+#define CONFIG_SYS_BOOTM_LEN   (64 << 20) /* Increase max gunzip size */
+
+/*
+ * Environment Configuration
+ */
+
+#ifdef CONFIG_TSEC_ENET
+#define CONFIG_HAS_ETH0
+#define CONFIG_HAS_ETH1
+#endif
+
+#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       -1      /* -1 disables auto-boot */
+
+#define CONFIG_BAUDRATE                115200
+
+#define        CONFIG_EXTRA_ENV_SETTINGS                               \
+       "hwconfig=" __stringify(CONFIG_DEF_HWCONFIG)  "\0"      \
+       "netdev=eth0\0"                                         \
+       "uboot=" __stringify(CONFIG_UBOOTPATH) "\0"             \
+       "loadaddr=1000000\0"                            \
+       "consoledev=ttyS0\0"                            \
+       "ramdiskaddr=2000000\0"                         \
+       "ramdiskfile=rootfs.ext2.gz.uboot\0"            \
+       "fdtaddr=c00000\0"                              \
+       "fdtfile=name/of/device-tree.dtb\0"                     \
+       "othbootargs=ramdisk_size=600000\0"             \
+
+#define CONFIG_RAMBOOTCOMMAND                  \
+       "setenv bootargs root=/dev/ram rw "     \
+       "console=$consoledev,$baudrate $othbootargs; "  \
+       "tftp $ramdiskaddr $ramdiskfile;"       \
+       "tftp $loadaddr $bootfile;"             \
+       "tftp $fdtaddr $fdtfile;"               \
+       "bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+#define CONFIG_BOOTCOMMAND CONFIG_RAMBOOTCOMMAND
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/CANBT.h b/include/configs/CANBT.h
deleted file mode 100644 (file)
index 40471b7..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * (C) Copyright 2001
- * Matthias Fuchs, esd gmbh germany, matthias.fuchs@esd-electronics.com
- *
- * SPDX-License-Identifier:    GPL-2.0+ 
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405CR           1       /* This is a PPC405CR CPU       */
-#define CONFIG_4xx             1       /* ...member of PPC4xx family   */
-#define CONFIG_CANBT           1       /* ...on a CANBT board          */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-
-#define CONFIG_SYS_CLK_FREQ    25000000 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                115200
-#define CONFIG_BOOTDELAY       1       /* autoboot after 1 seconds     */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND                                             \
-       "setenv bootargs root=/dev/ram rw console=ttyS0,115200; "       \
-       "bootm ffe00000 ffe80000"
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#undef CONFIG_PCI_PNP                  /* no pci plug-and-play         */
-
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-
-
-/*
- * 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_IRQ
-#define CONFIG_CMD_EEPROM
-
-#undef CONFIG_CMD_NET
-#undef CONFIG_CMD_NFS
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-/*
- * 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_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#define CONFIG_SYS_EXT_SERIAL_CLOCK    14745600 /* use external serial clock   */
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_into (bd_t) */
-
-#define CONFIG_SYS_HZ          1000            /* decrementer freq: 1 ms ticks */
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (~(CONFIG_SYS_TEXT_BASE) + 1)
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-/*
- * The following defines are added for buggy IOP480 byte interface.
- * All other boards should use the standard values (CPCI405 etc.)
- */
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#if 0 /* Use FLASH for environment variables */
-
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0x00010000      /* Offset of Environment Sector */
-#define CONFIG_ENV_SIZE                0x1000  /* Total Size of Environment Sector     */
-
-#define CONFIG_ENV_SECT_SIZE   0x10000 /* see README - env sector total size   */
-
-#else /* Use EEPROM for environment variables */
-
-#define CONFIG_ENV_IS_IN_EEPROM        1       /* use EEPROM for environment vars */
-#define CONFIG_ENV_OFFSET              0x000   /* environment starts at the beginning of the EEPROM */
-#define CONFIG_ENV_SIZE                0x400   /* 1024 bytes may be used for env vars */
-                                  /* total size of a CAT24WC08 is 1024 bytes */
-#endif
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (CAT24WC08) for environment
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* EEPROM CAT28WC08     */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* bytes of address     */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-
-/*
- * Init Memory Controller:
- *
- * BR0/1 and OR0/1 (FLASH)
- */
-
-#define FLASH_BASE0_PRELIM     0xFFC00000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0               /* FLASH bank #1        */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (CAN/USB) initialization                                      */
-#define CONFIG_SYS_EBC_PB1AP           0x010053C0  /* enable Ready, BEM=1              */
-#define CONFIG_SYS_EBC_PB1CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 2 (Misc-IO/LEDs) initialization                                 */
-#define CONFIG_SYS_EBC_PB2AP           0x000004c0  /* no Ready, BEM=1                  */
-#define CONFIG_SYS_EBC_PB2CR           0xF0118000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=8bit  */
-
-/* Memory Bank 3 (CAN Features) initialization                                 */
-#define CONFIG_SYS_EBC_PB3AP           0x80000040  /* no Ready, BEM=1                  */
-#define CONFIG_SYS_EBC_PB3CR           0xF021C000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=32bit */
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in RAM)
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       0x00ef0000 /* inside of SDRAM                   */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x0f00  /* Size of used area in RAM            */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#endif /* __CONFIG_H */
index 6c6ce58fb88709401393424363891a3d9bd3ba7a..ddcbfa6a264c40bfc90282d60579cd4f1c5c6d58 100644 (file)
@@ -24,7 +24,6 @@
 #define CONFIG_SPL_INIT_MINIMAL
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_NAND_SUPPORT
-#define CONFIG_SPL_NAND_MINIMAL
 #define CONFIG_SPL_FLUSH_IMAGE
 #define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
 #define CONFIG_SPL_MPC83XX_WAIT_FOR_NAND
index d1ce9fdc8d8436a327acea07adbfcaba6e8d7dfa..edece1f9b57a4bfe85094351502fb29b2953e0d0 100644 (file)
 #endif
 
 #ifdef CONFIG_SDCARD
-#define CONFIG_RAMBOOT_SDCARD
-#define CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_SYS_TEXT_BASE           0x11000000
-#define CONFIG_RESET_VECTOR_ADDRESS    0x1107fffc
+#define CONFIG_SPL
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_MMC_MINIMAL
+#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_FSL_LAW                 /* Use common FSL init code */
+#define CONFIG_SYS_TEXT_BASE           0x11001000
+#define CONFIG_SPL_TEXT_BASE           0xf8f81000
+#define CONFIG_SPL_PAD_TO              0x18000
+#define CONFIG_SPL_MAX_SIZE            (96 * 1024)
+#define CONFIG_SYS_MMC_U_BOOT_SIZE     (512 << 10)
+#define CONFIG_SYS_MMC_U_BOOT_DST      (0x11000000)
+#define CONFIG_SYS_MMC_U_BOOT_START    (0x11000000)
+#define CONFIG_SYS_MMC_U_BOOT_OFFS     (96 << 10)
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#define CONFIG_SPL_MMC_BOOT
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SPL_COMMON_INIT_DDR
+#endif
 #endif
 
 #ifdef CONFIG_SPIFLASH
-#define CONFIG_RAMBOOT_SPIFLASH
-#define CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_SYS_TEXT_BASE           0x11000000
-#define CONFIG_RESET_VECTOR_ADDRESS    0x1107fffc
+#define CONFIG_SPL
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_MINIMAL
+#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_FSL_LAW         /* Use common FSL init code */
+#define CONFIG_SYS_TEXT_BASE           0x11001000
+#define CONFIG_SPL_TEXT_BASE           0xf8f81000
+#define CONFIG_SPL_PAD_TO              0x18000
+#define CONFIG_SPL_MAX_SIZE            (96 * 1024)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE       (512 << 10)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_DST                (0x11000000)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_START      (0x11000000)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_OFFS       (96 << 10)
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#define CONFIG_SYS_LDSCRIPT    "arch/powerpc/cpu/mpc85xx/u-boot.lds"
+#define CONFIG_SPL_SPI_BOOT
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SPL_COMMON_INIT_DDR
+#endif
 #endif
 
 #define CONFIG_NAND_FSL_ELBC
 
 #ifdef CONFIG_NAND
 #define CONFIG_SPL
+#define CONFIG_TPL
+#ifdef CONFIG_TPL_BUILD
+#define CONFIG_SPL_NAND_BOOT
+#define CONFIG_SPL_FLUSH_IMAGE
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_NAND_INIT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_I2C_SUPPORT
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+#define CONFIG_SPL_COMMON_INIT_DDR
+#define CONFIG_SPL_MAX_SIZE            (128 << 10)
+#define CONFIG_SPL_TEXT_BASE           0xf8f81000
+#define CONFIG_SYS_MPC85XX_NO_RESETVEC
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    (576 << 10)
+#define CONFIG_SYS_NAND_U_BOOT_DST     (0x11000000)
+#define CONFIG_SYS_NAND_U_BOOT_START   (0x11000000)
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    ((128 + 128) << 10)
+#elif defined(CONFIG_SPL_BUILD)
 #define CONFIG_SPL_INIT_MINIMAL
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_NAND_SUPPORT
-#define CONFIG_SPL_NAND_MINIMAL
 #define CONFIG_SPL_FLUSH_IMAGE
-#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
-
-#define CONFIG_SYS_TEXT_BASE           0x00201000
-#define CONFIG_SPL_TEXT_BASE           0xfffff000
-#define CONFIG_SPL_MAX_SIZE            4096
-#define CONFIG_SPL_RELOC_TEXT_BASE     0x00100000
-#define CONFIG_SPL_RELOC_STACK         0x00100000
-#define CONFIG_SYS_NAND_U_BOOT_SIZE    ((512 << 10) + CONFIG_SPL_MAX_SIZE)
-#define CONFIG_SYS_NAND_U_BOOT_DST     (0x00200000 - CONFIG_SPL_MAX_SIZE)
-#define CONFIG_SYS_NAND_U_BOOT_START   0x00200000
-#define CONFIG_SYS_NAND_U_BOOT_OFFS    0
-#define CONFIG_SYS_LDSCRIPT            "arch/powerpc/cpu/mpc85xx/u-boot-nand.lds"
+#define CONFIG_SPL_TEXT_BASE           0xff800000
+#define CONFIG_SPL_MAX_SIZE            4096
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    (128 << 10)
+#define CONFIG_SYS_NAND_U_BOOT_DST     0xf8f80000
+#define CONFIG_SYS_NAND_U_BOOT_START   0xf8f80000
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    (128 << 10)
+#endif
+#define CONFIG_SPL_PAD_TO              0x20000
+#define CONFIG_TPL_PAD_TO              0x20000
+#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
+#define CONFIG_SYS_TEXT_BASE           0x11001000
+#define CONFIG_SYS_LDSCRIPT    "arch/powerpc/cpu/mpc85xx/u-boot-nand.lds"
 #endif
 
 /* High Level Configuration Options */
 #define CONFIG_SYS_NAND_BASE_PHYS      CONFIG_SYS_NAND_BASE
 #endif
 
-#define CONFIG_SYS_NAND_BASE_LIST     { CONFIG_SYS_NAND_BASE, }
+#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                        1
-#define CONFIG_SYS_NAND_BLOCK_SIZE    (256 * 1024)
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (256 * 1024)
 #define CONFIG_ELBC_NAND_SPL_STATIC_PGSIZE
 
 /* NAND flash config */
 #define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
 
+/*
+ * Config the L2 Cache as L2 SRAM
+*/
+#if defined(CONFIG_SPL_BUILD)
+#if defined(CONFIG_SDCARD) || defined(CONFIG_SPIFLASH)
+#define CONFIG_SYS_INIT_L2_ADDR        0xf8f80000
+#define CONFIG_SYS_INIT_L2_ADDR_PHYS   CONFIG_SYS_INIT_L2_ADDR
+#define CONFIG_SYS_L2_SIZE             (256 << 10)
+#define CONFIG_SYS_INIT_L2_END (CONFIG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
+#define CONFIG_SPL_RELOC_TEXT_BASE     0xf8f81000
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SYS_INIT_L2_ADDR + 128 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (32 << 10)
+#define CONFIG_SPL_RELOC_MALLOC_ADDR   (CONFIG_SYS_INIT_L2_ADDR + 160 * 1024)
+#define CONFIG_SPL_RELOC_MALLOC_SIZE   (96 << 10)
+#define CONFIG_SPL_GD_ADDR             (CONFIG_SYS_INIT_L2_ADDR + 112 * 1024)
+#elif defined(CONFIG_NAND)
+#ifdef CONFIG_TPL_BUILD
+#define CONFIG_SYS_INIT_L2_ADDR                0xf8f80000
+#define CONFIG_SYS_INIT_L2_ADDR_PHYS   CONFIG_SYS_INIT_L2_ADDR
+#define CONFIG_SYS_L2_SIZE             (256 << 10)
+#define CONFIG_SYS_INIT_L2_END (CONFIG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
+#define CONFIG_SPL_RELOC_TEXT_BASE     0xf8f81000
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SYS_INIT_L2_ADDR + 192 * 1024)
+#define CONFIG_SPL_RELOC_MALLOC_ADDR   (CONFIG_SYS_INIT_L2_ADDR + 208 * 1024)
+#define CONFIG_SPL_RELOC_MALLOC_SIZE   (48 << 10)
+#define CONFIG_SPL_GD_ADDR             (CONFIG_SYS_INIT_L2_ADDR + 176 * 1024)
+#else
+#define CONFIG_SYS_INIT_L2_ADDR                0xf8f80000
+#define CONFIG_SYS_INIT_L2_ADDR_PHYS   CONFIG_SYS_INIT_L2_ADDR
+#define CONFIG_SYS_L2_SIZE             (256 << 10)
+#define CONFIG_SYS_INIT_L2_END (CONFIG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
+#define CONFIG_SPL_RELOC_TEXT_BASE     (CONFIG_SYS_INIT_L2_END - 0x2000)
+#define CONFIG_SPL_RELOC_STACK         ((CONFIG_SYS_INIT_L2_END - 1) & ~0xF)
+#endif
+#endif
+#endif
+
 /*
  * Serial Port
  */
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE    1
 #define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
-#ifdef CONFIG_SPL_BUILD
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_INIT_MINIMAL)
 #define CONFIG_NS16550_MIN_FUNCTIONS
 #endif
 
 /*
  * Environment
  */
-#ifdef CONFIG_RAMBOOT_SPIFLASH
+#ifdef CONFIG_SPIFLASH
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SIZE                0x2000  /* 8KB */
 #define CONFIG_ENV_OFFSET      0x100000        /* 1MB */
 #define CONFIG_ENV_SECT_SIZE   0x10000
-#elif defined(CONFIG_RAMBOOT_SDCARD)
+#elif defined(CONFIG_SDCARD)
 #define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #elif defined(CONFIG_NAND)
-#define CONFIG_ENV_IS_IN_NAND
+#ifdef CONFIG_TPL_BUILD
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_INIT_L2_ADDR + (160 << 10))
+#else
 #define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
-#define CONFIG_ENV_OFFSET      ((512 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE)
+#endif
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET      (1024 * 1024)
 #define CONFIG_ENV_RANGE       (3 * CONFIG_ENV_SIZE)
 #elif defined(CONFIG_SYS_RAMBOOT)
 #define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
index 9814ca2012f5946641046422152074fe27af4f0b..905bacfa969d367e0da30f5894edf8267c2480f2 100644 (file)
@@ -37,7 +37,6 @@
 #define CONFIG_E500MC                  /* BOOKE e500mc family */
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MPC85xx                 /* MPC85xx/PQ3 platform */
-#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MP                      /* support multiple processors */
 
 #ifndef CONFIG_SYS_TEXT_BASE
diff --git a/include/configs/T4240EMU.h b/include/configs/T4240EMU.h
new file mode 100644 (file)
index 0000000..9fa6b77
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * T4240 EMU board configuration file
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CONFIG_T4240EMU
+#define CONFIG_PHYS_64BIT
+
+#define CONFIG_SYS_NO_FLASH            1
+#define CONFIG_SYS_FSL_DDR_EMU         1
+#define CONFIG_SYS_FSL_NO_QIXIS                1
+#define CONFIG_SYS_FSL_NO_SERDES       1
+
+#include "t4qds.h"
+
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_CACHE_FLUSH
+
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE         0x2000
+
+#define CONFIG_SYS_CLK_FREQ    100000000
+#define CONFIG_DDR_CLK_FREQ    133333333
+#define CONFIG_FSL_TBCLK_EXTRA_DIV 100
+
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_SYS_SPD_BUS_NUM 1
+#define SPD_EEPROM_ADDRESS1    0x51
+#define SPD_EEPROM_ADDRESS2    0x52
+#define SPD_EEPROM_ADDRESS3    0x53
+#define SPD_EEPROM_ADDRESS4    0x54
+#define SPD_EEPROM_ADDRESS5    0x55
+#define SPD_EEPROM_ADDRESS6    0x56
+#define SPD_EEPROM_ADDRESS     SPD_EEPROM_ADDRESS1     /* for p3041/p5010 */
+#define CONFIG_SYS_SDRAM_SIZE  4096    /* for fixed parameter use */
+
+/*
+ * IFC Definitions
+ */
+#define CONFIG_SYS_NOR0_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NOR_AMASK   IFC_AMASK(128*1024*1024)
+/* NOR Flash Timing Params */
+#define CONFIG_SYS_NOR0_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS \
+                               + 0x8000000) | \
+                               CSPR_PORT_SIZE_32 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR_CSOR    CSOR_NOR_ADM_SHIFT(0)
+#define CONFIG_SYS_NOR_FTIM0   (FTIM0_NOR_TACSE(0x1) | \
+                               FTIM0_NOR_TEADC(0x1) | \
+                               FTIM0_NOR_TEAHC(0x1))
+#define CONFIG_SYS_NOR_FTIM1   (FTIM1_NOR_TACO(0x1) | \
+                               FTIM1_NOR_TRAD_NOR(0x1))
+#define CONFIG_SYS_NOR_FTIM2   (FTIM2_NOR_TCS(0x0) | \
+                               FTIM2_NOR_TCH(0x0) | \
+                               FTIM2_NOR_TWP(0x1))
+#define CONFIG_SYS_NOR_FTIM3   0x04000000
+#define CONFIG_SYS_IFC_CCR     0x01000000
+
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NOR_FTIM3
+
+
+/* I2C */
+#define CONFIG_SYS_FSL_I2C_SPEED       4000000 /* faster speed for emulator */
+#define CONFIG_SYS_FSL_I2C2_SPEED      4000000
+
+/* Qman/Bman */
+#define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
+#define CONFIG_SYS_BMAN_NUM_PORTALS    50
+#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    50
+#define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
+#define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
+#define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+
+#define CONFIG_SYS_DPAA_FMAN
+#define CONFIG_SYS_DPAA_PME
+#define CONFIG_SYS_PMAN
+#define CONFIG_SYS_DPAA_DCE
+#define CONFIG_SYS_DPAA_RMAN
+#define CONFIG_SYS_INTERLAKEN
+
+#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
+#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF40000
+#define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
+#define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
+
+
+
+#define CONFIG_BOOTDELAY       0
+
+/*
+ * T4240 has 3 DDR controllers. Default to 3-way interleaving. It can be
+ * 3way_1KB, 3way_4KB, 3way_8KB. T4160 has 2 DDR controllers. Default to 2-way
+ * interleaving. It can be cacheline, page, bank, superbank.
+ * See doc/README.fsl-ddr for details.
+ */
+#ifdef CONFIG_PPC_T4240
+#define CTRL_INTLV_PREFERED 3way_4KB
+#else
+#define CTRL_INTLV_PREFERED cacheline
+#endif
+
+#define        CONFIG_EXTRA_ENV_SETTINGS                               \
+       "hwconfig=fsl_ddr:"                                     \
+       "ctlr_intlv=" __stringify(CTRL_INTLV_PREFERED) ","      \
+       "bank_intlv=auto;"                                      \
+       "netdev=eth0\0"                                         \
+       "uboot=" __stringify(CONFIG_UBOOTPATH) "\0"                     \
+       "ubootaddr=" __stringify(CONFIG_SYS_TEXT_BASE) "\0"             \
+       "consoledev=ttyS0\0"                                    \
+       "ramdiskaddr=2000000\0"                                 \
+       "ramdiskfile=t4240emu/ramdisk.uboot\0"                  \
+       "fdtaddr=c00000\0"                                      \
+       "fdtfile=t4240emu/t4240emu.dtb\0"                               \
+       "bdev=sda3\0"                                           \
+       "c=ffe\0"
+
+/*
+ * For emulation this causes u-boot to jump to the start of the proof point
+ * app code automatically
+ */
+#define CONFIG_PROOF_POINTS                    \
+       "setenv bootargs root=/dev/$bdev rw "           \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "cpu 1 release 0x29000000 - - -;"               \
+       "cpu 2 release 0x29000000 - - -;"               \
+       "cpu 3 release 0x29000000 - - -;"               \
+       "cpu 4 release 0x29000000 - - -;"               \
+       "cpu 5 release 0x29000000 - - -;"               \
+       "cpu 6 release 0x29000000 - - -;"               \
+       "cpu 7 release 0x29000000 - - -;"               \
+       "go 0x29000000"
+
+#define CONFIG_HVBOOT                          \
+       "setenv bootargs config-addr=0x60000000; "      \
+       "bootm 0x01000000 - 0x00f00000"
+
+#define CONFIG_LINUX                                   \
+       "errata;"                                       \
+       "setenv othbootargs ignore_loglevel;"           \
+       "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_BOOTCOMMAND             CONFIG_LINUX
+
+#endif /* __CONFIG_H */
index 9ac7f699228eb68e08467d4a8d8357169eb9c554..92a30ab09fc95e44255d9395470eb3d33872f483 100644 (file)
@@ -7,6 +7,9 @@
 /*
  * T4240 QDS board configuration file
  */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
 #define CONFIG_T4240QDS
 #define CONFIG_PHYS_64BIT
 
 
 #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_PBLPBI_CONFIG $(SRCTREE)/board/freescale/t4qds/t4_pbi.cfg
+#define CONFIG_PBLRCW_CONFIG $(SRCTREE)/board/freescale/t4qds/t4_rcw.cfg
+#endif
+
+#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
+/* Set 1M boot space */
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR (CONFIG_SYS_TEXT_BASE & 0xfff00000)
+#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR_PHYS \
+               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR)
+#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
+#define CONFIG_SYS_NO_FLASH
+#endif
+
+#define CONFIG_SRIO_PCIE_BOOT_MASTER
+#define CONFIG_DDR_ECC
+
 #include "t4qds.h"
+
+#ifdef CONFIG_SYS_NO_FLASH
+#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
+#define CONFIG_ENV_IS_NOWHERE
+#endif
+#else
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+#endif
+
+#if defined(CONFIG_SPIFLASH)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_SPI_BUS              0
+#define CONFIG_ENV_SPI_CS               0
+#define CONFIG_ENV_SPI_MAX_HZ           10000000
+#define CONFIG_ENV_SPI_MODE             0
+#define CONFIG_ENV_SIZE                 0x2000          /* 8KB */
+#define CONFIG_ENV_OFFSET               0x100000        /* 1MB */
+#define CONFIG_ENV_SECT_SIZE            0x10000
+#elif defined(CONFIG_SDCARD)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV          0
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_ENV_OFFSET              (512 * 1097)
+#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              (5 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+#define CONFIG_ENV_IS_IN_REMOTE
+#define CONFIG_ENV_ADDR                0xffe20000
+#define CONFIG_ENV_SIZE                0x2000
+#elif defined(CONFIG_ENV_IS_NOWHERE)
+#define CONFIG_ENV_SIZE                0x2000
+#else
+#define CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
+#endif
+
+#define CONFIG_SYS_CLK_FREQ    get_board_sys_clk()
+#define CONFIG_DDR_CLK_FREQ    get_board_ddr_clk()
+
+#ifndef __ASSEMBLY__
+unsigned long get_board_sys_clk(void);
+unsigned long get_board_ddr_clk(void);
+#endif
+
+/* EEPROM */
+#define CONFIG_ID_EEPROM
+#define CONFIG_SYS_I2C_EEPROM_NXID
+#define CONFIG_SYS_EEPROM_BUS_NUM      0
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_SYS_SPD_BUS_NUM 0
+#define SPD_EEPROM_ADDRESS1    0x51
+#define SPD_EEPROM_ADDRESS2    0x52
+#define SPD_EEPROM_ADDRESS3    0x53
+#define SPD_EEPROM_ADDRESS4    0x54
+#define SPD_EEPROM_ADDRESS5    0x55
+#define SPD_EEPROM_ADDRESS6    0x56
+#define SPD_EEPROM_ADDRESS     SPD_EEPROM_ADDRESS1     /* for p3041/p5010 */
+#define CONFIG_SYS_SDRAM_SIZE  4096    /* for fixed parameter use */
+
+/*
+ * IFC Definitions
+ */
+#define CONFIG_SYS_NOR0_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NOR0_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS \
+                               + 0x8000000) | \
+                               CSPR_PORT_SIZE_16 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR1_CSPR_EXT       (0xf)
+#define CONFIG_SYS_NOR1_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | \
+                               CSPR_PORT_SIZE_16 | \
+                               CSPR_MSEL_NOR | \
+                               CSPR_V)
+#define CONFIG_SYS_NOR_AMASK   IFC_AMASK(128*1024*1024)
+/* NOR Flash Timing Params */
+#define CONFIG_SYS_NOR_CSOR    CSOR_NAND_TRHZ_80
+
+#define CONFIG_SYS_NOR_FTIM0   (FTIM0_NOR_TACSE(0x4) | \
+                               FTIM0_NOR_TEADC(0x5) | \
+                               FTIM0_NOR_TEAHC(0x5))
+#define CONFIG_SYS_NOR_FTIM1   (FTIM1_NOR_TACO(0x35) | \
+                               FTIM1_NOR_TRAD_NOR(0x1A) |\
+                               FTIM1_NOR_TSEQRAD_NOR(0x13))
+#define CONFIG_SYS_NOR_FTIM2   (FTIM2_NOR_TCS(0x4) | \
+                               FTIM2_NOR_TCH(0x4) | \
+                               FTIM2_NOR_TWPH(0x0E) | \
+                               FTIM2_NOR_TWP(0x1c))
+#define CONFIG_SYS_NOR_FTIM3   0x0
+
+#define CONFIG_SYS_FLASH_QUIET_TEST
+#define CONFIG_FLASH_SHOW_PROGRESS     45 /* count down from 45/5: 9..1 */
+
+#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* number of banks */
+#define CONFIG_SYS_MAX_FLASH_SECT      1024    /* sectors per device */
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Flash Erase Timeout (ms) */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (ms) */
+
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+#define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE_PHYS \
+                                       + 0x8000000, CONFIG_SYS_FLASH_BASE_PHYS}
+
+#define CONFIG_FSL_QIXIS       /* use common QIXIS code */
+#define QIXIS_BASE                     0xffdf0000
+#define QIXIS_LBMAP_SWITCH             6
+#define QIXIS_LBMAP_MASK               0x0f
+#define QIXIS_LBMAP_SHIFT              0
+#define QIXIS_LBMAP_DFLTBANK           0x00
+#define QIXIS_LBMAP_ALTBANK            0x04
+#define QIXIS_RST_CTL_RESET            0x83
+#define QIXIS_RST_FORCE_MEM            0x1
+#define QIXIS_RCFG_CTL_RECONFIG_IDLE   0x20
+#define QIXIS_RCFG_CTL_RECONFIG_START  0x21
+#define QIXIS_RCFG_CTL_WATCHDOG_ENBLE  0x08
+#define QIXIS_BASE_PHYS                (0xf00000000ull | QIXIS_BASE)
+
+#define CONFIG_SYS_CSPR3_EXT   (0xf)
+#define CONFIG_SYS_CSPR3       (CSPR_PHYS_ADDR(QIXIS_BASE_PHYS) \
+                               | CSPR_PORT_SIZE_8 \
+                               | CSPR_MSEL_GPCM \
+                               | CSPR_V)
+#define CONFIG_SYS_AMASK3      IFC_AMASK(4*1024)
+#define CONFIG_SYS_CSOR3       0x0
+/* QIXIS Timing parameters for IFC CS3 */
+#define CONFIG_SYS_CS3_FTIM0           (FTIM0_GPCM_TACSE(0x0e) | \
+                                       FTIM0_GPCM_TEADC(0x0e) | \
+                                       FTIM0_GPCM_TEAHC(0x0e))
+#define CONFIG_SYS_CS3_FTIM1           (FTIM1_GPCM_TACO(0xff) | \
+                                       FTIM1_GPCM_TRAD(0x3f))
+#define CONFIG_SYS_CS3_FTIM2           (FTIM2_GPCM_TCS(0x0e) | \
+                                       FTIM2_GPCM_TCH(0x0) | \
+                                       FTIM2_GPCM_TWP(0x1f))
+#define CONFIG_SYS_CS3_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 = 2Byes */ \
+                               | CSOR_NAND_PGS_2K      /* Page Size = 2K */ \
+                               | CSOR_NAND_SPRZ_64/* Spare size = 64 */ \
+                               | CSOR_NAND_PB(64))     /*Pages Per Block = 64*/
+
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* ONFI NAND Flash mode0 Timing Params */
+#define CONFIG_SYS_NAND_FTIM0          (FTIM0_NAND_TCCST(0x07) | \
+                                       FTIM0_NAND_TWP(0x18)   | \
+                                       FTIM0_NAND_TWCHT(0x07) | \
+                                       FTIM0_NAND_TWH(0x0a))
+#define CONFIG_SYS_NAND_FTIM1          (FTIM1_NAND_TADLE(0x32) | \
+                                       FTIM1_NAND_TWBE(0x39)  | \
+                                       FTIM1_NAND_TRR(0x0e)   | \
+                                       FTIM1_NAND_TRP(0x18))
+#define CONFIG_SYS_NAND_FTIM2          (FTIM2_NAND_TRAD(0x0f) | \
+                                       FTIM2_NAND_TREH(0x0a) | \
+                                       FTIM2_NAND_TWHRE(0x1e))
+#define CONFIG_SYS_NAND_FTIM3          0x0
+
+#define CONFIG_SYS_NAND_DDR_LAW                11
+
+#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_MTD_NAND_VERIFY_WRITE
+#define CONFIG_CMD_NAND
+
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
+
+#if defined(CONFIG_NAND)
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
+#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK2              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR2               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NOR_FTIM3
+#else
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NOR0_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR0_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NOR_FTIM3
+#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR2               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK2              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR2               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
+#endif
+#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
+
+
+/* I2C */
+#define CONFIG_SYS_FSL_I2C_SPEED       100000  /* I2C speed */
+#define CONFIG_SYS_FSL_I2C2_SPEED      100000  /* I2C2 speed */
+#define I2C_MUX_PCA_ADDR_PRI           0x77 /* I2C bus multiplexer,primary */
+#define I2C_MUX_PCA_ADDR_SEC           0x76 /* I2C bus multiplexer,secondary */
+
+#define I2C_MUX_CH_DEFAULT     0x8
+#define I2C_MUX_CH_VOL_MONITOR 0xa
+#define I2C_MUX_CH_VSC3316_FS  0xc
+#define I2C_MUX_CH_VSC3316_BS  0xd
+
+/* Voltage monitor on channel 2*/
+#define I2C_VOL_MONITOR_ADDR           0x40
+#define I2C_VOL_MONITOR_BUS_V_OFFSET   0x2
+#define I2C_VOL_MONITOR_BUS_V_OVF      0x1
+#define I2C_VOL_MONITOR_BUS_V_SHIFT    3
+
+/* VSC Crossbar switches */
+#define CONFIG_VSC_CROSSBAR
+#define VSC3316_FSM_TX_ADDR    0x70
+#define VSC3316_FSM_RX_ADDR    0x71
+
+/*
+ * RapidIO
+ */
+
+/*
+ * for slave u-boot IMAGE instored in master memory space,
+ * PHYS must be aligned based on the SIZE
+ */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef080000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff80000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE 0x80000       /* 512K */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff80000ull
+/*
+ * for slave UCODE and ENV instored in master memory space,
+ * PHYS must be aligned based on the SIZE
+ */
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_PHYS 0xfef040000ull
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
+#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE 0x40000   /* 256K */
+
+/* slave core release by master*/
+#define CONFIG_SRIO_PCIE_BOOT_BRR_OFFSET 0xe00e4
+#define CONFIG_SRIO_PCIE_BOOT_RELEASE_MASK 0x00000001 /* release core 0 */
+
+/*
+ * SRIO_PCIE_BOOT - SLAVE
+ */
+#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
+#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR 0xFFE00000
+#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR_PHYS \
+               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR)
+#endif
+/*
+ * eSPI - Enhanced SPI
+ */
+#define CONFIG_FSL_ESPI
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_SST
+#define CONFIG_CMD_SF
+#define CONFIG_SF_DEFAULT_SPEED         10000000
+#define CONFIG_SF_DEFAULT_MODE          0
+
+
+/* Qman/Bman */
+#ifndef CONFIG_NOBQFMAN
+#define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
+#define CONFIG_SYS_BMAN_NUM_PORTALS    50
+#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    50
+#define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
+#define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
+#define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
+
+#define CONFIG_SYS_DPAA_FMAN
+#define CONFIG_SYS_DPAA_PME
+#define CONFIG_SYS_PMAN
+#define CONFIG_SYS_DPAA_DCE
+#define CONFIG_SYS_DPAA_RMAN
+#define CONFIG_SYS_INTERLAKEN
+
+/* 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 545KB (1089 blocks), Env is stored after the image, and the env size is
+ * 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)
+#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)
+#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
+/*
+ * Slave has no ucode locally, it can fetch this from remote. When implementing
+ * in two corenet boards, slave's ucode could be stored in master's memory
+ * space, the address can be mapped from slave TLB->slave LAW->
+ * slave SRIO or PCIE outbound window->master inbound window->
+ * master LAW->the ucode address in master's memory space.
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
+#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
+#else
+#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
+#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF40000
+#endif
+#define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
+#define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
+#endif /* CONFIG_NOBQFMAN */
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+#define CONFIG_FMAN_ENET
+#define CONFIG_PHYLIB_10G
+#define CONFIG_PHY_VITESSE
+#define CONFIG_PHY_TERANETICS
+#define SGMII_CARD_PORT1_PHY_ADDR 0x1C
+#define SGMII_CARD_PORT2_PHY_ADDR 0x1D
+#define SGMII_CARD_PORT3_PHY_ADDR 0x1E
+#define SGMII_CARD_PORT4_PHY_ADDR 0x1F
+#define FM1_10GEC1_PHY_ADDR    0x0
+#define FM1_10GEC2_PHY_ADDR    0x1
+#define FM2_10GEC1_PHY_ADDR    0x2
+#define FM2_10GEC2_PHY_ADDR    0x3
+#endif
+
+
+/* SATA */
+#ifdef CONFIG_FSL_SATA_V2
+#define CONFIG_LIBATA
+#define CONFIG_FSL_SATA
+
+#define CONFIG_SYS_SATA_MAX_DEVICE     2
+#define CONFIG_SATA1
+#define CONFIG_SYS_SATA1               CONFIG_SYS_MPC85xx_SATA1_ADDR
+#define CONFIG_SYS_SATA1_FLAGS         FLAGS_DMA
+#define CONFIG_SATA2
+#define CONFIG_SYS_SATA2               CONFIG_SYS_MPC85xx_SATA2_ADDR
+#define CONFIG_SYS_SATA2_FLAGS         FLAGS_DMA
+
+#define CONFIG_LBA48
+#define CONFIG_CMD_SATA
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_EXT2
+#endif
+
+#ifdef CONFIG_FMAN_ENET
+#define CONFIG_MII             /* MII PHY management */
+#define CONFIG_ETHPRIME                "FM1@DTSEC1"
+#define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
+#endif
+
+/*
+* USB
+*/
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_CMD_EXT2
+#define CONFIG_HAS_FSL_DR_USB
+
+#define CONFIG_MMC
+
+#ifdef CONFIG_MMC
+#define CONFIG_FSL_ESDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR       CONFIG_SYS_MPC85xx_ESDHC_ADDR
+#define CONFIG_SYS_FSL_ESDHC_BROKEN_TIMEOUT
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
+#define CONFIG_BOOTDELAY       10      /* -1 disables auto-boot */
+
+#define __USB_PHY_TYPE utmi
+
+/*
+ * T4240 has 3 DDR controllers. Default to 3-way interleaving. It can be
+ * 3way_1KB, 3way_4KB, 3way_8KB. T4160 has 2 DDR controllers. Default to 2-way
+ * interleaving. It can be cacheline, page, bank, superbank.
+ * See doc/README.fsl-ddr for details.
+ */
+#ifdef CONFIG_PPC_T4240
+#define CTRL_INTLV_PREFERED 3way_4KB
+#else
+#define CTRL_INTLV_PREFERED cacheline
+#endif
+
+#define        CONFIG_EXTRA_ENV_SETTINGS                               \
+       "hwconfig=fsl_ddr:"                                     \
+       "ctlr_intlv=" __stringify(CTRL_INTLV_PREFERED) ","      \
+       "bank_intlv=auto;"                                      \
+       "usb1: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=t4240qds/ramdisk.uboot\0"                  \
+       "fdtaddr=c00000\0"                                      \
+       "fdtfile=t4240qds/t4240qds.dtb\0"                               \
+       "bdev=sda3\0"                                           \
+       "c=ffe\0"
+
+#define CONFIG_HVBOOT                          \
+       "setenv bootargs config-addr=0x60000000; "      \
+       "bootm 0x01000000 - 0x00f00000"
+
+#define CONFIG_ALU                             \
+       "setenv bootargs root=/dev/$bdev rw "           \
+       "console=$consoledev,$baudrate $othbootargs;"   \
+       "cpu 1 release 0x01000000 - - -;"               \
+       "cpu 2 release 0x01000000 - - -;"               \
+       "cpu 3 release 0x01000000 - - -;"               \
+       "cpu 4 release 0x01000000 - - -;"               \
+       "cpu 5 release 0x01000000 - - -;"               \
+       "cpu 6 release 0x01000000 - - -;"               \
+       "cpu 7 release 0x01000000 - - -;"               \
+       "go 0x01000000"
+
+#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 */
index b18a3fa643a378141252ffe08d2dcdef285d7807..43d3d99bcb822653bd01b4811ff63d5615dae9ea 100644 (file)
@@ -31,6 +31,8 @@
 #define CONFIG_HOSTNAME                a3m071
 #endif
 
+#define CONFIG_BOOTCOUNT_LIMIT
+
 /*
  * Serial console configuration
  */
@@ -65,7 +67,8 @@
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT          "nor0=fc000000.flash"
 #define MTDPARTS_DEFAULT       "mtdparts=fc000000.flash:512k(u-boot)," \
-                                               "256k(env),"    \
+                                               "128k(env1),"   \
+                                               "128k(env2),"   \
                                                "128k(hwinfo)," \
                                                "1M(nvramsim)," \
                                                "128k(dtb),"    \
@@ -73,7 +76,9 @@
                                                "128k(sysinfo),"        \
                                                "7552k(root),"  \
                                                "4M(app),"      \
-                                               "13568k(data)"
+                                               "5376k(data),"  \
+                                               "8M(install)"
+
 #define CONFIG_LZO                     /* needed for UBI */
 #define CONFIG_RBTREE                  /* needed for UBI */
 #define CONFIG_CMD_MTDPARTS
        "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
                "nfsroot=${serverip}:${rootpath}\0"                     \
        "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "mtdargs=setenv bootargs root=/dev/mtdblock7 "                  \
+       "mtdargs=setenv bootargs root=/dev/mtdblock8 "                  \
                "rootfstype=squashfs,jffs2\0"                           \
        "addhost=setenv bootargs ${bootargs} "                          \
                "hostname=${hostname}\0"                                \
                ":${hostname}:${netdev}:off panic=1\0"                  \
        "addtty=setenv bootargs ${bootargs} "                           \
                "console=${consoledev},${baudrate}\0"                   \
-       "flash_nfs=run nfsargs addip addtty addhost;"                   \
+       "flash_nfs=run nfsargs addip addtty addmtd addhost;"            \
                "bootm ${kernel_addr} - ${fdt_addr}\0"                  \
-       "flash_mtd=run mtdargs addip addtty addhost;"                   \
+       "flash_mtd=run mtdargs addip addtty addmtd addhost;"            \
                "bootm ${kernel_addr} - ${fdt_addr}\0"                  \
-       "flash_self=run ramargs addip addtty addhost;"                  \
+       "flash_self=run ramargs addip addtty addmtd addhost;"           \
                "bootm ${kernel_addr} ${ramdisk_addr} ${fdt_addr}\0"    \
        "net_nfs=tftp ${kernel_addr_r} ${bootfile};"                    \
                "tftp ${fdt_addr_r} ${fdtfile};"                        \
-               "run nfsargs addip addtty addhost;"                     \
+               "run nfsargs addip addtty addmtd addhost;"              \
                "bootm ${kernel_addr_r} - ${fdt_addr_r}\0"              \
        "load=tftp ${loadaddr} " __stringify(CONFIG_HOSTNAME)           \
                "/u-boot-img.bin\0"                                     \
-       "update=protect off fc000000 fc07ffff; "                        \
+       "update=protect off fc000000 fc07ffff;                        \
                "era fc000000 fc07ffff;"                                \
                "cp.b ${loadaddr} fc000000 ${filesize}\0"               \
        "upd=run load;run update\0"                                     \
+       "upd_fdt=tftp 1800000 a3m071/a3m071.dtb;"                       \
+               "run mtdargs addip addtty addmtd addhost;"              \
+               "fdt addr 1800000;fdt boardsetup;fdt chosen;"           \
+               "erase fc1e0000 fc1fffff;cp.b 1800000 fc1e0000 20000"   \
+       "upd_kernel=tftp 1000000 a3m071/uImage-uncompressed;"           \
+               "erase fc200000 fc6fffff;"                              \
+               "cp.b 1000000 fc200000 ${filesize}"                     \
+       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"              \
+       "mtdids=" MTDIDS_DEFAULT "\0"                                   \
+       "mtdparts=" MTDPARTS_DEFAULT "\0"                               \
        ""
 
 #define CONFIG_BOOTCOMMAND     "run flash_mtd"
index 7d8227503a8f11a417aa0af70b481d3f15e3921d..5b3aac795492915cd1d9ff6d2a90116e4000bb29 100644 (file)
 #ifdef CONFIG_SYS_I2C_SOFT
 #define CONFIG_SOFT_I2C_GPIO_SCL GPIO_PF9
 #define CONFIG_SOFT_I2C_GPIO_SDA GPIO_PF8
-#define CONFIG_SYS_SOFT_I2C_SPEED      50000
-#define CONFIG_SYS_SOFT_I2C_SLAVE      0xFE
+#define CONFIG_SYS_I2C_SOFT_SPEED      50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
 #endif
 
 /*
index c76bc2cbe6154779c822097377ca3f0a2da23d5b..d20074c7310da6444c2fc39b7f4b1daf1497c66e 100644 (file)
 #ifdef CONFIG_DRIVER_TI_EMAC
 #define CONFIG_EMAC_MDIO_PHY_NUM       1
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 0f3f61a0d5e53607aa621e6095d695fb72e236a4..ac7ed812d68b6cd3118948633f56e4c22a2a65fe 100644 (file)
@@ -49,7 +49,6 @@
 #define CONFIG_EMAC_MDIO_PHY_NUM       0
 #define        CONFIG_SYS_EMAC_TI_CLKDIV       0xa9    /* 1MHz */
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index c0591c52770d9083b4291bfccea69271bbcb3649..c3fb80c8d056b174dd271b7f1406004ce5909f3d 100644 (file)
@@ -42,7 +42,6 @@
 #define CONFIG_E500MC                  /* BOOKE e500mc family */
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MPC85xx                 /* MPC85xx/PQ3 platform */
-#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MP                      /* support multiple processors */
 
 #ifndef CONFIG_SYS_TEXT_BASE
index 9407eaf74b83732a934456cf5f175a7d1370a00a..3e71ae5a3eef5bb62ae5d3a68814aa244045896f 100644 (file)
@@ -74,7 +74,6 @@
  */
 #ifdef CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 3c0aacdd56088ae280e99032151ab55e807bc899..e63d7c4ab6e79495a0551c7626a0b20dd282682d 100644 (file)
  */
 #ifdef CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 145e7ac926db17df54b818f3d0db7fd2bccd1e96..bdf012b2b8e3ee51c2b04feb6603a370660ccfd3 100644 (file)
@@ -21,9 +21,6 @@
 
 #include "tegra114-common.h"
 
-/* Must be off for Dalmore to boot !?!? FIXME */
-#define CONFIG_SYS_DCACHE_OFF
-
 /* Enable fdt support for Dalmore. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE     tegra114-dalmore
 #define CONFIG_OF_CONTROL
index e3084d3754cb756f303bbaa7bfafd7ee72b4e6c0..82dc1a2579ed7efa58ca9bbef687c54b667737f4 100644 (file)
@@ -44,7 +44,6 @@
 /* Network Configuration */
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 3c430ae0e002c26e2e95265e01737307f72686f3..7f578777529f100cdeedf26bfc6e701acb20883a 100644 (file)
@@ -69,7 +69,6 @@ extern unsigned int davinci_arm_clk_get(void);
 /* Network & Ethernet Configuration */
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 6526478a960d557774ab6808870dd825fd99f8b9..a49a9891d481ab43fb4e3d795836a38f7c236be1 100644 (file)
@@ -87,7 +87,6 @@
 /*==================================*/
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 29b10dd167dda3b881fe2b306606f49e75642e8c..1595bc7f6309d448a0defd492c85f7274262e34c 100644 (file)
@@ -56,7 +56,6 @@
 /*==================================*/
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 34a64b301adbd9b2b8ff7eb38a989fc64e5790cd..6ebbe818a543f7c8d5c1d0c24e329bb727582909 100644 (file)
@@ -50,7 +50,6 @@
 /* Network & Ethernet Configuration */
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index d35aea7ee5fb4c592cc8c35e4db22b16bde31978..3eaa7c08401f53426b4825ea442772263718954e 100644 (file)
@@ -88,7 +88,6 @@
 /*==================================*/
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 17391cddc988529c2f1314125f61a443a4ea45b9..68e5246b6db0cc387f7a41b5240a58d91732f5bd 100644 (file)
@@ -18,7 +18,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME                dlvsion-10g
-#define CONFIG_IDENT_STRING    " dlvision-10g 0.03"
+#define CONFIG_IDENT_STRING    " dlvision-10g 0.05"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F
 
 #define CONFIG_SYS_FPGA_COUNT          2
 
+#define CONFIG_SYS_FPGA_PTR { \
+       (struct ihs_fpga *)CONFIG_SYS_FPGA0_BASE, \
+       (struct ihs_fpga *)CONFIG_SYS_FPGA1_BASE }
+
+#define CONFIG_SYS_FPGA_COMMON
+
 #define CONFIG_SYS_LATCH0_RESET                0xffff
 #define CONFIG_SYS_LATCH0_BOOT         0xffff
-#define CONFIG_SYS_LATCH1_RESET                0xffcf
+#define CONFIG_SYS_LATCH1_RESET                0xffbf
 #define CONFIG_SYS_LATCH1_BOOT         0xffff
 
 #define CONFIG_SYS_FPGA_NO_RFL_HI
 #define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write/ms */
 
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buff'd writes */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protect */
 
 #define CONFIG_SYS_FLASH_EMPTY_INFO    /* 'E' for empty sector on flinfo */
 #define CONFIG_SYS_FLASH_QUIET_TEST    1       /* no warn upon unknown flash */
index 27471284ac6fa59d170b58e44d24d2d059a8d6a4..2f8d6b4c904becbfd01791798d33cf95c5469944 100644 (file)
@@ -18,7 +18,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME                dlvision
-#define CONFIG_IDENT_STRING    " dlvision 0.01"
+#define CONFIG_IDENT_STRING    " dlvision 0.02"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F      /* call board_early_init_f */
 #define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write/ms */
 
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buff'd writes */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protect */
 
 #define CONFIG_SYS_FLASH_EMPTY_INFO    /* 'E' for empty sector on flinfo */
 #define CONFIG_SYS_FLASH_QUIET_TEST    1       /* no warn upon unknown flash */
index 14a8db3bb878fc92045c8b92867581b37d16986a..e08423a097887257d3592bb32c4904a6d34ce10f 100644 (file)
@@ -89,7 +89,6 @@
 #ifdef CONFIG_DRIVER_TI_EMAC
 #define CONFIG_EMAC_MDIO_PHY_NUM       0
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 43cf6bc441c0421fa5dc5d24d837d5705d9e8a68..90033fa10f8c9591ce8b8c32021fb886701d6b35 100644 (file)
  */
 #ifdef CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 2ce5a7810c7ac894750411010fda58a5beb08687..8f8f85f4403ae71c3717a4e37cdba3bcb1cdc364 100644 (file)
@@ -23,7 +23,6 @@
 #define CONFIG_DISPLAY_BOARDINFO
 
 /* Enable fdt support for Exynos5250 */
-#define CONFIG_ARCH_DEVICE_TREE                exynos5250
 #define CONFIG_OF_CONTROL
 #define CONFIG_OF_SEPARATE
 
index 984f2745120854fdb2f7950d38f080c4e8d979c3..47e65d8b72853e378c9b6de6190b7f41dca751b5 100644 (file)
 
 #define CONFIG_CRC32_VERIFY  1
 
-#define CONFIG_BOOTP_MASK      (CONFIG_BOOTP_DEFAULT | \
-                                CONFIG_BOOTP_DNS | \
-                                CONFIG_BOOTP_DNS2 | \
-                                CONFIG_BOOTP_SEND_HOSTNAME )
+#define CONFIG_BOOTP_DNS
+#define CONFIG_BOOTP_DNS2
+#define CONFIG_BOOTP_SEND_HOSTNAME
 
 #define CONFIG_VERSION_VARIABLE 1
 
index 2e478cc63c28ca2dc1f58330c925f1126f10dc30..b8197ac18921cf68302e9b9e0fe8dbef5f81ae92 100644 (file)
@@ -97,7 +97,6 @@
  */
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index e08fc14b3ad58f6bdcbfce213d40a9f41cab732c..3e18a657faa6f94b6f20c013f03ea142d183c914 100644 (file)
 /* Ethernet support */
 #define CONFIG_DRIVER_TI_CPSW
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 33743e61ac0951b7e655d28daafcffa8dc463f7d..79ada68ac7715b54964f842a16eaee47fb0518a4 100644 (file)
@@ -18,7 +18,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME                io
-#define CONFIG_IDENT_STRING    " io 0.05"
+#define CONFIG_IDENT_STRING    " io 0.06"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write/ms */
 
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buff'd writes */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protect */
 
 #define CONFIG_SYS_FLASH_EMPTY_INFO    /* 'E' for empty sector on flinfo */
 #define CONFIG_SYS_FLASH_QUIET_TEST    1       /* no warn upon unknown flash */
 
 #define CONFIG_SYS_FPGA_COUNT          1
 
+#define CONFIG_SYS_FPGA_PTR \
+       { (struct ihs_fpga *)CONFIG_SYS_FPGA0_BASE }
+
+#define CONFIG_SYS_FPGA_COMMON
+
 /* Memory Bank 3 (Latches) initialization */
 #define CONFIG_SYS_LATCH_BASE          0x7f200000
 #define CONFIG_SYS_EBC_PB3AP           0xa2015480
index dcd1b82e25f0ffd738049d33240a577b687de07c..f110b706020f73fc01d6dee5a2f7497c5ece9e8f 100644 (file)
 
 #define CONFIG_SYS_FPGA_COUNT          2
 
+#define CONFIG_SYS_FPGA_PTR { \
+       (struct ihs_fpga *)CONFIG_SYS_FPGA0_BASE, \
+       (struct ihs_fpga *)CONFIG_SYS_FPGA1_BASE }
+
+#define CONFIG_SYS_FPGA_COMMON
+
 #define CONFIG_SYS_LATCH0_RESET                0xffff
 #define CONFIG_SYS_LATCH0_BOOT         0xffff
 #define CONFIG_SYS_LATCH1_RESET                0xffbf
index 32d9050adb952f14838e96ba00ed4ac5ba00f28e..ec9016a6d14b89ffa2444d4e725a11965658448f 100644 (file)
@@ -18,7 +18,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME                iocon
-#define CONFIG_IDENT_STRING    " iocon 0.04"
+#define CONFIG_IDENT_STRING    " iocon 0.05"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F
@@ -63,6 +63,7 @@
  * Commands additional to the ones defined in amcc-common.h
  */
 #define CONFIG_CMD_CACHE
+#define CONFIG_CMD_FPGAD
 #undef CONFIG_CMD_EEPROM
 
 /*
 #define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
 #define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
 
+#define CONFIG_SYS_I2C_SPEED           400000
+
+#define CONFIG_PCA953X                 /* NXP PCA9554 */
+#define CONFIG_PCA9698                 /* NXP PCA9698 */
+
 /*
  * Software (bit-bang) I2C driver configuration
  */
+#define CONFIG_SYS_I2C_SOFT
+#define CONFIG_SYS_I2C_SOFT_SPEED              50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE              0x7F
+#define I2C_SOFT_DECLARATIONS2
+#define CONFIG_SYS_I2C_SOFT_SPEED_2            50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_2            0x7F
+#define I2C_SOFT_DECLARATIONS3
+#define CONFIG_SYS_I2C_SOFT_SPEED_3            50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_3            0x7F
+#define I2C_SOFT_DECLARATIONS4
+#define CONFIG_SYS_I2C_SOFT_SPEED_4            50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_4            0x7F
+
+#define CONFIG_SYS_CH7301_I2C                  {1, 2, 3, 4}
 
 #ifndef __ASSEMBLY__
-void fpga_gpio_set(int pin);
-void fpga_gpio_clear(int pin);
-int fpga_gpio_get(int pin);
+void fpga_gpio_set(unsigned int bus, int pin);
+void fpga_gpio_clear(unsigned int bus, int pin);
+int fpga_gpio_get(unsigned int bus, int pin);
 #endif
 
 #define I2C_ACTIVE     { }
 #define I2C_TRISTATE   { }
-#define I2C_READ       fpga_gpio_get(0x0040) ? 1 : 0
-#define I2C_SDA(bit)   if (bit) fpga_gpio_set(0x0040); \
-                       else fpga_gpio_clear(0x0040)
-#define I2C_SCL(bit)   if (bit) fpga_gpio_set(0x0020); \
-                       else fpga_gpio_clear(0x0020)
+#define I2C_READ \
+       (fpga_gpio_get(I2C_ADAP_HWNR, 0x0040) ? 1 : 0)
+#define I2C_SDA(bit) \
+       do { \
+               if (bit) \
+                       fpga_gpio_set(I2C_ADAP_HWNR, 0x0040); \
+               else \
+                       fpga_gpio_clear(I2C_ADAP_HWNR, 0x0040); \
+       } while (0)
+#define I2C_SCL(bit) \
+       do { \
+               if (bit) \
+                       fpga_gpio_set(I2C_ADAP_HWNR, 0x0020); \
+               else \
+                       fpga_gpio_clear(I2C_ADAP_HWNR, 0x0020); \
+       } while (0)
 #define I2C_DELAY      udelay(25)      /* 1/4 I2C clock duration */
 
 /*
@@ -141,7 +172,6 @@ int fpga_gpio_get(int pin);
 #define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write/ms */
 
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buff'd writes */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protect */
 
 #define CONFIG_SYS_FLASH_EMPTY_INFO    /* 'E' for empty sector on flinfo */
 #define CONFIG_SYS_FLASH_QUIET_TEST    1       /* no warn upon unknown flash */
@@ -236,6 +266,11 @@ int fpga_gpio_get(int pin);
 
 #define CONFIG_SYS_FPGA_COUNT          1
 
+#define CONFIG_SYS_MCLINK_MAX          3
+
+#define CONFIG_SYS_FPGA_PTR \
+       { (struct ihs_fpga *)CONFIG_SYS_FPGA0_BASE, NULL, NULL, NULL }
+
 /* Memory Bank 3 (Latches) initialization */
 #define CONFIG_SYS_LATCH_BASE          0x7f200000
 #define CONFIG_SYS_EBC_PB3AP           0x02025080
@@ -251,6 +286,9 @@ int fpga_gpio_get(int pin);
  */
 #define CONFIG_SYS_MPC92469AC
 #define CONFIG_SYS_CH7301
-#define CONFIG_SYS_OSD_SCREENS         CONFIG_SYS_FPGA_COUNT
+#define CONFIG_SYS_OSD_SCREENS         1
+
+#define CONFIG_BITBANGMII              /* bit-bang MII PHY management */
+#define CONFIG_BITBANGMII_MULTI
 
 #endif /* __CONFIG_H */
index 2ec776174cd07644b3e18ea8e150abc068c8ff91..932dac36ad0d1443c61a71b5a2d43fdb272669c3 100644 (file)
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_EXT2
 
-#define CONFIG_BOOTP_MASK      CONFIG_BOOTP_ALL
+#define CONFIG_BOOTP_SUBNETMASK
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_NISDOMAIN
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_DNS
+#define CONFIG_BOOTP_DNS2
+#define CONFIG_BOOTP_SEND_HOSTNAME
+#define CONFIG_BOOTP_NTPSERVER
+#define CONFIG_BOOTP_TIMEOFFSET
 
 #define CONFIG_OF_LIBFDT       1
 
index 85ae016e0cac0db9aeff8708165ea15ac1e8a8e3..5e27ab2e4cfc49c2fd33b5b2a5dbcf2d8e50e18c 100644 (file)
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_DRIVER_TI_EMAC_USE_RMII
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 87f3d132a88c767875f26c0fe44b6fc64b92c83d..0e3de777b25eec15371a209b20f5875ea14a60a9 100644 (file)
@@ -18,7 +18,7 @@
 /* Open Firmware DTS */
 #define CONFIG_OF_CONTROL      1
 #define CONFIG_OF_EMBED                1
-#define CONFIG_DEFAULT_DEVICE_TREE microblaze
+#define CONFIG_DEFAULT_DEVICE_TREE microblaze-generic
 
 /* linear and spi flash memory */
 #ifdef XILINX_FLASH_START
index 5abb8b1a7521d822ecd87513f13ce29fc78af40b..ccbb1fa9b16ebfefd311dcdc550b8196cfa2ad3b 100644 (file)
@@ -19,7 +19,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME                neo
-#define CONFIG_IDENT_STRING    " neo 0.01"
+#define CONFIG_IDENT_STRING    " neo 0.02"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
 
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protection        */
 
 #define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
 #define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash        */
 
 #define CONFIG_SYS_FPGA_COUNT          1
 
+#define CONFIG_SYS_FPGA_PTR \
+       { (struct ihs_fpga *)CONFIG_SYS_FPGA0_BASE }
+
+#define CONFIG_SYS_FPGA_COMMON
+
 /* Memory Bank 3 (Latches) initialization                      */
 #define CONFIG_SYS_LATCH_BASE          0x7f200000
 #define CONFIG_SYS_EBC_PB3AP           0x92015480
index d10c2b56f9498ddea6708ff6b63c497364ec9a4b..3c4249bddae6cba749ceb7e9394611713ad83213 100644 (file)
@@ -17,6 +17,8 @@
        "uuid_disk=${uuid_gpt_disk};" \
        "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}"
 
+#include <configs/omap5_common.h>
+
 #define CONFIG_CONS_INDEX              3
 #define CONFIG_SYS_NS16550_COM3                UART3_BASE
 #define CONFIG_BAUDRATE                        115200
 #define CONFIG_SYS_I2C_TCA642X_BUS_NUM 4
 #define CONFIG_SYS_I2C_TCA642X_ADDR 0x22
 
+/* USB UHH support options */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_HOST
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_OMAP
+#define CONFIG_USB_STORAGE
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+
+#define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 80
+#define CONFIG_OMAP_EHCI_PHY3_RESET_GPIO 79
+
+/* Enabled commands */
+#define CONFIG_CMD_DHCP                /* DHCP Support                 */
+#define CONFIG_CMD_NET         /* bootp, tftpboot, rarpboot    */
+#define CONFIG_CMD_NFS         /* NFS support                  */
+
+/* USB Networking options */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+
 #define CONSOLEDEV             "ttyO2"
 #define CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC       16296
 
-#include <configs/omap5_common.h>
-
 #endif /* __CONFIG_OMAP5_EVM_H */
index 1b0be23dd36d8710014dc53c16d59b4b8aadc60b..5f0c4fb254be812c329563ca24539cdc4ee853b1 100644 (file)
@@ -34,7 +34,7 @@
 #define CONFIG_SYS_L2_SIZE     (256 << 10)
 #endif
 
-#if defined(CONFIG_P1020RDB)
+#if defined(CONFIG_P1020RDB_PC)
 #define CONFIG_BOARDNAME "P1020RDB-PC"
 #define CONFIG_NAND_FSL_ELBC
 #define CONFIG_P1020
 #define CONFIG_SYS_L2_SIZE     (256 << 10)
 #endif
 
+/*
+ * P1020RDB-PD board has user selectable switches for evaluating different
+ * frequency and boot options for the P1020 device. The table that
+ * follow describe the available options. The front six binary number was in
+ * accordance with SW3[1:6].
+ * 111101 533 533 267 667 NOR Core0 boot; Core1 hold-off
+ * 101101 667 667 333 667 NOR Core0 boot; Core1 hold-off
+ * 011001 800 800 400 667 NOR Core0 boot; Core1 hold-off
+ * 001001 800 800 400 667 SD/MMC Core0 boot; Core1 hold-off
+ * 001101 800 800 400 667 SPI Core0 boot; Core1 hold-off
+ * 010001 800 800 400 667 NAND Core0 boot; Core1 hold-off
+ * 011101 800 800 400 667 PCIe-2 Core0 boot; Core1 hold-off
+ */
+#if defined(CONFIG_P1020RDB_PD)
+#define CONFIG_BOARDNAME "P1020RDB-PD"
+#define CONFIG_NAND_FSL_ELBC
+#define CONFIG_P1020
+#define CONFIG_SPI_FLASH
+#define CONFIG_VSC7385_ENET
+#define CONFIG_SLIC
+#define __SW_BOOT_MASK         0x03
+#define __SW_BOOT_NOR          0x64
+#define __SW_BOOT_SPI          0x34
+#define __SW_BOOT_SD           0x24
+#define __SW_BOOT_NAND         0x44
+#define __SW_BOOT_PCIE         0x74
+#define CONFIG_SYS_L2_SIZE     (256 << 10)
+#endif
+
 #if defined(CONFIG_P1021RDB)
 #define CONFIG_BOARDNAME "P1021RDB-PC"
 #define CONFIG_NAND_FSL_ELBC
 #define CONFIG_SPL_INIT_MINIMAL
 #define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_NAND_SUPPORT
-#define CONFIG_SPL_NAND_MINIMAL
 #define CONFIG_SPL_FLUSH_IMAGE
 #define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
 
 #define SPD_EEPROM_ADDRESS 0x52
 #undef CONFIG_FSL_DDR_INTERACTIVE
 
-#ifdef CONFIG_P1020MBG
+#if (defined(CONFIG_P1020MBG) || defined(CONFIG_P1020RDB_PD))
 #define CONFIG_SYS_SDRAM_SIZE_LAW      LAW_SIZE_2G
 #define CONFIG_CHIP_SELECTS_PER_CTRL   2
 #else
 /*
  * Local Bus Definitions
  */
-#if defined(CONFIG_P1020MBG)
+#if (defined(CONFIG_P1020MBG) || defined(CONFIG_P1020RDB_PD))
 #define CONFIG_SYS_MAX_FLASH_SECT      512     /* 64M */
 #define CONFIG_SYS_FLASH_BASE          0xec000000
 #elif defined(CONFIG_P1020UTM)
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 #define CONFIG_MTD_NAND_VERIFY_WRITE
 #define CONFIG_CMD_NAND
+#if defined(CONFIG_P1020RDB_PD)
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
+#else
 #define CONFIG_SYS_NAND_BLOCK_SIZE     (16 * 1024)
+#endif
 
 #define CONFIG_SYS_NAND_BR_PRELIM (BR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
        | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \
        | BR_PS_8       /* Port Size = 8 bit */ \
        | BR_MS_FCM     /* MSEL = FCM */ \
        | BR_V) /* valid */
+#if defined(CONFIG_P1020RDB_PD)
+#define CONFIG_SYS_NAND_OR_PRELIM      (OR_AM_32KB \
+       | OR_FCM_PGS    /* Large Page*/ \
+       | OR_FCM_CSCT \
+       | OR_FCM_CST \
+       | OR_FCM_CHT \
+       | OR_FCM_SCY_1 \
+       | OR_FCM_TRLX \
+       | OR_FCM_EHTR)
+#else
 #define CONFIG_SYS_NAND_OR_PRELIM      (OR_AM_32KB     /* small page */ \
        | OR_FCM_CSCT \
        | OR_FCM_CST \
        | OR_FCM_SCY_1 \
        | OR_FCM_TRLX \
        | OR_FCM_EHTR)
+#endif
 #endif /* CONFIG_NAND_FSL_ELBC */
 
 #define CONFIG_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
diff --git a/include/configs/p1_twr.h b/include/configs/p1_twr.h
new file mode 100644 (file)
index 0000000..4aa7064
--- /dev/null
@@ -0,0 +1,619 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * QorIQ P1 Tower boards configuration file
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#if defined(CONFIG_TWR_P1025)
+#define CONFIG_BOARDNAME "TWR-P1025"
+#define CONFIG_P1025
+#define CONFIG_PHY_ATHEROS
+#define CONFIG_QE
+#define CONFIG_SYS_LBC_LBCR    0x00080000      /* Conversion of LBC addr */
+#define CONFIG_SYS_LBC_LCRR    0x80000002      /* LB clock ratio reg */
+#endif
+
+#ifdef CONFIG_SDCARD
+#define CONFIG_RAMBOOT_SDCARD
+#define CONFIG_SYS_RAMBOOT
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_SYS_TEXT_BASE           0x11000000
+#define CONFIG_RESET_VECTOR_ADDRESS    0x1107fffc
+#endif
+
+#ifndef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE           0xeff80000
+#endif
+
+#ifndef CONFIG_RESET_VECTOR_ADDRESS
+#define CONFIG_RESET_VECTOR_ADDRESS    0xeffffffc
+#endif
+
+#ifndef CONFIG_SYS_MONITOR_BASE
+#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE    /* start of monitor */
+#endif
+
+/* High Level Configuration Options */
+#define CONFIG_BOOKE
+#define CONFIG_E500
+#define CONFIG_MPC85xx
+
+#define CONFIG_MP
+
+#define CONFIG_FSL_ELBC
+#define CONFIG_PCI
+#define CONFIG_PCIE1   /* PCIE controler 1 (slot 1) */
+#define CONFIG_PCIE2   /* PCIE controler 2 (slot 2) */
+#define CONFIG_FSL_PCI_INIT    /* Use common FSL init code */
+#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
+#define CONFIG_FSL_PCIE_RESET  /* need PCIe reset errata */
+#define CONFIG_SYS_PCI_64BIT   /* enable 64-bit PCI resources */
+
+#define CONFIG_FSL_LAW
+#define CONFIG_TSEC_ENET       /* tsec ethernet support */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_CMD_SATA
+#define CONFIG_SATA_SIL3114
+#define CONFIG_SYS_SATA_MAX_DEVICE     2
+#define CONFIG_LIBATA
+#define CONFIG_LBA48
+
+#ifndef __ASSEMBLY__
+extern unsigned long get_board_sys_clk(unsigned long dummy);
+#endif
+#define CONFIG_SYS_CLK_FREQ    get_board_sys_clk(0) /*sysclk for TWR-P1025 */
+
+#define CONFIG_DDR_CLK_FREQ    66666666
+
+#define CONFIG_HWCONFIG
+/*
+ * These can be toggled for performance analysis, otherwise use default.
+ */
+#define CONFIG_L2_CACHE
+#define CONFIG_BTB
+
+#define CONFIG_BOARD_EARLY_INIT_F      /* Call board_pre_init */
+
+#define CONFIG_SYS_MEMTEST_START       0x00200000      /* memtest works on */
+#define CONFIG_SYS_MEMTEST_END         0x1fffffff
+#define CONFIG_PANIC_HANG      /* do not reset board on panic */
+
+#define CONFIG_SYS_CCSRBAR             0xffe00000
+#define CONFIG_SYS_CCSRBAR_PHYS_LOW    CONFIG_SYS_CCSRBAR
+
+/* DDR Setup */
+#define CONFIG_FSL_DDR3
+
+#define CONFIG_SYS_SDRAM_SIZE_LAW      LAW_SIZE_512M
+#define CONFIG_CHIP_SELECTS_PER_CTRL   1
+
+#define CONFIG_SYS_SDRAM_SIZE          (1u << (CONFIG_SYS_SDRAM_SIZE_LAW - 19))
+#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
+
+#define CONFIG_NUM_DDR_CONTROLLERS     1
+#define CONFIG_DIMM_SLOTS_PER_CTLR     1
+
+/* Default settings for DDR3 */
+#define CONFIG_SYS_DDR_CS0_BNDS                0x0000001f
+#define CONFIG_SYS_DDR_CS0_CONFIG      0x80014202
+#define CONFIG_SYS_DDR_CS0_CONFIG_2    0x00000000
+#define CONFIG_SYS_DDR_CS1_BNDS                0x00000000
+#define CONFIG_SYS_DDR_CS1_CONFIG      0x00000000
+#define CONFIG_SYS_DDR_CS1_CONFIG_2    0x00000000
+
+#define CONFIG_SYS_DDR_DATA_INIT       0xdeadbeef
+#define CONFIG_SYS_DDR_INIT_ADDR       0x00000000
+#define CONFIG_SYS_DDR_INIT_EXT_ADDR   0x00000000
+#define CONFIG_SYS_DDR_MODE_CONTROL    0x00000000
+
+#define CONFIG_SYS_DDR_ZQ_CONTROL      0x89080600
+#define CONFIG_SYS_DDR_WRLVL_CONTROL   0x8655a608
+#define CONFIG_SYS_DDR_SR_CNTR         0x00000000
+#define CONFIG_SYS_DDR_RCW_1           0x00000000
+#define CONFIG_SYS_DDR_RCW_2           0x00000000
+#define CONFIG_SYS_DDR_CONTROL         0xc70c0000      /* Type = DDR3  */
+#define CONFIG_SYS_DDR_CONTROL_2       0x04401050
+#define CONFIG_SYS_DDR_TIMING_4                0x00220001
+#define CONFIG_SYS_DDR_TIMING_5                0x03402400
+
+#define CONFIG_SYS_DDR_TIMING_3                0x00020000
+#define CONFIG_SYS_DDR_TIMING_0                0x00220004
+#define CONFIG_SYS_DDR_TIMING_1                0x5c5b6544
+#define CONFIG_SYS_DDR_TIMING_2                0x0fa880de
+#define CONFIG_SYS_DDR_CLK_CTRL                0x03000000
+#define CONFIG_SYS_DDR_MODE_1          0x80461320
+#define CONFIG_SYS_DDR_MODE_2          0x00008000
+#define CONFIG_SYS_DDR_INTERVAL                0x09480000
+
+/*
+ * Memory map
+ *
+ * 0x0000_0000 0x1fff_ffff     DDR             Up to 512MB cacheable
+ * 0x8000_0000 0xdfff_ffff     PCI Express Mem 1.5G non-cacheable(PCIe * 3)
+ * 0xffc0_0000 0xffc3_ffff     PCI IO range    256k non-cacheable
+ *
+ * Localbus
+ * 0xe000_0000 0xe002_0000     SSD1289         128K non-cacheable
+ * 0xec00_0000 0xefff_ffff     FLASH           Up to 64M non-cacheable
+ *
+ * 0xff90_0000 0xff97_ffff     L2 SRAM         Up to 512K cacheable
+ * 0xffd0_0000 0xffd0_3fff     init ram        16K Cacheable
+ * 0xffe0_0000 0xffef_ffff     CCSR            1M non-cacheable
+ */
+
+/*
+ * Local Bus Definitions
+ */
+#define CONFIG_SYS_MAX_FLASH_SECT      512     /* 64M */
+#define CONFIG_SYS_FLASH_BASE          0xec000000
+
+#define CONFIG_SYS_FLASH_BASE_PHYS     CONFIG_SYS_FLASH_BASE
+
+#define CONFIG_FLASH_BR_PRELIM (BR_PHYS_ADDR((CONFIG_SYS_FLASH_BASE_PHYS)) \
+       | BR_PS_16 | BR_V)
+
+#define CONFIG_FLASH_OR_PRELIM 0xfc0000b1
+
+#define CONFIG_SYS_SSD_BASE    0xe0000000
+#define CONFIG_SYS_SSD_BASE_PHYS       CONFIG_SYS_SSD_BASE
+#define CONFIG_SSD_BR_PRELIM   (BR_PHYS_ADDR(CONFIG_SYS_SSD_BASE_PHYS) | \
+                                       BR_PS_16 | BR_V)
+#define CONFIG_SSD_OR_PRELIM   (OR_AM_64KB | OR_GPCM_CSNT | OR_GPCM_XACS | \
+                                OR_GPCM_ACS_DIV2 | OR_GPCM_SCY | \
+                                OR_GPCM_TRLX | OR_GPCM_EHTR | OR_GPCM_EAD)
+
+#define CONFIG_SYS_BR2_PRELIM CONFIG_SSD_BR_PRELIM
+#define CONFIG_SYS_OR2_PRELIM CONFIG_SSD_OR_PRELIM
+
+#define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE_PHYS}
+#define CONFIG_SYS_FLASH_QUIET_TEST
+#define CONFIG_FLASH_SHOW_PROGRESS     45      /* count down from 45/5: 9..1 */
+
+#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* number of banks */
+
+#undef CONFIG_SYS_FLASH_CHECKSUM
+#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Flash Erase Timeout (ms) */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (ms) */
+
+#define CONFIG_FLASH_CFI_DRIVER
+#define CONFIG_SYS_FLASH_CFI
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
+
+#define CONFIG_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
+
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0xffd00000
+/* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  CONFIG_SYS_INIT_RAM_ADDR
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
+/* Size of used area in RAM */
+#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)/* Reserve 512 kB for Mon */
+#define CONFIG_SYS_MALLOC_LEN  (1024 * 1024)/* Reserved for malloc */
+
+#define CONFIG_SYS_BR0_PRELIM  CONFIG_FLASH_BR_PRELIM  /* NOR Base Address */
+#define CONFIG_SYS_OR0_PRELIM  CONFIG_FLASH_OR_PRELIM  /* NOR Options */
+
+/* Serial Port
+ * open - index 2
+ * shorted - index 1
+ */
+#define CONFIG_CONS_INDEX              1
+#undef CONFIG_SERIAL_SOFTWARE_FIFO
+#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
+#ifdef CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
+#endif
+
+/*
+ * Pass open firmware flat tree
+ */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+#define CONFIG_OF_STDOUT_VIA_ALIAS
+
+#define CONFIG_SYS_64BIT_VSPRINTF
+#define CONFIG_SYS_64BIT_STRTOUL
+
+/* 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 spd and slave address */
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x52
+
+/*
+ * I2C2 EEPROM
+ */
+#define CONFIG_SYS_FSL_I2C2_SPEED      400000  /* I2C spd and slave address */
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x3100
+
+#define CONFIG_SYS_I2C_PCA9555_ADDR    0x23
+
+/* enable read and write access to EEPROM */
+#define CONFIG_CMD_EEPROM
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5
+
+/*
+ * eSPI - Enhanced SPI
+ */
+#define CONFIG_HARD_SPI
+#define CONFIG_FSL_ESPI
+
+#if defined(CONFIG_PCI)
+/*
+ * General PCI
+ * Memory space is mapped 1-1, but I/O space must start from 0.
+ */
+
+/* controller 2, direct to uli, tgtid 2, Base address 9000 */
+#define CONFIG_SYS_PCIE2_NAME          "TWR-ELEV PCIe SLOT"
+#define CONFIG_SYS_PCIE2_MEM_VIRT      0xa0000000
+#define CONFIG_SYS_PCIE2_MEM_BUS       0xa0000000
+#define CONFIG_SYS_PCIE2_MEM_PHYS      0xa0000000
+#define CONFIG_SYS_PCIE2_MEM_SIZE      0x20000000      /* 512M */
+#define CONFIG_SYS_PCIE2_IO_VIRT       0xffc10000
+#define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE2_IO_PHYS       0xffc10000
+#define CONFIG_SYS_PCIE2_IO_SIZE       0x00010000      /* 64k */
+
+/* controller 1, tgtid 1, Base address a000 */
+#define CONFIG_SYS_PCIE1_NAME          "mini PCIe SLOT"
+#define CONFIG_SYS_PCIE1_MEM_VIRT      0x80000000
+#define CONFIG_SYS_PCIE1_MEM_BUS       0x80000000
+#define CONFIG_SYS_PCIE1_MEM_PHYS      0x80000000
+#define CONFIG_SYS_PCIE1_MEM_SIZE      0x20000000      /* 512M */
+#define CONFIG_SYS_PCIE1_IO_VIRT       0xffc00000
+#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xffc00000
+#define CONFIG_SYS_PCIE1_IO_SIZE       0x00010000      /* 64k */
+
+#define CONFIG_NET_MULTI
+#define CONFIG_PCI_PNP /* do pci plug-and-play */
+#define CONFIG_E1000   /* Defind e1000 pci Ethernet card*/
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_NET
+
+#define CONFIG_PCI_SCAN_SHOW   /* show pci devices on startup */
+#define CONFIG_DOS_PARTITION
+#endif /* CONFIG_PCI */
+
+#if defined(CONFIG_TSEC_ENET)
+
+#ifndef CONFIG_NET_MULTI
+#define CONFIG_NET_MULTI
+#endif
+
+#define CONFIG_MII             /* MII PHY management */
+#define CONFIG_TSEC1
+#define CONFIG_TSEC1_NAME      "eTSEC1"
+#undef CONFIG_TSEC2
+#undef CONFIG_TSEC2_NAME
+#define CONFIG_TSEC3
+#define CONFIG_TSEC3_NAME      "eTSEC3"
+
+#define TSEC1_PHY_ADDR 2
+#define TSEC2_PHY_ADDR 0
+#define TSEC3_PHY_ADDR 1
+
+#define TSEC1_FLAGS    (TSEC_GIGABIT | TSEC_REDUCED)
+#define TSEC2_FLAGS    (TSEC_GIGABIT | TSEC_REDUCED)
+#define TSEC3_FLAGS    (TSEC_GIGABIT | TSEC_REDUCED)
+
+#define TSEC1_PHYIDX   0
+#define TSEC2_PHYIDX   0
+#define TSEC3_PHYIDX   0
+
+#define CONFIG_ETHPRIME        "eTSEC1"
+
+#define CONFIG_PHY_GIGE        1       /* Include GbE speed/duplex detection */
+
+#define CONFIG_HAS_ETH0
+#define CONFIG_HAS_ETH1
+#undef CONFIG_HAS_ETH2
+#endif /* CONFIG_TSEC_ENET */
+
+#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_FMAN_FW_LENGTH   0x10000
+#endif /* CONFIG_QE */
+
+#ifdef CONFIG_TWR_P1025
+/*
+ * QE UEC ethernet configuration
+ */
+#define CONFIG_MIIM_ADDRESS    (CONFIG_SYS_CCSRBAR + 0x82120)
+
+#undef CONFIG_UEC_ETH
+#define CONFIG_PHY_MODE_NEED_CHANGE
+
+#define CONFIG_UEC_ETH1        /* ETH1 */
+#define CONFIG_HAS_ETH0
+
+#ifdef CONFIG_UEC_ETH1
+#define CONFIG_SYS_UEC1_UCC_NUM        0       /* UCC1 */
+#define CONFIG_SYS_UEC1_RX_CLK QE_CLK12 /* CLK12 for MII */
+#define CONFIG_SYS_UEC1_TX_CLK QE_CLK9 /* CLK9 for MII */
+#define CONFIG_SYS_UEC1_ETH_TYPE       FAST_ETH
+#define CONFIG_SYS_UEC1_PHY_ADDR       0x18    /* 0x18 for MII */
+#define CONFIG_SYS_UEC1_INTERFACE_TYPE PHY_INTERFACE_MODE_MII
+#define CONFIG_SYS_UEC1_INTERFACE_SPEED        100
+#endif /* CONFIG_UEC_ETH1 */
+
+#define CONFIG_UEC_ETH5        /* ETH5 */
+#define CONFIG_HAS_ETH1
+
+#ifdef CONFIG_UEC_ETH5
+#define CONFIG_SYS_UEC5_UCC_NUM        4       /* UCC5 */
+#define CONFIG_SYS_UEC5_RX_CLK QE_CLK_NONE
+#define CONFIG_SYS_UEC5_TX_CLK QE_CLK13 /* CLK 13 for RMII */
+#define CONFIG_SYS_UEC5_ETH_TYPE       FAST_ETH
+#define CONFIG_SYS_UEC5_PHY_ADDR       0x19    /* 0x19 for RMII */
+#define CONFIG_SYS_UEC5_INTERFACE_TYPE PHY_INTERFACE_MODE_RMII
+#define CONFIG_SYS_UEC5_INTERFACE_SPEED        100
+#endif /* CONFIG_UEC_ETH5 */
+#endif /* CONFIG_TWR-P1025 */
+
+/*
+ * Environment
+ */
+#ifdef CONFIG_SYS_RAMBOOT
+#ifdef CONFIG_RAMBOOT_SDCARD
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_SYS_MMC_ENV_DEV 0
+#else
+#define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
+#define CONFIG_ENV_SIZE                0x2000
+#endif
+#else
+#define CONFIG_ENV_IS_IN_FLASH
+#if CONFIG_SYS_MONITOR_BASE > 0xfff80000
+#define CONFIG_ENV_ADDR        0xfff80000
+#else
+#define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
+#endif
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
+#endif
+
+#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_IRQ
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_CMD_REGINFO
+
+/*
+ * USB
+ */
+#define CONFIG_HAS_FSL_DR_USB
+
+#if defined(CONFIG_HAS_FSL_DR_USB)
+#define CONFIG_USB_EHCI
+
+#ifdef CONFIG_USB_EHCI
+#define CONFIG_CMD_USB
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_USB_STORAGE
+#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
+#endif
+
+#if defined(CONFIG_MMC) || defined(CONFIG_USB_EHCI) \
+                || defined(CONFIG_FSL_SATA)
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
+#undef CONFIG_WATCHDOG /* watchdog disabled */
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
+#define CONFIG_CMDLINE_EDITING                 /* Command-line editing */
+#define CONFIG_SYS_LOAD_ADDR   0x2000000       /* default load address */
+#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_HZ          1000    /* decrementer freq: 1ms tick */
+
+/*
+ * 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 Memory for Linux*/
+#define CONFIG_SYS_BOOTM_LEN   (64 << 20)      /* Increase max gunzip size */
+
+/*
+ * Environment Configuration
+ */
+#define CONFIG_HOSTNAME                unknown
+#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_BOOTARGS        /* the boot command will set bootargs */
+
+#define CONFIG_BAUDRATE        115200
+
+#define        CONFIG_EXTRA_ENV_SETTINGS       \
+"netdev=eth0\0"        \
+"uboot=" __stringify(CONFIG_UBOOTPATH) "\0"    \
+"loadaddr=1000000\0"   \
+"bootfile=uImage\0"    \
+"dtbfile=twr-p1025twr.dtb\0"   \
+"ramdiskfile=rootfs.ext2.gz.uboot\0"   \
+"qefirmwarefile=fsl_qe_ucode_1021_10_A.bin\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" \
+"kernelflash=tftpboot $loadaddr $bootfile; "   \
+       "protect off 0xefa80000 +$filesize; "   \
+       "erase 0xefa80000 +$filesize; " \
+       "cp.b $loadaddr 0xefa80000 $filesize; " \
+       "protect on 0xefa80000 +$filesize; "    \
+       "cmp.b $loadaddr 0xefa80000 $filesize\0"        \
+"dtbflash=tftpboot $loadaddr $dtbfile; "       \
+       "protect off 0xefe80000 +$filesize; "   \
+       "erase 0xefe80000 +$filesize; " \
+       "cp.b $loadaddr 0xefe80000 $filesize; " \
+       "protect on 0xefe80000 +$filesize; "    \
+       "cmp.b $loadaddr 0xefe80000 $filesize\0"        \
+"ramdiskflash=tftpboot $loadaddr $ramdiskfile; "       \
+       "protect off 0xeeb80000 +$filesize; "   \
+       "erase 0xeeb80000 +$filesize; " \
+       "cp.b $loadaddr 0xeeb80000 $filesize; " \
+       "protect on 0xeeb80000 +$filesize; "    \
+       "cmp.b $loadaddr 0xeeb80000 $filesize\0"        \
+"qefirmwareflash=tftpboot $loadaddr $qefirmwarefile; " \
+       "protect off 0xefec0000 +$filesize; "   \
+       "erase 0xefec0000 +$filesize; " \
+       "cp.b $loadaddr 0xefec0000 $filesize; " \
+       "protect on 0xefec0000 +$filesize; "    \
+       "cmp.b $loadaddr 0xefec0000 $filesize\0"        \
+"consoledev=ttyS0\0"   \
+"ramdiskaddr=2000000\0"        \
+"ramdiskfile=rootfs.ext2.gz.uboot\0"   \
+"fdtaddr=c00000\0"     \
+"bdev=sda1\0"  \
+"norbootaddr=ef080000\0"       \
+"norfdtaddr=ef040000\0"        \
+"ramdisk_size=120000\0" \
+"usbboot=setenv bootargs root=/dev/sda1 rw rootdelay=5 " \
+"console=$consoledev,$baudrate $othbootargs ; bootm 0xefa80000 - 0xefe80000"
+
+#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_HDBOOT  \
+"setenv bootargs root=/dev/$bdev rw rootdelay=30 "     \
+"console=$consoledev,$baudrate $othbootargs;" \
+"usb start;"   \
+"ext2load usb 0:1 $loadaddr /boot/$bootfile;"  \
+"ext2load usb 0:1 $fdtaddr /boot/$fdtfile;"    \
+"bootm $loadaddr - $fdtaddr"
+
+#define CONFIG_USB_FAT_BOOT    \
+"setenv bootargs root=/dev/ram rw "    \
+"console=$consoledev,$baudrate $othbootargs " \
+"ramdisk_size=$ramdisk_size;"  \
+"usb start;"   \
+"fatload usb 0:2 $loadaddr $bootfile;" \
+"fatload usb 0:2 $fdtaddr $fdtfile;"   \
+"fatload usb 0:2 $ramdiskaddr $ramdiskfile;"   \
+"bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+#define CONFIG_USB_EXT2_BOOT   \
+"setenv bootargs root=/dev/ram rw "    \
+"console=$consoledev,$baudrate $othbootargs " \
+"ramdisk_size=$ramdisk_size;"  \
+"usb start;"   \
+"ext2load usb 0:4 $loadaddr $bootfile;"        \
+"ext2load usb 0:4 $fdtaddr $fdtfile;" \
+"ext2load usb 0:4 $ramdiskaddr $ramdiskfile;" \
+"bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+#define CONFIG_NORBOOT \
+"setenv bootargs root=/dev/mtdblock3 rw "      \
+"console=$consoledev,$baudrate rootfstype=jffs2 $othbootargs;" \
+"bootm $norbootaddr - $norfdtaddr"
+
+#define CONFIG_RAMBOOTCOMMAND_TFTP     \
+"setenv bootargs root=/dev/ram rw "    \
+"console=$consoledev,$baudrate $othbootargs " \
+"ramdisk_size=$ramdisk_size;"  \
+"tftp $ramdiskaddr $ramdiskfile;"      \
+"tftp $loadaddr $bootfile;"    \
+"tftp $fdtaddr $fdtfile;"      \
+"bootm $loadaddr $ramdiskaddr $fdtaddr"
+
+#define CONFIG_RAMBOOTCOMMAND  \
+"setenv bootargs root=/dev/ram rw "    \
+"console=$consoledev,$baudrate $othbootargs " \
+"ramdisk_size=$ramdisk_size;"  \
+"bootm 0xefa80000 0xeeb80000 0xefe80000"
+
+#define CONFIG_BOOTCOMMAND     CONFIG_RAMBOOTCOMMAND
+
+#endif /* __CONFIG_H */
index d4d4d791cf9ec1d94504c8474fb12c4d82ce8503..e2b4de7414d542a1537f04ab2d7abf7187227c15 100644 (file)
 #define CONFIG_CMD_PING
 #define CONFIG_DRIVER_TI_CPSW
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 1ed53dbbb1ee5a38283cf86b0f0712297844c1cf..3e82fc255823493ae059f2971abe949baa4b5519 100644 (file)
@@ -7,24 +7,8 @@
 /*
  * Corenet DS style board configuration file
  */
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#ifdef CONFIG_RAMBOOT_PBL
-#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
-#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
-#define CONFIG_PBLPBI_CONFIG $(SRCTREE)/board/freescale/t4qds/t4_pbi.cfg
-#define CONFIG_PBLRCW_CONFIG $(SRCTREE)/board/freescale/t4qds/t4_rcw.cfg
-#endif
-
-#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
-/* Set 1M boot space */
-#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR (CONFIG_SYS_TEXT_BASE & 0xfff00000)
-#define CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR_PHYS \
-               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_SLAVE_ADDR)
-#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
-#define CONFIG_SYS_NO_FLASH
-#endif
+#ifndef __T4QDS_H
+#define __T4QDS_H
 
 #define CONFIG_CMD_REGINFO
 
@@ -34,7 +18,6 @@
 #define CONFIG_E500MC                  /* BOOKE e500mc family */
 #define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
 #define CONFIG_MPC85xx                 /* MPC85xx/PQ3 platform */
-#define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_MP                      /* support multiple processors */
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_SRIO
 #define CONFIG_SRIO1                   /* SRIO port 1 */
 #define CONFIG_SRIO2                   /* SRIO port 2 */
-#define CONFIG_SRIO_PCIE_BOOT_MASTER
 
 #define CONFIG_FSL_LAW                 /* Use common FSL init code */
 
 #define CONFIG_ENV_OVERWRITE
 
-#ifdef CONFIG_SYS_NO_FLASH
-#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-#else
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-#endif
-
-#if defined(CONFIG_SPIFLASH)
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_SPI_BUS              0
-#define CONFIG_ENV_SPI_CS               0
-#define CONFIG_ENV_SPI_MAX_HZ           10000000
-#define CONFIG_ENV_SPI_MODE             0
-#define CONFIG_ENV_SIZE                 0x2000          /* 8KB */
-#define CONFIG_ENV_OFFSET               0x100000        /* 1MB */
-#define CONFIG_ENV_SECT_SIZE            0x10000
-#elif defined(CONFIG_SDCARD)
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_SYS_MMC_ENV_DEV          0
-#define CONFIG_ENV_SIZE                        0x2000
-#define CONFIG_ENV_OFFSET              (512 * 1097)
-#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              (5 * CONFIG_SYS_NAND_BLOCK_SIZE)
-#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
-#define CONFIG_ENV_ADDR                0xffe20000
-#define CONFIG_ENV_SIZE                0x2000
-#elif defined(CONFIG_ENV_IS_NOWHERE)
-#define CONFIG_ENV_SIZE                0x2000
-#else
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
-#endif
-
-#define CONFIG_SYS_CLK_FREQ    get_board_sys_clk()
-#define CONFIG_DDR_CLK_FREQ    get_board_ddr_clk()
-
-#ifndef __ASSEMBLY__
-unsigned long get_board_sys_clk(void);
-unsigned long get_board_ddr_clk(void);
-#endif
-
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
 #define CONFIG_SYS_CACHE_STASHING
 #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
@@ -129,14 +58,9 @@ unsigned long get_board_ddr_clk(void);
 
 #define CONFIG_ENABLE_36BIT_PHYS
 
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_ADDR_MAP
 #define CONFIG_SYS_NUM_ADDR_MAP                64      /* number of TLB1 entries */
-#endif
 
-#if 0
-#define CONFIG_POST CONFIG_SYS_POST_MEMORY     /* test POST memory test */
-#endif
 #define CONFIG_SYS_MEMTEST_START       0x00200000      /* memtest works on */
 #define CONFIG_SYS_MEMTEST_END         0x00400000
 #define CONFIG_SYS_ALT_MEMTEST
@@ -147,17 +71,8 @@ unsigned long get_board_ddr_clk(void);
  */
 #define CONFIG_SYS_INIT_L3_ADDR                CONFIG_RAMBOOT_TEXT_BASE
 
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_DCSRBAR             0xf0000000
 #define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
-#endif
-
-/* EEPROM */
-#define CONFIG_ID_EEPROM
-#define CONFIG_SYS_I2C_EEPROM_NXID
-#define CONFIG_SYS_EEPROM_BUS_NUM      0
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x57
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
 
 /*
  * DDR Setup
@@ -174,199 +89,16 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_DDR_SPD
 #define CONFIG_FSL_DDR3
 
-#define CONFIG_SYS_SPD_BUS_NUM 0
-#define SPD_EEPROM_ADDRESS1    0x51
-#define SPD_EEPROM_ADDRESS2    0x52
-#define SPD_EEPROM_ADDRESS3    0x53
-#define SPD_EEPROM_ADDRESS4    0x54
-#define SPD_EEPROM_ADDRESS5    0x55
-#define SPD_EEPROM_ADDRESS6    0x56
-#define SPD_EEPROM_ADDRESS     SPD_EEPROM_ADDRESS1     /* for p3041/p5010 */
-#define CONFIG_SYS_SDRAM_SIZE  4096    /* for fixed parameter use */
 
 /*
  * IFC Definitions
  */
 #define CONFIG_SYS_FLASH_BASE  0xe0000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
-#else
-#define CONFIG_SYS_FLASH_BASE_PHYS     CONFIG_SYS_FLASH_BASE
-#endif
-
-#define CONFIG_SYS_NOR0_CSPR_EXT       (0xf)
-#define CONFIG_SYS_NOR0_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS \
-                               + 0x8000000) | \
-                               CSPR_PORT_SIZE_16 | \
-                               CSPR_MSEL_NOR | \
-                               CSPR_V)
-#define CONFIG_SYS_NOR1_CSPR_EXT       (0xf)
-#define CONFIG_SYS_NOR1_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_FLASH_BASE_PHYS) | \
-                               CSPR_PORT_SIZE_16 | \
-                               CSPR_MSEL_NOR | \
-                               CSPR_V)
-#define CONFIG_SYS_NOR_AMASK   IFC_AMASK(128*1024*1024)
-/* NOR Flash Timing Params */
-#define CONFIG_SYS_NOR_CSOR    CSOR_NAND_TRHZ_80
-
-#define CONFIG_SYS_NOR_FTIM0   (FTIM0_NOR_TACSE(0x4) | \
-                               FTIM0_NOR_TEADC(0x5) | \
-                               FTIM0_NOR_TEAHC(0x5))
-#define CONFIG_SYS_NOR_FTIM1   (FTIM1_NOR_TACO(0x35) | \
-                               FTIM1_NOR_TRAD_NOR(0x1A) |\
-                               FTIM1_NOR_TSEQRAD_NOR(0x13))
-#define CONFIG_SYS_NOR_FTIM2   (FTIM2_NOR_TCS(0x4) | \
-                               FTIM2_NOR_TCH(0x4) | \
-                               FTIM2_NOR_TWPH(0x0E) | \
-                               FTIM2_NOR_TWP(0x1c))
-#define CONFIG_SYS_NOR_FTIM3   0x0
-
-#define CONFIG_SYS_FLASH_QUIET_TEST
-#define CONFIG_FLASH_SHOW_PROGRESS     45 /* count down from 45/5: 9..1 */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* number of banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      1024    /* sectors per device */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Flash Erase Timeout (ms) */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (ms) */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_BANKS_LIST    {CONFIG_SYS_FLASH_BASE_PHYS \
-                                       + 0x8000000, CONFIG_SYS_FLASH_BASE_PHYS}
-
-#define CONFIG_FSL_QIXIS       /* use common QIXIS code */
-#define QIXIS_BASE                     0xffdf0000
-#define QIXIS_LBMAP_SWITCH             6
-#define QIXIS_LBMAP_MASK               0x0f
-#define QIXIS_LBMAP_SHIFT              0
-#define QIXIS_LBMAP_DFLTBANK           0x00
-#define QIXIS_LBMAP_ALTBANK            0x04
-#define QIXIS_RST_CTL_RESET            0x83
-#define QIXIS_RCFG_CTL_RECONFIG_IDLE   0x20
-#define QIXIS_RCFG_CTL_RECONFIG_START  0x21
-#define QIXIS_RCFG_CTL_WATCHDOG_ENBLE  0x08
-#ifdef CONFIG_PHYS_64BIT
-#define QIXIS_BASE_PHYS                (0xf00000000ull | QIXIS_BASE)
-#else
-#define QIXIS_BASE_PHYS                QIXIS_BASE
-#endif
-
-#define CONFIG_SYS_CSPR3_EXT   (0xf)
-#define CONFIG_SYS_CSPR3       (CSPR_PHYS_ADDR(QIXIS_BASE_PHYS) \
-                               | CSPR_PORT_SIZE_8 \
-                               | CSPR_MSEL_GPCM \
-                               | CSPR_V)
-#define CONFIG_SYS_AMASK3      IFC_AMASK(4 * 1024)
-#define CONFIG_SYS_CSOR3       0x0
-/* QIXIS Timing parameters for IFC CS3 */
-#define CONFIG_SYS_CS3_FTIM0           (FTIM0_GPCM_TACSE(0x0e) | \
-                                       FTIM0_GPCM_TEADC(0x0e) | \
-                                       FTIM0_GPCM_TEAHC(0x0e))
-#define CONFIG_SYS_CS3_FTIM1           (FTIM1_GPCM_TACO(0xff) | \
-                                       FTIM1_GPCM_TRAD(0x3f))
-#define CONFIG_SYS_CS3_FTIM2           (FTIM2_GPCM_TCS(0x0e) | \
-                                       FTIM2_GPCM_TCH(0x0) | \
-                                       FTIM2_GPCM_TWP(0x1f))
-#define CONFIG_SYS_CS3_FTIM3           0x0
-
-/* NAND Flash on IFC */
-#define CONFIG_NAND_FSL_IFC
-#define CONFIG_SYS_NAND_BASE           0xff800000
-#ifdef CONFIG_PHYS_64BIT
-#define CONFIG_SYS_NAND_BASE_PHYS      (0xf00000000ull | CONFIG_SYS_NAND_BASE)
-#else
-#define CONFIG_SYS_NAND_BASE_PHYS      CONFIG_SYS_NAND_BASE
-#endif
 
-#define CONFIG_SYS_NAND_CSPR_EXT       (0xf)
-#define CONFIG_SYS_NAND_CSPR   (CSPR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
-                               | CSPR_PORT_SIZE_8 /* Port Size = 8 bit */ \
-                               | CSPR_MSEL_NAND        /* MSEL = NAND */ \
-                               | CSPR_V)
-#define CONFIG_SYS_NAND_AMASK  IFC_AMASK(64*1024)
-
-#define CONFIG_SYS_NAND_CSOR    (CSOR_NAND_ECC_ENC_EN   /* ECC on encode */ \
-                               | CSOR_NAND_ECC_DEC_EN  /* ECC on decode */ \
-                               | CSOR_NAND_ECC_MODE_4  /* 4-bit ECC */ \
-                               | CSOR_NAND_RAL_3       /* RAL = 2Byes */ \
-                               | CSOR_NAND_PGS_2K      /* Page Size = 2K */ \
-                               | CSOR_NAND_SPRZ_64/* Spare size = 64 */ \
-                               | CSOR_NAND_PB(64))     /*Pages Per Block = 64*/
-
-#define CONFIG_SYS_NAND_ONFI_DETECTION
-
-/* ONFI NAND Flash mode0 Timing Params */
-#define CONFIG_SYS_NAND_FTIM0          (FTIM0_NAND_TCCST(0x07) | \
-                                       FTIM0_NAND_TWP(0x18)   | \
-                                       FTIM0_NAND_TWCHT(0x07) | \
-                                       FTIM0_NAND_TWH(0x0a))
-#define CONFIG_SYS_NAND_FTIM1          (FTIM1_NAND_TADLE(0x32) | \
-                                       FTIM1_NAND_TWBE(0x39)  | \
-                                       FTIM1_NAND_TRR(0x0e)   | \
-                                       FTIM1_NAND_TRP(0x18))
-#define CONFIG_SYS_NAND_FTIM2          (FTIM2_NAND_TRAD(0x0f) | \
-                                       FTIM2_NAND_TREH(0x0a) | \
-                                       FTIM2_NAND_TWHRE(0x1e))
-#define CONFIG_SYS_NAND_FTIM3          0x0
-
-#define CONFIG_SYS_NAND_DDR_LAW                11
-
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_MTD_NAND_VERIFY_WRITE
-#define CONFIG_CMD_NAND
-
-#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
-
-#if defined(CONFIG_NAND)
-#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NAND_CSPR_EXT
-#define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
-#define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
-#define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
-#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NAND_FTIM0
-#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NAND_FTIM1
-#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
-#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
-#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NOR0_CSPR_EXT
-#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR0_CSPR
-#define CONFIG_SYS_AMASK2              CONFIG_SYS_NOR_AMASK
-#define CONFIG_SYS_CSOR2               CONFIG_SYS_NOR_CSOR
-#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NOR_FTIM0
-#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NOR_FTIM1
-#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NOR_FTIM2
-#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NOR_FTIM3
-#else
-#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NOR0_CSPR_EXT
-#define CONFIG_SYS_CSPR0               CONFIG_SYS_NOR0_CSPR
-#define CONFIG_SYS_AMASK0              CONFIG_SYS_NOR_AMASK
-#define CONFIG_SYS_CSOR0               CONFIG_SYS_NOR_CSOR
-#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NOR_FTIM0
-#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NOR_FTIM1
-#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NOR_FTIM2
-#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NOR_FTIM3
-#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NAND_CSPR_EXT
-#define CONFIG_SYS_CSPR2               CONFIG_SYS_NAND_CSPR
-#define CONFIG_SYS_AMASK2              CONFIG_SYS_NAND_AMASK
-#define CONFIG_SYS_CSOR2               CONFIG_SYS_NAND_CSOR
-#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NAND_FTIM0
-#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NAND_FTIM1
-#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NAND_FTIM2
-#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
-#endif
-#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_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
 
-#if defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_SYS_RAMBOOT
-#endif
-
 #define CONFIG_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
 #define CONFIG_MISC_INIT_R
 
@@ -376,18 +108,12 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_L1_INIT_RAM
 #define CONFIG_SYS_INIT_RAM_LOCK
 #define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
          CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
-#else
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe0ec000 /* Initial L1 address */
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
-#endif
 #define CONFIG_SYS_INIT_RAM_SIZE               0x00004000
 
 #define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
@@ -431,89 +157,22 @@ unsigned long get_board_ddr_clk(void);
 /* I2C */
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_I2C_FSL
-#define CONFIG_SYS_FSL_I2C_SPEED       100000
 #define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
 #define CONFIG_SYS_FSL_I2C_OFFSET      0x118000
-#define CONFIG_SYS_FSL_I2C2_SPEED      100000
 #define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
 #define CONFIG_SYS_FSL_I2C2_OFFSET     0x118100
 
-#define I2C_MUX_PCA_ADDR_PRI           0x77 /* I2C bus multiplexer,primary */
-#define I2C_MUX_PCA_ADDR_SEC           0x76 /* I2C bus multiplexer,secondary */
-
-#define I2C_MUX_CH_DEFAULT     0x8
-#define I2C_MUX_CH_VOL_MONITOR 0xa
-#define I2C_MUX_CH_VSC3316_FS  0xc
-#define I2C_MUX_CH_VSC3316_BS  0xd
-
-/* Voltage monitor on channel 2*/
-#define I2C_VOL_MONITOR_ADDR           0x40
-#define I2C_VOL_MONITOR_BUS_V_OFFSET   0x2
-#define I2C_VOL_MONITOR_BUS_V_OVF      0x1
-#define I2C_VOL_MONITOR_BUS_V_SHIFT    3
-
-/* VSC Crossbar switches */
-#define CONFIG_VSC_CROSSBAR
-#define VSC3316_FSM_TX_ADDR    0x70
-#define VSC3316_FSM_RX_ADDR    0x71
-
 /*
  * RapidIO
  */
 #define CONFIG_SYS_SRIO1_MEM_VIRT      0xa0000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_SRIO1_MEM_PHYS      0xc20000000ull
-#else
-#define CONFIG_SYS_SRIO1_MEM_PHYS      0xa0000000
-#endif
 #define CONFIG_SYS_SRIO1_MEM_SIZE      0x10000000      /* 256M */
 
 #define CONFIG_SYS_SRIO2_MEM_VIRT      0xb0000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_SRIO2_MEM_PHYS      0xc30000000ull
-#else
-#define CONFIG_SYS_SRIO2_MEM_PHYS      0xb0000000
-#endif
 #define CONFIG_SYS_SRIO2_MEM_SIZE      0x10000000      /* 256M */
 
-/*
- * for slave u-boot IMAGE instored in master memory space,
- * PHYS must be aligned based on the SIZE
- */
-#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef080000ull
-#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff80000ull
-#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE 0x80000       /* 512K */
-#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff80000ull
-/*
- * for slave UCODE and ENV instored in master memory space,
- * PHYS must be aligned based on the SIZE
- */
-#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_PHYS 0xfef040000ull
-#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
-#define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE 0x40000   /* 256K */
-
-/* slave core release by master*/
-#define CONFIG_SRIO_PCIE_BOOT_BRR_OFFSET 0xe00e4
-#define CONFIG_SRIO_PCIE_BOOT_RELEASE_MASK 0x00000001 /* release core 0 */
-
-/*
- * SRIO_PCIE_BOOT - SLAVE
- */
-#ifdef CONFIG_SRIO_PCIE_BOOT_SLAVE
-#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR 0xFFE00000
-#define CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR_PHYS \
-               (0x300000000ull | CONFIG_SYS_SRIO_PCIE_BOOT_UCODE_ENV_ADDR)
-#endif
-/*
- * eSPI - Enhanced SPI
- */
-#define CONFIG_FSL_ESPI
-#define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_SST
-#define CONFIG_CMD_SF
-#define CONFIG_SF_DEFAULT_SPEED         10000000
-#define CONFIG_SF_DEFAULT_MODE          0
-
 /*
  * General PCI
  * Memory space is mapped 1-1, but I/O space must start from 0.
@@ -521,59 +180,32 @@ unsigned long get_board_ddr_clk(void);
 
 /* controller 1, direct to uli, tgtid 3, Base address 20000 */
 #define CONFIG_SYS_PCIE1_MEM_VIRT      0x80000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_PCIE1_MEM_BUS       0xe0000000
 #define CONFIG_SYS_PCIE1_MEM_PHYS      0xc00000000ull
-#else
-#define CONFIG_SYS_PCIE1_MEM_BUS       0x80000000
-#define CONFIG_SYS_PCIE1_MEM_PHYS      0x80000000
-#endif
 #define CONFIG_SYS_PCIE1_MEM_SIZE      0x20000000      /* 512M */
 #define CONFIG_SYS_PCIE1_IO_VIRT       0xf8000000
 #define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_PCIE1_IO_PHYS       0xff8000000ull
-#else
-#define CONFIG_SYS_PCIE1_IO_PHYS       0xf8000000
-#endif
 #define CONFIG_SYS_PCIE1_IO_SIZE       0x00010000      /* 64k */
 
 /* controller 2, Slot 2, tgtid 2, Base address 201000 */
 #define CONFIG_SYS_PCIE2_MEM_VIRT      0xa0000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_PCIE2_MEM_BUS       0xe0000000
 #define CONFIG_SYS_PCIE2_MEM_PHYS      0xc20000000ull
-#else
-#define CONFIG_SYS_PCIE2_MEM_BUS       0xa0000000
-#define CONFIG_SYS_PCIE2_MEM_PHYS      0xa0000000
-#endif
 #define CONFIG_SYS_PCIE2_MEM_SIZE      0x20000000      /* 512M */
 #define CONFIG_SYS_PCIE2_IO_VIRT       0xf8010000
 #define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_PCIE2_IO_PHYS       0xff8010000ull
-#else
-#define CONFIG_SYS_PCIE2_IO_PHYS       0xf8010000
-#endif
 #define CONFIG_SYS_PCIE2_IO_SIZE       0x00010000      /* 64k */
 
 /* controller 3, Slot 1, tgtid 1, Base address 202000 */
 #define CONFIG_SYS_PCIE3_MEM_VIRT      0xc0000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_PCIE3_MEM_BUS       0xe0000000
 #define CONFIG_SYS_PCIE3_MEM_PHYS      0xc40000000ull
-#else
-#define CONFIG_SYS_PCIE3_MEM_BUS       0xc0000000
-#define CONFIG_SYS_PCIE3_MEM_PHYS      0xc0000000
-#endif
 #define CONFIG_SYS_PCIE3_MEM_SIZE      0x20000000      /* 512M */
 #define CONFIG_SYS_PCIE3_IO_VIRT       0xf8020000
 #define CONFIG_SYS_PCIE3_IO_BUS                0x00000000
-#ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_PCIE3_IO_PHYS       0xff8020000ull
-#else
-#define CONFIG_SYS_PCIE3_IO_PHYS       0xf8020000
-#endif
 #define CONFIG_SYS_PCIE3_IO_SIZE       0x00010000      /* 64k */
 
 /* controller 4, Base address 203000 */
@@ -584,84 +216,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_PCIE4_IO_PHYS       0xff8030000ull
 #define CONFIG_SYS_PCIE4_IO_SIZE       0x00010000      /* 64k */
 
-/* Qman/Bman */
-#ifndef CONFIG_NOBQFMAN
-#define CONFIG_SYS_DPAA_QBMAN          /* Support Q/Bman */
-#define CONFIG_SYS_BMAN_NUM_PORTALS    50
-#define CONFIG_SYS_BMAN_MEM_BASE       0xf4000000
-#ifdef CONFIG_PHYS_64BIT
-#define CONFIG_SYS_BMAN_MEM_PHYS       0xff4000000ull
-#else
-#define CONFIG_SYS_BMAN_MEM_PHYS       CONFIG_SYS_BMAN_MEM_BASE
-#endif
-#define CONFIG_SYS_BMAN_MEM_SIZE       0x02000000
-#define CONFIG_SYS_QMAN_NUM_PORTALS    50
-#define CONFIG_SYS_QMAN_MEM_BASE       0xf6000000
-#ifdef CONFIG_PHYS_64BIT
-#define CONFIG_SYS_QMAN_MEM_PHYS       0xff6000000ull
-#else
-#define CONFIG_SYS_QMAN_MEM_PHYS       CONFIG_SYS_QMAN_MEM_BASE
-#endif
-#define CONFIG_SYS_QMAN_MEM_SIZE       0x02000000
-
-#define CONFIG_SYS_DPAA_FMAN
-#define CONFIG_SYS_DPAA_PME
-#define CONFIG_SYS_PMAN
-#define CONFIG_SYS_DPAA_DCE
-#define CONFIG_SYS_INTERLAKEN
-
-/* 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 545KB (1089 blocks), Env is stored after the image, and the env size is
- * 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)
-#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)
-#elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-/*
- * Slave has no ucode locally, it can fetch this from remote. When implementing
- * in two corenet boards, slave's ucode could be stored in master's memory
- * space, the address can be mapped from slave TLB->slave LAW->
- * slave SRIO or PCIE outbound window->master inbound window->
- * master LAW->the ucode address in master's memory space.
- */
-#define CONFIG_SYS_QE_FMAN_FW_IN_REMOTE
-#define CONFIG_SYS_QE_FMAN_FW_ADDR     0xFFE00000
-#else
-#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR             0xEFF40000
-#endif
-#define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
-#define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
-#endif /* CONFIG_NOBQFMAN */
-
-#ifdef CONFIG_SYS_DPAA_FMAN
-#define CONFIG_FMAN_ENET
-#define CONFIG_PHYLIB_10G
-#define CONFIG_PHY_VITESSE
-#define CONFIG_PHY_TERANETICS
-#define SGMII_CARD_PORT1_PHY_ADDR 0x1C
-#define SGMII_CARD_PORT2_PHY_ADDR 0x1D
-#define SGMII_CARD_PORT3_PHY_ADDR 0x1E
-#define SGMII_CARD_PORT4_PHY_ADDR 0x1F
-#define FM1_10GEC1_PHY_ADDR    0x0
-#define FM1_10GEC2_PHY_ADDR    0x1
-#define FM2_10GEC1_PHY_ADDR    0x2
-#define FM2_10GEC2_PHY_ADDR    0x3
-#endif
-
 #ifdef CONFIG_PCI
 #define CONFIG_PCI_INDIRECT_BRIDGE
 #define CONFIG_NET_MULTI
@@ -723,30 +277,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_CMD_NET
 #endif
 
-/*
-* USB
-*/
-#define CONFIG_CMD_USB
-#define CONFIG_USB_STORAGE
-#define CONFIG_USB_EHCI
-#define CONFIG_USB_EHCI_FSL
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
-#define CONFIG_CMD_EXT2
-#define CONFIG_HAS_FSL_DR_USB
-
-#define CONFIG_MMC
-
-#ifdef CONFIG_MMC
-#define CONFIG_FSL_ESDHC
-#define CONFIG_SYS_FSL_ESDHC_ADDR       CONFIG_SYS_MPC85xx_ESDHC_ADDR
-#define CONFIG_SYS_FSL_ESDHC_BROKEN_TIMEOUT
-#define CONFIG_CMD_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION
-#endif
-
 /*
  * Miscellaneous configurable options
  */
@@ -788,112 +318,11 @@ unsigned long get_board_ddr_clk(void);
 /* 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
-
-/*
- * T4240 has 3 DDR controllers. Default to 3way_4KB interleaving. It can be
- * 3way_1KB, 3way_4KB, 3way_8KB. T4160 has 2 DDR controllers. Default to
- * cacheline interleaving. It can be cacheline, page, bank, superbank.
- * See doc/README.fsl-ddr for details.
- */
-#ifdef CONFIG_PPC_T4240
-#define CTRL_INTLV_PREFERED 3way_4KB
-#else
-#define CTRL_INTLV_PREFERED cacheline
-#endif
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                               \
-       "hwconfig=fsl_ddr:"                                     \
-       "ctlr_intlv=" __stringify(CTRL_INTLV_PREFERED) ","      \
-       "bank_intlv=auto;"                                      \
-       "usb1: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=t4240qds/ramdisk.uboot\0"                  \
-       "fdtaddr=c00000\0"                                      \
-       "fdtfile=t4240qds/t4240qds.dtb\0"                               \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
-
-/* For emulation this causes u-boot to jump to the start of the proof point
-   app code automatically */
-#define CONFIG_PROOF_POINTS                    \
- "setenv bootargs root=/dev/$bdev rw "         \
- "console=$consoledev,$baudrate $othbootargs;" \
- "cpu 1 release 0x29000000 - - -;"             \
- "cpu 2 release 0x29000000 - - -;"             \
- "cpu 3 release 0x29000000 - - -;"             \
- "cpu 4 release 0x29000000 - - -;"             \
- "cpu 5 release 0x29000000 - - -;"             \
- "cpu 6 release 0x29000000 - - -;"             \
- "cpu 7 release 0x29000000 - - -;"             \
- "go 0x29000000"
-
 #define CONFIG_HVBOOT                          \
  "setenv bootargs config-addr=0x60000000; "    \
  "bootm 0x01000000 - 0x00f00000"
 
-#define CONFIG_ALU                             \
- "setenv bootargs root=/dev/$bdev rw "         \
- "console=$consoledev,$baudrate $othbootargs;" \
- "cpu 1 release 0x01000000 - - -;"             \
- "cpu 2 release 0x01000000 - - -;"             \
- "cpu 3 release 0x01000000 - - -;"             \
- "cpu 4 release 0x01000000 - - -;"             \
- "cpu 5 release 0x01000000 - - -;"             \
- "cpu 6 release 0x01000000 - - -;"             \
- "cpu 7 release 0x01000000 - - -;"             \
- "go 0x01000000"
-
-#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 */
index c215f0b92522057d28bee64a1b600d67af7d4371..60dd8ff11af272e15e7b203437b3957d97b2b074 100644 (file)
 #define CONFIG_DRIVER_TI_EMAC_USE_RMII
 #define CONFIG_MII
 #define CONFIG_EMAC_MDIO_PHY_NUM       0
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index ccd68a19fd4cf2a23f656d3df46ae34e1fdc00d0..ba6c6bb9f5f80aadd8de9c71f9b3bf66a9354749 100644 (file)
@@ -17,8 +17,6 @@
 #define CONFIG_TEGRA                   /* which is a Tegra generic machine */
 #define CONFIG_SYS_L2CACHE_OFF         /* No L2 cache */
 
-#define CONFIG_SYS_CACHELINE_SIZE      32
-
 #include <asm/arch/tegra.h>            /* get chip and board defs */
 
 /*
 #define CONFIG_CMD_GPIO
 #define CONFIG_CMD_ENTERRCM
 #define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
 
 /* Defines for SPL */
 #define CONFIG_SPL
index 44e98e501952bb26284b531323aee68c9621e9c3..c3de9a999e952e3f893a6ae9efa2538e53b79e3e 100644 (file)
@@ -18,6 +18,9 @@
 #define _TEGRA114_COMMON_H_
 #include "tegra-common.h"
 
+/* Cortex-A15 uses a cache line size of 64 bytes */
+#define CONFIG_SYS_CACHELINE_SIZE      64
+
 /*
  * NS16550 Configuration
  */
index d5e9ee4062e4fd7b1343e761c08cdbdb47186f80..b009a316b14cd29e4389e64dfef8cbfec111bf3c 100644 (file)
@@ -9,6 +9,9 @@
 #define _TEGRA20_COMMON_H_
 #include "tegra-common.h"
 
+/* Cortex-A9 uses a cache line size of 32 bytes */
+#define CONFIG_SYS_CACHELINE_SIZE      32
+
 /*
  * Errata configuration
  */
index 5ac88165041595a9edd7d13f70e1b2fb61684c90..99acbfd28b29de65dad657cbd556cd523322e2c2 100644 (file)
@@ -9,6 +9,9 @@
 #define _TEGRA30_COMMON_H_
 #include "tegra-common.h"
 
+/* Cortex-A9 uses a cache line size of 32 bytes */
+#define CONFIG_SYS_CACHELINE_SIZE      32
+
 /*
  * Errata configuration
  */
index dfc4c756db8c9e2f1647639f49e718785bf2acf5..2fc2c10676c84b9e116fb48eabfbb0350f190f38 100644 (file)
 #define CONFIG_CMD_MII
 #define CONFIG_DRIVER_TI_CPSW
 #define CONFIG_MII
-#define CONFIG_BOOTP_DEFAULT
 #define CONFIG_BOOTP_DNS
 #define CONFIG_BOOTP_DNS2
 #define CONFIG_BOOTP_SEND_HOSTNAME
index 9b6aac96e675f7c6a0c3f8939d3a4c4abe857f6d..24ea06b92734718ab831bfcba6fab99273e049d1 100644 (file)
 #define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
 #define CONFIG_SYS_I2C_SOFT_SPEED      50000
 #define CONFIG_SYS_I2C_SOFT_SLAVE      0xFE
+#define I2C_SOFT_DECLARATIONS2
+#define CONFIG_SYS_I2C_SOFT_SPEED_2     50000
+#define CONFIG_SYS_I2C_SOFT_SLAVE_2     0x7F
 #define CONFIG_SOFT_I2C_READ_REPEATED_START
 #define CONFIG_SYS_I2C_INIT_BOARD
 #define CONFIG_I2C_MULTI_BUS
index 79fa5bb53faec013a5146271c22c87c3d8adbf0a..b9f381f645ee9a1749ee9d983c1827cbf1b98053 100644 (file)
 # define CONFIG_CPU_V6 /* Required by CONFIG_ARM_DCC */
 #endif
 
+#define CONFIG_ZYNQ_SPI
+
+/* SPI */
+#ifdef CONFIG_ZYNQ_SPI
+# define CONFIG_SPI_FLASH
+# define CONFIG_SPI_FLASH_SST
+# define CONFIG_CMD_SF
+#endif
+
 /* Enable the PL to be downloaded */
 #define CONFIG_FPGA
 #define CONFIG_FPGA_XILINX
index 6c7d2271371ebfb4f8c2dd52dab8f904e769d920..47b90559d5bbe705fdba2fcc050d29d1481b6e49 100644 (file)
@@ -47,6 +47,8 @@ struct nand_internal_data {
 
        unsigned int dev;
        unsigned int part;
+       /* for nand/ubi use */
+       unsigned int ubi;
 };
 
 static inline unsigned int get_mmc_blk_size(int dev)
@@ -109,6 +111,8 @@ const char *dfu_get_dev_type(enum dfu_device_type t);
 const char *dfu_get_layout(enum dfu_layout l);
 struct dfu_entity *dfu_get_entity(int alt);
 char *dfu_extract_token(char** e, int *n);
+void dfu_trigger_reset(void);
+bool dfu_reset(void);
 
 int dfu_read(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
index 0ff8e89a1e345f8274f3c83da715f301ca1ce0a8..0c2432657be189546c20032204af0dd1ab0b83db 100644 (file)
 
 typedef struct
 {
-  unsigned long freqProcessor[CONFIG_MAX_CPUS];
-  unsigned long freqSystemBus;
-  unsigned long freqDDRBus;
-  unsigned long freqLocalBus;
-  unsigned long freqQE;
+       unsigned long freq_processor[CONFIG_MAX_CPUS];
+       unsigned long freq_systembus;
+       unsigned long freq_ddrbus;
+       unsigned long freq_localbus;
+       unsigned long freq_qe;
 #ifdef CONFIG_SYS_DPAA_FMAN
-  unsigned long freqFMan[CONFIG_SYS_NUM_FMAN];
+       unsigned long freq_fman[CONFIG_SYS_NUM_FMAN];
 #endif
 #ifdef CONFIG_SYS_DPAA_QBMAN
-  unsigned long freqQMAN;
+       unsigned long freq_qman;
 #endif
 #ifdef CONFIG_SYS_DPAA_PME
-  unsigned long freqPME;
+       unsigned long freq_pme;
 #endif
 } MPC85xx_SYS_INFO;
 
index f153091f64976525fbfbdb8ef9012490e37f1dae..480a773d0f64f49c9d7148f714fbcfc7b4bb7728 100644 (file)
@@ -54,7 +54,7 @@ struct edid_detailed_timing {
         (_x).vertical_blanking)
        unsigned char hsync_offset;
        unsigned char hsync_pulse_width;
-       unsigned char sync_offset_pulse_width;
+       unsigned char vsync_offset_pulse_width;
        unsigned char hsync_vsync_offset_pulse_width_hi;
 #define EDID_DETAILED_TIMING_HSYNC_OFFSET(_x) \
        ((GET_BITS((_x).hsync_vsync_offset_pulse_width_hi, 7, 6) << 8) + \
index 29f276d3f029320bbab74d64a08432b185ef5588..b8ecc41063b3e5b366f1688d60a32dd4f8e914fa 100644 (file)
@@ -2,27 +2,7 @@
  * Copyright (c) 1995, 1996, 2001, 2002
  * Erik Theisen.  All rights reserved.
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    BSD-3-Clause
  */
 
 /*
index 2c97398f4eafe84325be0727469266d70be52ecb..89bcbd1700ac7b62d4fcc06304177a176180aef3 100644 (file)
@@ -182,5 +182,6 @@ void fdt_fixup_esdhc(void *blob, bd_t *bd);
 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);
 
 #endif  /* __FSL_ESDHC_H__ */
diff --git a/include/fsl_usb.h b/include/fsl_usb.h
new file mode 100644 (file)
index 0000000..915774c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Freescale USB Controller
+ *
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_FSL_USB_H_
+#define _ASM_FSL_USB_H_
+
+#ifdef CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
+struct ccsr_usb_port_ctrl {
+       u32     ctrl;
+       u32     drvvbuscfg;
+       u32     pwrfltcfg;
+       u32     sts;
+       u8      res_14[0xc];
+       u32     bistcfg;
+       u32     biststs;
+       u32     abistcfg;
+       u32     abiststs;
+       u8      res_30[0x10];
+       u32     xcvrprg;
+       u32     anaprg;
+       u32     anadrv;
+       u32     anasts;
+};
+
+struct ccsr_usb_phy {
+       u32     id;
+       struct ccsr_usb_port_ctrl port1;
+       u8      res_50[0xc];
+       u32     tvr;
+       u32     pllprg[4];
+       u8      res_70[0x4];
+       u32     anaccfg;
+       u32     dbg;
+       u8      res_7c[0x4];
+       struct ccsr_usb_port_ctrl port2;
+       u8      res_dc[0x334];
+};
+
+#define CONFIG_SYS_FSL_USB_CTRL_PHY_EN (1 << 0)
+#define CONFIG_SYS_FSL_USB_DRVVBUS_CR_EN (1 << 1)
+#define CONFIG_SYS_FSL_USB_PWRFLT_CR_EN (1 << 1)
+#define CONFIG_SYS_FSL_USB_PLLPRG1_PHY_DIV (1 << 0)
+#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)
+#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)
+#define CONFIG_SYS_FSL_USB_SYS_CLK_VALID (1 << 0)
+#else
+struct ccsr_usb_phy {
+       u8      res0[0x18];
+       u32     usb_enable_override;
+       u8      res[0xe4];
+};
+#define        CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE      1
+#endif
+
+#endif /*_ASM_FSL_USB_H_ */
index 0a8268cbb581ec060a6ab7f5af578488d4129429..f50e0e2733764bb3fcd8dfb27031c28771c37a80 100644 (file)
@@ -19,6 +19,23 @@ enum {
 int get_fpga_state(unsigned dev);
 void print_fpga_state(unsigned dev);
 
+int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data);
+int fpga_get_reg(u32 fpga, u16 *reg, off_t regoff, u16 *data);
+
+extern struct ihs_fpga *fpga_ptr[];
+
+#define FPGA_SET_REG(ix, fld, val) \
+       fpga_set_reg((ix), \
+                    &fpga_ptr[ix]->fld, \
+                    offsetof(struct ihs_fpga, fld), \
+                    val)
+
+#define FPGA_GET_REG(ix, fld, val) \
+       fpga_get_reg((ix), \
+                    &fpga_ptr[ix]->fld, \
+                    offsetof(struct ihs_fpga, fld), \
+                    val)
+
 struct ihs_gpio {
        u16 read;
        u16 clear;
@@ -67,6 +84,19 @@ struct ihs_fpga {
 #endif
 
 #ifdef CONFIG_IO64
+
+struct ihs_fpga_channel {
+       u16 status_int;
+       u16 config_int;
+       u16 switch_connect_config;
+       u16 tx_destination;
+};
+
+struct ihs_fpga_hicb {
+       u16 status_int;
+       u16 config_int;
+};
+
 struct ihs_fpga {
        u16 reflection_low;     /* 0x0000 */
        u16 versions;           /* 0x0002 */
@@ -75,12 +105,9 @@ struct ihs_fpga {
        u16 reserved_0[5];      /* 0x0008 */
        u16 quad_serdes_reset;  /* 0x0012 */
        u16 reserved_1[502];    /* 0x0014 */
-       u16 ch0_status_int;     /* 0x0400 */
-       u16 ch0_config_int;     /* 0x0402 */
-       u16 reserved_2[126];    /* 0x0404 */
-       u16 ch0_hicb_status_int;/* 0x0500 */
-       u16 ch0_hicb_config_int;/* 0x0502 */
-       u16 reserved_3[7549];   /* 0x0504 */
+       struct ihs_fpga_channel ch[32];         /* 0x0400 */
+       struct ihs_fpga_channel hicb_ch[32];    /* 0x0500 */
+       u16 reserved_2[7487];   /* 0x0580 */
        u16 reflection_high;    /* 0x3ffe */
 };
 #endif
@@ -96,11 +123,22 @@ struct ihs_fpga {
        u16 mpc3w_control;      /* 0x001a */
        u16 reserved_1[19];     /* 0x001c */
        u16 videocontrol;       /* 0x0042 */
-       u16 reserved_2[93];     /* 0x0044 */
+       u16 reserved_2[14];     /* 0x0044 */
+       u16 mc_int;             /* 0x0060 */
+       u16 mc_int_en;          /* 0x0062 */
+       u16 mc_status;          /* 0x0064 */
+       u16 mc_control;         /* 0x0066 */
+       u16 mc_tx_data;         /* 0x0068 */
+       u16 mc_tx_address;      /* 0x006a */
+       u16 mc_tx_cmd;          /* 0x006c */
+       u16 mc_res;             /* 0x006e */
+       u16 mc_rx_cmd_status;   /* 0x0070 */
+       u16 mc_rx_data;         /* 0x0072 */
+       u16 reserved_3[69];     /* 0x0074 */
        u16 reflection_high;    /* 0x00fe */
        struct ihs_osd osd;     /* 0x0100 */
-       u16 reserved_3[889];    /* 0x010e */
-       u16 videomem;           /* 0x0800 */
+       u16 reserved_4[889];    /* 0x010e */
+       u16 videomem[31736];    /* 0x0800 */
 };
 #endif
 
@@ -121,7 +159,7 @@ struct ihs_fpga {
        u16 reserved_4[176];    /* 0x00a0 */
        struct ihs_osd osd;     /* 0x0200 */
        u16 reserved_5[761];    /* 0x020e */
-       u16 videomem;           /* 0x0800 */
+       u16 videomem[31736];    /* 0x0800 */
 };
 #endif
 
index d8674efe58b64a42daa31e00a7639982521c2890..8fd17d190af7cd532a445b77aaadceee00967bdd 100644 (file)
@@ -390,7 +390,7 @@ unsigned int i2c_get_bus_speed(void);
 # if !defined(CONFIG_SYS_MAX_I2C_BUS)
 #  define CONFIG_SYS_MAX_I2C_BUS               2
 # endif
-# define I2C_MULTI_BUS                         0
+# define I2C_MULTI_BUS                         1
 #else
 # define CONFIG_SYS_MAX_I2C_BUS                1
 # define I2C_MULTI_BUS                         0
index ca5040ed8d409f695154c4fb42ba8f75e230c8b5..657b49624a90a44057aaf7f446e23a501de59e23 100644 (file)
@@ -1,27 +1,8 @@
-/*----------------------------------------------------------------------------+
-|   This source code is dual-licensed.  You may use it under the terms of the
-|   GNU General Public License version 2, or under the license below.
-|
-|      This source code has been made available to you by IBM on an AS-IS
-|      basis.  Anyone receiving this source is licensed under IBM
-|      copyrights to use it in any way he or she deems fit, including
-|      copying it, modifying it, compiling it, and redistributing it either
-|      with or without modifications.  No license under IBM patents or
-|      patent applications is to be implied by the copyright license.
-|
-|      Any user of this software should understand that IBM cannot provide
-|      technical support for this software and will not be responsible for
-|      any consequences resulting from the use of this software.
-|
-|      Any person who transfers this source code or any derivative work
-|      must include the IBM copyright notice, this paragraph, and the
-|      preceding two paragraphs in the transferred software.
-|
-|      COPYRIGHT   I B M   CORPORATION 1999
-|      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
-|
-|   Additions (C) Copyright 2009 Industrie Dial Face S.p.A.
-+----------------------------------------------------------------------------*/
+/*
+ * SPDX-License-Identifier:    GPL-2.0 ibm-pibs
+ *
+ * Additions (C) Copyright 2009 Industrie Dial Face S.p.A.
+ */
 /*----------------------------------------------------------------------------+
 |
 |  File Name:  miiphy.h
index 31e83f2cc9213377fc55ae8473c96e9e0c40fd47..9fe47480325354270ec9b5cee7194b7d1025464d 100644 (file)
@@ -41,9 +41,9 @@
 #ifndef __ASSEMBLY__
 
 typedef struct {
-       unsigned long freqProcessor;
-       unsigned long freqSystemBus;
-       unsigned long freqLocalBus;
+       unsigned long freq_processor;
+       unsigned long freq_systembus;
+       unsigned long freq_localbus;
 } MPC86xx_SYS_INFO;
 
 #define l1icache_enable        icache_enable
index 5198ecd404abb517cb13a03d2e8b017b6ab9764e..048b4773fcad230d41ef8353d7f660bff6d9be38 100644 (file)
@@ -167,5 +167,19 @@ extern int cfi_flash_num_flash_banks;
 
 void flash_write_cmd(flash_info_t * info, flash_sect_t sect,
                     uint offset, u32 cmd);
+phys_addr_t cfi_flash_bank_addr(int i);
+unsigned long cfi_flash_bank_size(int i);
+void flash_cmd_reset(flash_info_t *info);
+
+#ifdef CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
+void flash_write8(u8 value, void *addr);
+void flash_write16(u16 value, void *addr);
+void flash_write32(u32 value, void *addr);
+void flash_write64(u64 value, void *addr);
+u8 flash_read8(void *addr);
+u16 flash_read16(void *addr);
+u32 flash_read32(void *addr);
+u64 flash_read64(void *addr);
+#endif
 
 #endif /* __CFI_FLASH_H__ */
index 7673470046f596263e170d0facbdffba74540299..5aedc17aa6dc36ea6600d2c24e3d011c9c140226 100644 (file)
@@ -357,7 +357,7 @@ struct icmp_hdr {
                } echo;
                ulong   gateway;
                struct {
-                       ushort  __unused;
+                       ushort  unused;
                        ushort  mtu;
                } frag;
                uchar data[0];
index 01002a430cdedda0858d6477f65f2ec28aa8b34f..911ba89ac36bfc690676af55475764c24c419e27 100644 (file)
 #define PCI_MAX_PCI_DEVICES    32
 #define PCI_MAX_PCI_FUNCTIONS  8
 
-#define PCI_DCR                0x54    /* PCIe Device Control Register */
-#define PCI_DSR                0x56    /* PCIe Device Status Register */
-#define PCI_LSR                0x5e    /* PCIe Link Status Register */
-#define PCI_LCR                0x5c    /* PCIe Link Control Register */
-#define PCI_LTSSM      0x404   /* PCIe Link Training, Status State Machine */
-#define  PCI_LTSSM_L0  0x16    /* L0 state */
-
 /* Include the ID list */
 
 #include <pci_ids.h>
index f6bb2b90a1ee196c4a353ab0708e1146c2c139a0..d232d470a337e842ed9f88173b9a810f3fc818ba 100644 (file)
@@ -26,7 +26,7 @@ extern struct serial_device serial_smc_device;
 extern struct serial_device serial_scc_device;
 extern struct serial_device *default_serial_console(void);
 
-#if    defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
+#if    defined(CONFIG_405GP) || \
        defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
        defined(CONFIG_405EX) || defined(CONFIG_440) || \
        defined(CONFIG_MB86R0x) || defined(CONFIG_MPC5xxx) || \
index d0b5593e5bd6e625172323d40729d01a93db6376..e6dc12ac3984b578be2601a09efd6c1bce5febe3 100644 (file)
@@ -83,9 +83,6 @@ struct list_head* stdio_get_list(void);
 struct stdio_dev* stdio_get_by_name(const char* name);
 struct stdio_dev* stdio_clone(struct stdio_dev *dev);
 
-#ifdef CONFIG_ARM_DCC
-int drv_arm_dcc_init(void);
-#endif
 #ifdef CONFIG_LCD
 int    drv_lcd_init (void);
 #endif
index c7696e6a3ef724c5782612575590c4f7af74dee4..c71516cf6daa01f56c6bbea77e7bbf221fd603a6 100644 (file)
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 
-/* Endpoint 0 states */
-#define EP0_IDLE               0
-#define EP0_IN_DATA            1
-#define EP0_OUT_DATA           2
-#define EP0_XFER_COMPLETE      3
+#include "../../drivers/usb/host/ehci.h"
 
+#define NUM_ENDPOINTS          6
 
 /* Endpoint parameters */
 #define MAX_ENDPOINTS          4
-#define EP_MAX_PACKET_SIZE     0x200
 
+#define EP_MAX_PACKET_SIZE     0x200
 #define EP0_MAX_PACKET_SIZE    64
-#define UDC_OUT_ENDPOINT        0x02
-#define UDC_OUT_PACKET_SIZE    EP_MAX_PACKET_SIZE
-#define UDC_IN_ENDPOINT         0x01
-#define UDC_IN_PACKET_SIZE      EP_MAX_PACKET_SIZE
-#define UDC_INT_ENDPOINT        0x05
-#define UDC_INT_PACKET_SIZE     EP_MAX_PACKET_SIZE
-#define UDC_BULK_PACKET_SIZE    EP_MAX_PACKET_SIZE
-
-#define        NUM_ENDPOINTS   6
-#define                REQ_COUNT       12
-struct mv_ep {
-       struct usb_ep ep;
-       struct usb_request req;
-       struct list_head queue;
-       const struct usb_endpoint_descriptor *desc;
-};
 
 struct mv_udc {
-       u32 pad0[80];
 #define MICRO_8FRAME   0x8
-#define USBCMD_ITC(x)  (((x > 0xff) ? 0xff : x) << 16)
+#define USBCMD_ITC(x)  ((((x) > 0xff) ? 0xff : x) << 16)
 #define USBCMD_FS2     (1 << 15)
 #define USBCMD_RST     (1 << 1)
 #define USBCMD_RUN     (1)
@@ -62,37 +42,52 @@ struct mv_udc {
        u32 epinitaddr;         /* 0x158 */
        u32 pad2[10];
 #define PTS_ENABLE     2
-#define PTS(x)         ((x & 0x3) << 30)
+#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))
+#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 */
-#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)
+#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 mv_ep {
+       struct usb_ep ep;
+       struct list_head queue;
+       const struct usb_endpoint_descriptor *desc;
+
+       struct usb_request req;
+       uint8_t *b_buf;
+       uint32_t b_len;
+       uint8_t b_fast[64] __aligned(ARCH_DMA_MINALIGN);
+};
+
 struct mv_drv {
        struct usb_gadget               gadget;
-       struct usb_gadget_driver                *driver;
-       struct mv_udc                   *udc;
+       struct usb_gadget_driver        *driver;
+       struct ehci_ctrl                *ctrl;
+       struct ept_queue_head           *epts;
+       struct ept_queue_item           *items[2 * NUM_ENDPOINTS];
+       uint8_t                         *items_mem;
+       struct mv_ep                    ep[NUM_ENDPOINTS];
 };
 
 struct ept_queue_head {
        unsigned config;
-       unsigned current; /* read-only */
+       unsigned current;       /* read-only */
 
        unsigned next;
        unsigned info;
@@ -111,9 +106,9 @@ struct ept_queue_head {
        unsigned reserved_4;
 };
 
-#define CONFIG_MAX_PKT(n)     ((n) << 16)
-#define CONFIG_ZLT            (1 << 29)    /* stop on zero-len xfer */
-#define CONFIG_IOS            (1 << 15)    /* IRQ on setup */
+#define CONFIG_MAX_PKT(n)      ((n) << 16)
+#define CONFIG_ZLT             (1 << 29)       /* stop on zero-len xfer */
+#define CONFIG_IOS             (1 << 15)       /* IRQ on setup */
 
 struct ept_queue_item {
        unsigned next;
@@ -127,12 +122,11 @@ struct ept_queue_item {
 };
 
 #define TERMINATE 1
-#define INFO_BYTES(n)         ((n) << 16)
-#define INFO_IOC              (1 << 15)
-#define INFO_ACTIVE           (1 << 7)
-#define INFO_HALTED           (1 << 6)
-#define INFO_BUFFER_ERROR     (1 << 5)
-#define INFO_TX_ERROR         (1 << 3)
-
-extern int usb_lowlevel_init(int index, void **controller);
+#define INFO_BYTES(n)          ((n) << 16)
+#define INFO_IOC               (1 << 15)
+#define INFO_ACTIVE            (1 << 7)
+#define INFO_HALTED            (1 << 6)
+#define INFO_BUFFER_ERROR      (1 << 5)
+#define INFO_TX_ERROR          (1 << 3)
+
 #endif /* __MV_UDC_H__ */
index 7ef95199976e2b7cc77f7a2dc1d4ecff92d0ac20..96b9edb0da170a0ebbdbb8bbccac13ad03fdfb23 100644 (file)
@@ -8,9 +8,10 @@
 #ifndef _VIDEO_FONT_
 #define _VIDEO_FONT_
 
-#define VIDEO_FONT_CHARS       256
-#define VIDEO_FONT_WIDTH       8
-#define VIDEO_FONT_HEIGHT      16
-#define VIDEO_FONT_SIZE                (VIDEO_FONT_CHARS * VIDEO_FONT_HEIGHT)
+#ifdef CONFIG_VIDEO_FONT_4X6
+#include <video_font_4x6.h>
+#else
+#include <video_font_data.h>
+#endif
 
 #endif /* _VIDEO_FONT_ */
diff --git a/include/video_font_4x6.h b/include/video_font_4x6.h
new file mode 100644 (file)
index 0000000..d1778d5
--- /dev/null
@@ -0,0 +1,2154 @@
+
+/* Hand composed "Minuscule" 4x6 font, with binary data generated using
+ * Perl stub.
+ *
+ * Use 'perl -x mini_4x6.c < mini_4x6.c > new_version.c' to regenerate
+ * binary data.
+ *
+ * Created by Kenneth Albanowski.
+ * No rights reserved, released to the public domain.
+ *
+ * Version 1.0
+ */
+
+/*
+
+#!/usr/bin/perl -pn
+
+s{((0x)?[0-9a-fA-F]+)(.*\[([\*\ ]{4})\])}{
+
+       ($num,$pat,$bits) = ($1,$3,$4);
+       
+       $bits =~ s/([^\s0])|(.)/ defined($1) + 0 /ge;
+       
+       $num = ord(pack("B8", $bits));
+       $num |= $num >> 4;
+       $num = sprintf("0x%.2x", $num);
+       
+       #print "$num,$pat,$bits\n";
+       
+       $num . $pat;
+}ge;
+
+__END__;
+*/
+
+/* Note: binary data consists of one byte for each row of each character top
+   to bottom, character 0 to character 255, six bytes per character. Each
+   byte contains the same four character bits in both nybbles.
+   MSBit to LSBit = left to right.
+ */
+
+#ifndef _VIDEO_FONT_DATA_
+#define _VIDEO_FONT_DATA_
+
+#define VIDEO_FONT_CHARS       256
+#define VIDEO_FONT_WIDTH       4
+#define VIDEO_FONT_HEIGHT      6
+#define VIDEO_FONT_SIZE                (VIDEO_FONT_CHARS * VIDEO_FONT_HEIGHT)
+
+static unsigned char video_fontdata[VIDEO_FONT_SIZE] = {
+
+       /*{*/
+               /*   Char 0: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 1: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 2: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 3: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 4: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 5: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 6: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 7: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 8: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 9: ' '  */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 10: '' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 11: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 12: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 13: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 14: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 15: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 16: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 17: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 18: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 19: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 20: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 21: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 22: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 23: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 24: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 25: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 26: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 27: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 28: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 29: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 30: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 31: ' ' */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 32: ' ' */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 33: '!' */
+       0x44,   /*=  [ *  ]       */
+       0x44,   /*=  [ *  ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 34: '"' */
+       0xaa,   /*=  [* * ]       */
+       0xaa,   /*=  [* * ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 35: '#' */
+       0xaa,   /*=  [* * ]       */
+       0xff,   /*=  [****]       */
+       0xff,   /*=  [****]       */
+       0xaa,   /*=  [* * ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 36: '$' */
+       0x44,   /*=  [ *  ]       */
+       0x66,   /*=  [ ** ]       */
+       0xee,   /*=  [*** ]       */
+       0xcc,   /*=  [**  ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 37: '%' */
+       0xaa,   /*=  [* * ]       */
+       0x22,   /*=  [  * ]       */
+       0x44,   /*=  [ *  ]       */
+       0x88,   /*=  [*   ]       */
+       0xaa,   /*=  [* * ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 38: '&' */
+       0x66,   /*=  [ ** ]       */
+       0x99,   /*=  [*  *]       */
+       0x66,   /*=  [ ** ]       */
+       0xaa,   /*=  [* * ]       */
+       0xdd,   /*=  [** *]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 39: ''' */
+       0x22,   /*=  [  * ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 40: '(' */
+       0x22,   /*=  [  * ]       */
+       0x44,   /*=  [ *  ]       */
+       0x44,   /*=  [ *  ]       */
+       0x44,   /*=  [ *  ]       */
+       0x22,   /*=  [  * ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 41: ')' */
+       0x44,   /*=  [ *  ]       */
+       0x22,   /*=  [  * ]       */
+       0x22,   /*=  [  * ]       */
+       0x22,   /*=  [  * ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 42: '*' */
+       0x00,   /*=  [    ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 43: '+' */
+       0x00,   /*=  [    ]       */
+       0x44,   /*=  [ *  ]       */
+       0xee,   /*=  [*** ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 44: ',' */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x44,   /*=  [ *  ]       */
+       0x88,   /*=  [*   ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 45: '-' */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0xee,   /*=  [*** ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 46: '.' */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       0x44,   /*=  [ *  ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 47: '/' */
+       0x00,   /*=  [    ]       */
+       0x22,   /*=  [  * ]       */
+       0x44,   /*=  [ *  ]       */
+       0x88,   /*=  [*   ]       */
+       0x00,   /*=  [    ]       */
+       0x00,   /*=  [    ]       */
+       /*}*/
+       /*{*/
+               /*   Char 48: '0'   */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/
+               /*   Char 49: '1'   */
+       0x44,   /*=   [ *  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/
+               /*   Char 50: '2'   */
+       0xcc,   /*=   [**  ]        */
+       0x22,   /*=   [  * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/
+               /*   Char 51: '3'   */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x22,   /*=   [  * ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 52: '4'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 53: '5'   */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 54: '6'   */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 55: '7'   */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 56: '8'   */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 57: '9'   */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 58: ':'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 59: ';'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       /*}*/
+       /*{*/   /*   Char 60: '<'   */
+       0x22,   /*=   [  * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x22,   /*=   [  * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 61: '='   */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 62: '>'   */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x22,   /*=   [  * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 63: '?'   */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 64: '@'   */
+       0x44,   /*=   [ *  ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 65: 'A'   */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 66: 'B'   */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 67: 'C'   */
+       0x66,   /*=   [ ** ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 68: 'D'   */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 69: 'E'   */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 70: 'F'   */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 71: 'G'   */
+       0x66,   /*=   [ ** ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 72: 'H'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 73: 'I'   */
+       0xee,   /*=   [*** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 74: 'J'   */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 75: 'K'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 76: 'L'   */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 77: 'M'   */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 78: 'N'   */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 79: 'O'   */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 80: 'P'   */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 81: 'Q'   */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 82: 'R'   */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 83: 'S'   */
+       0x66,   /*=   [ ** ]        */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x22,   /*=   [  * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 84: 'T'   */
+       0xee,   /*=   [*** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 85: 'U'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 86: 'V'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 87: 'W'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 88: 'X'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 89: 'Y'   */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 90: 'Z'   */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 91: '['   */
+       0x66,   /*=   [ ** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 92: '\'   */
+       0x00,   /*=   [    ]        */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x22,   /*=   [  * ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 93: ']'   */
+       0x66,   /*=   [ ** ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 94: '^'   */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 95: '_'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       /*}*/
+       /*{*/   /*   Char 96: '`'   */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 97: 'a'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 98: 'b'   */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 99: 'c'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0x88,   /*=   [*   ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 100: 'd'   */
+       0x22,   /*=   [  * ]        */
+       0x22,   /*=   [  * ]        */
+       0x66,   /*=   [ ** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 101: 'e'   */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x88,   /*=   [*   ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 102: 'f'   */
+       0x22,   /*=   [  * ]        */
+       0x44,   /*=   [ *  ]        */
+       0xee,   /*=   [*** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 103: 'g'   */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x66,   /*=   [ ** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 104: 'h'   */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 105: 'i'   */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 106: 'j'   */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 107: 'k'   */
+       0x00,   /*=   [    ]        */
+       0x88,   /*=   [*   ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 108: 'l'   */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 109: 'm'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 110: 'n'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 111: 'o'   */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 112: 'p'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x88,   /*=   [*   ]        */
+       /*}*/
+       /*{*/   /*   Char 113: 'q'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0xaa,   /*=   [* * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x22,   /*=   [  * ]        */
+       /*}*/
+       /*{*/   /*   Char 114: 'r'   */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0xaa,   /*=   [* * ]        */
+       0x88,   /*=   [*   ]        */
+       0x88,   /*=   [*   ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 115: 's'   */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0xcc,   /*=   [**  ]        */
+       0x22,   /*=   [  * ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 116: 't'   */
+       0x00,   /*=   [    ]        */
+       0x44,   /*=   [ *  ]        */
+       0xee,   /*=   [*** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 117: 'u'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 118: 'v'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 119: 'w'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 120: 'x'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xaa,   /*=   [* * ]        */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 121: 'y'   */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x22,   /*=   [  * ]        */
+       0xcc,   /*=   [**  ]        */
+       /*}*/
+       /*{*/   /*   Char 122: 'z' */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xcc,   /*=   [**  ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 123: '{' */
+       0x22,   /*=   [  * ]        */
+       0x44,   /*=   [ *  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x22,   /*=   [  * ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 124: '|' */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 125: '}' */
+       0x88,   /*=   [*   ]        */
+       0x44,   /*=   [ *  ]        */
+       0x66,   /*=   [ ** ]        */
+       0x44,   /*=   [ *  ]        */
+       0x88,   /*=   [*   ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 126: '~' */
+       0x55,   /*=   [ * *]        */
+       0xaa,   /*=   [* * ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 127: '\7f' */
+       0x44,   /*=   [ *  ]        */
+       0xaa,   /*=   [* * ]        */
+       0xaa,   /*=   [* * ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 128:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 129:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 130:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 131:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 132:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 133:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 134:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 135:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 136:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 137:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 138:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 139:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 140:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 141:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 142:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 143:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 144:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 145:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 146:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 147:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 148:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 149:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 150:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 151:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 152:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 153:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 154:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 155:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 156:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 157:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 158:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 159:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 160:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 161:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 162:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 163:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 164:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 165:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 166:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 167:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 168:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 169:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 170:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 171:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 172:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 173:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 174:  */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0xcc,   /*=   [**  ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 175:  */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0x66,   /*=   [ ** ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 176:  */
+       0x88,   /*=   [*   ]        */
+       0x22,   /*=   [  * ]        */
+       0x88,   /*=   [*   ]        */
+       0x22,   /*=   [  * ]        */
+       0x88,   /*=   [*   ]        */
+       0x22,   /*=   [  * ]        */
+       /*}*/
+       /*{*/   /*   Char 177:  */
+       0xaa,   /*=   [* * ]        */
+       0x55,   /*=   [ * *]        */
+       0xaa,   /*=   [* * ]        */
+       0x55,   /*=   [ * *]        */
+       0xaa,   /*=   [* * ]        */
+       0x55,   /*=   [ * *]        */
+       /*}*/
+       /*{*/   /*   Char 178:  */
+       0xdd,   /*=   [** *]        */
+       0xbb,   /*=   [* **]        */
+       0xdd,   /*=   [** *]        */
+       0xbb,   /*=   [* **]        */
+       0xdd,   /*=   [** *]        */
+       0xbb,   /*=   [* **]        */
+       /*}*/
+       /*{*/   /*   Char 179:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 180:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 181:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 182:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xee,   /*=   [*** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 183:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 184:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 185:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 186:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 187:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 188:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 189:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 190:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 191:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xcc,   /*=   [**  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 192:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x77,   /*=   [ ***]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 193:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 194:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 195:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x77,   /*=   [ ***]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 196:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 197:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xff,   /*=   [****]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 198:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x77,   /*=   [ ***]        */
+       0x77,   /*=   [ ***]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 199:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x77,   /*=   [ ***]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 200:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x77,   /*=   [ ***]        */
+       0x77,   /*=   [ ***]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 201:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x77,   /*=   [ ***]        */
+       0x77,   /*=   [ ***]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 202:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 203:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 204:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x77,   /*=   [ ***]        */
+       0x77,   /*=   [ ***]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 205:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 206:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 207:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 208:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 209:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 210:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 211:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x77,   /*=   [ ***]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 212:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x77,   /*=   [ ***]        */
+       0x77,   /*=   [ ***]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 213:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x77,   /*=   [ ***]        */
+       0x77,   /*=   [ ***]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 214:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x77,   /*=   [ ***]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 215:  */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0xff,   /*=   [****]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       /*}*/
+       /*{*/   /*   Char 216:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 217:  */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0xcc,   /*=   [**  ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 218:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x77,   /*=   [ ***]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       0x44,   /*=   [ *  ]        */
+       /*}*/
+       /*{*/   /*   Char 219:  */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       /*}*/
+       /*{*/   /*   Char 220:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       /*}*/
+       /*{*/   /*   Char 221:  */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       0xcc,   /*=   [**  ]        */
+       /*}*/
+       /*{*/   /*   Char 222:  */
+       0x33,   /*=   [  **]        */
+       0x33,   /*=   [  **]        */
+       0x33,   /*=   [  **]        */
+       0x33,   /*=   [  **]        */
+       0x33,   /*=   [  **]        */
+       0x33,   /*=   [  **]        */
+       /*}*/
+       /*{*/   /*   Char 223:  */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0xff,   /*=   [****]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 224:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 225:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 226:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 227:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 228:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 229:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 230:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 231:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 232:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 233:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 234:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 235:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 236:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 237:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 238:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 239:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 240:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 241:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 242:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 243:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 244:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 245:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 246:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 247:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 248:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 249:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 250:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 251:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 252:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 253:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 254:  */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       0x66,   /*=   [ ** ]        */
+       0x66,   /*=   [ ** ]        */
+       0x00,   /*=   [    ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+       /*{*/   /*   Char 255:  */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0xee,   /*=   [*** ]        */
+       0x00,   /*=   [    ]        */
+       /*}*/
+};
+
+#endif
index 4e544f0d7f74a3107feefd535467ce934fbf49bb..346a162f56fe7ef759d8ee5c29614fa70151f931 100644 (file)
@@ -8,7 +8,12 @@
 #ifndef _VIDEO_FONT_DATA_
 #define _VIDEO_FONT_DATA_
 
-static unsigned char video_fontdata[VIDEO_FONT_SIZE] = {
+#define VIDEO_FONT_CHARS       256
+#define VIDEO_FONT_WIDTH       8
+#define VIDEO_FONT_HEIGHT      16
+#define VIDEO_FONT_SIZE                (VIDEO_FONT_CHARS * VIDEO_FONT_HEIGHT)
+
+static unsigned char __maybe_unused video_fontdata[VIDEO_FONT_SIZE] = {
 
        /* 0 0x00 '^@' */
        0x00, /* 00000000 */
index f8211cdba29e7a31b9e6b0e83f44101fc49278fd..6107cbf3a5a9c98c44951b013adee0cab949e3d8 100644 (file)
@@ -20,12 +20,14 @@ extern int zynq_info(Xilinx_desc *desc);
 #define XILINX_ZYNQ_7020       0x7
 #define XILINX_ZYNQ_7030       0xc
 #define XILINX_ZYNQ_7045       0x11
+#define XILINX_ZYNQ_7100       0x16
 
 /* Device Image Sizes */
 #define XILINX_XC7Z010_SIZE    16669920/8
 #define XILINX_XC7Z020_SIZE    32364512/8
 #define XILINX_XC7Z030_SIZE    47839328/8
 #define XILINX_XC7Z045_SIZE    106571232/8
+#define XILINX_XC7Z100_SIZE    139330784/8
 
 /* Descriptor Macros */
 #define XILINX_XC7Z010_DESC(cookie) \
@@ -40,4 +42,7 @@ extern int zynq_info(Xilinx_desc *desc);
 #define XILINX_XC7Z045_DESC(cookie) \
 { xilinx_zynq, devcfg, XILINX_XC7Z045_SIZE, NULL, cookie, "7z045" }
 
+#define XILINX_XC7Z100_DESC(cookie) \
+{ xilinx_zynq, devcfg, XILINX_XC7Z100_SIZE, NULL, cookie, "7z100" }
+
 #endif /* _ZYNQPL_H_ */
index 154e9a4461794dc9ec7271e1b61cda38703626b9..e146aba6eb7cdb182191954c67a4e3ec99ce8a42 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index f72d13b1d19c0bce7a27658e18a5f9fe26b2453c..ac6c1fb04ffbaa3ecf877d68faa5b9b1d5399b9b 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2012 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index b65f4e23ad7b019e37993282090b1a99aab36770..f2154e8370272eeac529644e80a19923902a7265 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index aba60948416e1cd7a802770f94627089d685446e..6fa4f13073d28fd76c886b1154e254ca1c6e1fd0 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index 9b00c3a6e83c085d2ad3372659bab62b2d2b85a5..2f3cc243dba14d7faab3ba567984863a635b765e 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index f422754de9d28df97b99db3506e6b2135dfb4921..580b57024ffc96843d718ed3ea7dd962acd52327 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index b9e3c4a742119fcea67cc4e60572d4da0b5b9957..3f2dfa573b65086e121597a6bb5d438dfcfad4dd 100644 (file)
@@ -1,52 +1,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include "libfdt_env.h"
 
index 381133ba81df7d02c375d7a1462d650136abd6d1..13cbc9af2ab9259ea1cb76c37cb489be6907ab57 100644 (file)
@@ -3,52 +3,7 @@
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * libfdt is dual licensed: you can use it either under the terms of
- * the GPL, or the BSD license, at your option.
- *
- *  a) This library 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 library 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 library; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Alternatively,
- *
- *  b) Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *     1. Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *     2. Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPDX-License-Identifier:    GPL-2.0+ BSD-2-Clause
  */
 #include <fdt.h>
 
index 7663b9cd6c92541b657fb3eebcbd72ba98b9a6df..f7cc29f03956a6b1b56ccc27e479f351d86cf570 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -207,6 +207,8 @@ static int net_check_prereq(enum proto_t protocol);
 
 static int NetTryCount;
 
+int __maybe_unused net_busy_flag;
+
 /**********************************************************************/
 
 static int on_bootfile(const char *name, const char *value, enum env_op op,
@@ -342,6 +344,9 @@ int NetLoop(enum proto_t protocol)
                eth_init_state_only(bd);
 
 restart:
+#ifdef CONFIG_USB_KEYBOARD
+       net_busy_flag = 0;
+#endif
        net_set_state(NETLOOP_CONTINUE);
 
        /*
@@ -454,6 +459,9 @@ restart:
                status_led_set(STATUS_LED_RED, STATUS_LED_ON);
 #endif /* CONFIG_SYS_FAULT_ECHO_LINK_DOWN, ... */
 #endif /* CONFIG_MII, ... */
+#ifdef CONFIG_USB_KEYBOARD
+       net_busy_flag = 1;
+#endif
 
        /*
         *      Main packet reception loop.  Loop receiving packets until
@@ -559,6 +567,9 @@ restart:
        }
 
 done:
+#ifdef CONFIG_USB_KEYBOARD
+       net_busy_flag = 0;
+#endif
 #ifdef CONFIG_CMD_TFTPPUT
        /* Clear out the handlers */
        net_set_udp_handler(NULL);
index 28ebc96060f8b6b6709b4b55b16a1b641c79b887..339e5e897115815162ba999790f168a3a58ea80f 100644 (file)
 CONFIG_SPL_BUILD := y
 export CONFIG_SPL_BUILD
 
+ifeq ($(CONFIG_TPL_BUILD),y)
+export CONFIG_TPL_BUILD
+SPL_BIN := u-boot-tpl
+else
+SPL_BIN := u-boot-spl
+endif
+
 include $(TOPDIR)/config.mk
 
 # We want the final binaries in this directory
+ifeq ($(CONFIG_TPL_BUILD),y)
+obj := $(OBJTREE)/tpl/
+SPLTREE := $(TPLTREE)
+else
 obj := $(OBJTREE)/spl/
+endif
 
 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(SRCTREE)/board/$(VENDOR)/common/Makefile),y,n)
 
@@ -50,6 +62,9 @@ LIBS-y += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
 endif
 ifeq ($(CPU),mpc85xx)
 LIBS-y += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
+ifdef CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT
+LIBS-y += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
+endif
 endif
 ifeq ($(CPU),mpc86xx)
 LIBS-y += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
@@ -80,6 +95,7 @@ LIBS-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/memory.o
 LIBS-$(CONFIG_SPL_NET_SUPPORT) += net/libnet.o
 LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/libnet.o
 LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/phy/libphy.o
+LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/net/phy/libphy.o
 LIBS-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += drivers/usb/musb-new/libusb_musb-new.o
 LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/libusb_gadget.o
 
@@ -157,7 +173,7 @@ $(OBJTREE)/MLO.byteswap: $(obj)u-boot-spl.bin
 $(OBJTREE)/SPL : $(obj)u-boot-spl.bin depend
                $(MAKE) -C $(SRCTREE)/arch/arm/imx-common $@
 
-ALL-y  += $(obj)u-boot-spl.bin
+ALL-y  += $(obj)$(SPL_BIN).bin
 
 ifdef CONFIG_SAMSUNG
 ALL-y  += $(obj)$(BOARD)-spl.bin
@@ -171,15 +187,15 @@ $(obj)$(BOARD)-spl.bin: $(obj)u-boot-spl.bin
                $(obj)u-boot-spl.bin $(obj)$(BOARD)-spl.bin
 endif
 
-$(obj)u-boot-spl.bin:  $(obj)u-boot-spl
+$(obj)$(SPL_BIN).bin:  $(obj)$(SPL_BIN)
        $(OBJCOPY) $(OBJCFLAGS) -O binary $< $@
 
 GEN_UBOOT = \
        cd $(obj) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $(__START) \
                --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
-               -Map u-boot-spl.map -o u-boot-spl
+               -Map $(SPL_BIN).map -o $(SPL_BIN)
 
-$(obj)u-boot-spl:      depend $(START) $(LIBS) $(obj)u-boot-spl.lds
+$(obj)$(SPL_BIN):      depend $(START) $(LIBS) $(obj)u-boot-spl.lds
        $(GEN_UBOOT)
 
 $(START):      depend
index 33fad6badba1f28cf1aef647ade7de8274d91ce3..6d456564a11d73673662ea148a9c110d246414d3 100644 (file)
@@ -154,6 +154,7 @@ NOPEDOBJS := $(addprefix $(obj),$(NOPED_OBJ_FILES-y))
 #
 # Use native tools and options
 # Define __KERNEL_STRICT_NAMES to prevent typedef overlaps
+# Define _GNU_SOURCE to obtain the getline prototype from stdio.h
 #
 HOSTCPPFLAGS = -include $(SRCTREE)/include/libfdt_env.h \
                -idirafter $(SRCTREE)/include \
@@ -163,7 +164,8 @@ HOSTCPPFLAGS =      -include $(SRCTREE)/include/libfdt_env.h \
                -I $(SRCTREE)/tools \
                -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) \
                -DUSE_HOSTCC \
-               -D__KERNEL_STRICT_NAMES
+               -D__KERNEL_STRICT_NAMES \
+               -D_GNU_SOURCE
 
 
 all:   $(obj).depend $(BINS) $(LOGO-y) subdirs
index cd89145867d5b17351b27112017ef7d83a7b80d7..980bf2e1a7b9c700389df00a57525c8cf78cf63c 100644 (file)
@@ -5,9 +5,6 @@
  * SPDX-License-Identifier:    GPL-2.0+ 
  */
 
-/* Required to obtain the getline prototype from stdio.h */
-#define _GNU_SOURCE
-
 #include "mkimage.h"
 #include "aisimage.h"
 #include <image.h>
index b2ad3d592768747ae0eed5bda884272a58bc47b7..2247adcc82ec1ebad5070eab61fb559991a731c3 100644 (file)
@@ -179,7 +179,7 @@ int main (int argc, char *argv[])
        printf("unsigned char bmp_logo_bitmap[] = {\n");
        for (i=(b->height-1)*b->width; i>=0; i-=b->width) {
                for (x = 0; x < b->width; x++) {
-                       b->data[(uint16_t) i + x] = (uint8_t) fgetc (fp) \
+                       b->data[i + x] = (uint8_t) fgetc(fp)
                                                + DEFAULT_CMAP_SIZE;
                }
        }
diff --git a/tools/dtc-version.sh b/tools/dtc-version.sh
new file mode 100755 (executable)
index 0000000..e8c94d3
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# dtc-version dtc-command
+#
+# Prints the dtc version of `dtc-command' in a canonical 4-digit form
+# such as `0222' for binutils 2.22
+#
+
+dtc="$*"
+
+if [ ${#dtc} -eq 0 ]; then
+       echo "Error: No dtc command specified."
+       printf "Usage:\n\t$0 <dtc-command>\n"
+       exit 1
+fi
+
+MAJOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 1)
+MINOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 2)
+
+printf "%02d%02d\\n" $MAJOR $MINOR
index c8a9ad578bc932cd8491c77390062921ace60481..cab208b5ac889f5e5235e1ca79dc5c9c2c82f205 100644 (file)
@@ -9,9 +9,6 @@
  * SPDX-License-Identifier:    GPL-2.0+ 
  */
 
-/* Required to obtain the getline prototype from stdio.h */
-#define _GNU_SOURCE
-
 #include "mkimage.h"
 #include <image.h>
 #include "imximage.h"
index d08e49892d59e028b8080ef0bea361b0dc31ba06..1df6b2051e83738644dd9f9d8ff7eb84476bccbd 100644 (file)
@@ -6,9 +6,6 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-/* Required to obtain the getline prototype from stdio.h */
-#define _GNU_SOURCE
-
 #include "mkimage.h"
 #include <image.h>
 #include "kwbimage.h"
index f685ff2e30c72617e699f428cfd806a8c9226d98..bbd3041e36f4e5a2ac909fbe101ecfdd91b6345b 100644 (file)
@@ -9,9 +9,6 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-/* We want the GNU version of basename() */
-#define _GNU_SOURCE
-
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
index d4d77d8858ea9d609590a0cf8c1a566eb5b0b328..00853dd7413bdc68d5c1d80623dd48931b646449 100644 (file)
@@ -14,9 +14,6 @@
  * SPDX-License-Identifier:    GPL-2.0+ 
  */
 
-/* Required to obtain the getline prototype from stdio.h */
-#define _GNU_SOURCE
-
 #include "mkimage.h"
 #include <image.h>
 #include "omapimage.h"
index 4542a9c10f52a0670555c2282754cc06460fc280..bac5faff9883acb727502f890f3ab8d6b0902f45 100644 (file)
@@ -3,8 +3,6 @@
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
-#define _GNU_SOURCE
-
 #include "mkimage.h"
 #include <image.h>
 #include "pblimage.h"
index 6495db6d6a8bf8488ae56e7740eaa30ed6bd38de..b4ef7f080ea3d70a6a486055f59bd1f9b2d2a143 100644 (file)
@@ -13,9 +13,6 @@
  * SPDX-License-Identifier:    GPL-2.0+ 
  */
 
-/* Required to obtain the getline prototype from stdio.h */
-#define _GNU_SOURCE
-
 #include "mkimage.h"
 #include <image.h>
 #include "ublimage.h"