]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master'
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>
Mon, 2 Jun 2014 06:43:48 +0000 (08:43 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Mon, 2 Jun 2014 06:43:48 +0000 (08:43 +0200)
496 files changed:
.gitignore
Makefile
README
arch/arc/include/asm/config.h
arch/arm/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
arch/arm/cpu/armv7/Makefile
arch/arm/cpu/armv7/am33xx/Makefile
arch/arm/cpu/armv7/am33xx/mem.c [deleted file]
arch/arm/cpu/armv7/am33xx/sys_info.c
arch/arm/cpu/armv7/at91/config.mk [new file with mode: 0644]
arch/arm/cpu/armv7/omap-common/Makefile
arch/arm/cpu/armv7/omap-common/emif-common.c
arch/arm/cpu/armv7/omap-common/hwinit-common.c
arch/arm/cpu/armv7/omap-common/mem-common.c
arch/arm/cpu/armv7/omap3/Makefile
arch/arm/cpu/armv7/omap5/hw_data.c
arch/arm/cpu/armv7/omap5/hwinit.c
arch/arm/cpu/armv7/omap5/prcm-regs.c
arch/arm/cpu/armv7/omap5/sdram.c
arch/arm/cpu/armv7/rmobile/Makefile
arch/arm/cpu/armv7/rmobile/cpu_info-r8a7791.c [deleted file]
arch/arm/cpu/armv7/rmobile/cpu_info-rcar.c [moved from arch/arm/cpu/armv7/rmobile/cpu_info-r8a7790.c with 50% similarity]
arch/arm/cpu/armv7/rmobile/cpu_info.c
arch/arm/cpu/armv7/rmobile/lowlevel_init_ca15.S
arch/arm/cpu/armv7/rmobile/pfc-r8a7791.c
arch/arm/cpu/armv7/sunxi/Makefile [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/board.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/clock.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/clock_sun4i.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/config.mk [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/cpu_info.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/dram.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/pinmux.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/start.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/timer.c [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds [new file with mode: 0644]
arch/arm/cpu/armv7/sunxi/u-boot-spl.lds [new file with mode: 0644]
arch/arm/cpu/armv7/zynq/cpu.c
arch/arm/cpu/armv7/zynq/ddrc.c
arch/arm/cpu/armv7/zynq/slcr.c
arch/arm/cpu/armv7/zynq/spl.c
arch/arm/cpu/armv8/start.S
arch/arm/cpu/at91-common/spl.c
arch/arm/dts/imx6q-sabreauto.dts
arch/arm/dts/zynq-7000.dtsi
arch/arm/dts/zynq-microzed.dts
arch/arm/dts/zynq-zc702.dts
arch/arm/dts/zynq-zc706.dts
arch/arm/dts/zynq-zc770-xm010.dts
arch/arm/dts/zynq-zc770-xm012.dts
arch/arm/dts/zynq-zc770-xm013.dts
arch/arm/dts/zynq-zed.dts
arch/arm/imx-common/Makefile
arch/arm/imx-common/iomux-v3.c
arch/arm/imx-common/video.c [new file with mode: 0644]
arch/arm/include/asm/arch-am33xx/clock.h
arch/arm/include/asm/arch-am33xx/sys_proto.h
arch/arm/include/asm/arch-at91/at91_pmc.h
arch/arm/include/asm/arch-at91/at91sam9x5.h
arch/arm/include/asm/arch-at91/hardware.h
arch/arm/include/asm/arch-mx25/imx-regs.h
arch/arm/include/asm/arch-mx6/mx6sl_pins.h
arch/arm/include/asm/arch-omap3/mem.h
arch/arm/include/asm/arch-omap4/cpu.h
arch/arm/include/asm/arch-omap4/hardware.h [new file with mode: 0644]
arch/arm/include/asm/arch-omap4/mem.h [new file with mode: 0644]
arch/arm/include/asm/arch-omap4/omap.h
arch/arm/include/asm/arch-omap4/sys_proto.h
arch/arm/include/asm/arch-omap5/clock.h
arch/arm/include/asm/arch-omap5/cpu.h
arch/arm/include/asm/arch-omap5/hardware.h [new file with mode: 0644]
arch/arm/include/asm/arch-omap5/mem.h [new file with mode: 0644]
arch/arm/include/asm/arch-omap5/omap.h
arch/arm/include/asm/arch-omap5/sys_proto.h
arch/arm/include/asm/arch-rmobile/r8a7790-gpio.h
arch/arm/include/asm/arch-rmobile/r8a7790.h
arch/arm/include/asm/arch-rmobile/r8a7791-gpio.h
arch/arm/include/asm/arch-rmobile/r8a7791.h
arch/arm/include/asm/arch-rmobile/rcar-base.h [new file with mode: 0644]
arch/arm/include/asm/arch-rmobile/rmobile.h
arch/arm/include/asm/arch-sunxi/clock.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/clock_sun4i.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/cpu.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/dram.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/mmc.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/spl.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/sys_proto.h [new file with mode: 0644]
arch/arm/include/asm/arch-sunxi/timer.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra/usb.h
arch/arm/include/asm/arch-vf610/imx-regs.h
arch/arm/include/asm/arch-zynq/hardware.h
arch/arm/include/asm/arch-zynq/sys_proto.h
arch/arm/include/asm/config.h
arch/arm/include/asm/imx-common/iomux-v3.h
arch/arm/include/asm/imx-common/video.h [new file with mode: 0644]
arch/arm/include/asm/omap_common.h
arch/arm/include/asm/ti-common/sys_proto.h [new file with mode: 0644]
arch/arm/include/asm/u-boot.h
arch/arm/lib/board.c
arch/avr32/include/asm/u-boot.h
arch/avr32/lib/board.c
arch/blackfin/include/asm/net.h [deleted file]
arch/blackfin/include/asm/u-boot.h
arch/blackfin/lib/board.c
arch/m68k/include/asm/u-boot.h
arch/m68k/lib/board.c
arch/microblaze/include/asm/u-boot.h
arch/microblaze/lib/board.c
arch/mips/include/asm/config.h
arch/mips/include/asm/u-boot.h
arch/mips/lib/board.c
arch/nds32/include/asm/u-boot.h
arch/nds32/lib/board.c
arch/nios2/include/asm/u-boot.h
arch/nios2/lib/board.c
arch/openrisc/include/asm/u-boot.h
arch/openrisc/lib/board.c
arch/powerpc/cpu/mpc85xx/Makefile
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/cpu/mpc85xx/cpu.c
arch/powerpc/cpu/mpc85xx/cpu_init.c
arch/powerpc/cpu/mpc85xx/cpu_init_early.c
arch/powerpc/cpu/mpc85xx/fdt.c
arch/powerpc/cpu/mpc85xx/speed.c
arch/powerpc/cpu/mpc85xx/spl_minimal.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/u-boot-nand.lds
arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
arch/powerpc/cpu/mpc85xx/u-boot.lds
arch/powerpc/cpu/mpc86xx/start.S
arch/powerpc/cpu/mpc8xxx/cpu.c
arch/powerpc/include/asm/config_mpc85xx.h
arch/powerpc/include/asm/fsl_errata.h
arch/powerpc/include/asm/fsl_secure_boot.h
arch/powerpc/include/asm/immap_85xx.h
arch/powerpc/include/asm/processor.h
arch/powerpc/include/asm/u-boot.h
arch/powerpc/lib/board.c
arch/sandbox/config.mk
arch/sandbox/dts/.gitignore [new file with mode: 0644]
arch/sandbox/include/asm/config.h
arch/sh/include/asm/u-boot.h
arch/sh/lib/board.c
arch/sparc/cpu/leon2/cpu_init.c
arch/sparc/cpu/leon3/cpu_init.c
arch/sparc/include/asm/u-boot.h
arch/sparc/lib/board.c
board/BuR/common/common.c
board/amcc/acadia/acadia.c
board/amcc/acadia/u-boot-nand.lds [deleted file]
board/amcc/bamboo/u-boot-nand.lds [deleted file]
board/amcc/canyonlands/u-boot-nand.lds [deleted file]
board/amcc/kilauea/u-boot-nand.lds [deleted file]
board/amcc/sequoia/u-boot-nand.lds [deleted file]
board/armadeus/apf27/fpga.c
board/astro/mcf5373l/fpga.c
board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
board/atmel/sama5d3_xplained/sama5d3_xplained.c
board/balloon3/balloon3.c
board/bct-brettl2/bct-brettl2.c
board/bf518f-ezbrd/bf518f-ezbrd.c
board/bf526-ezbrd/bf526-ezbrd.c
board/bf527-ezkit/bf527-ezkit.c
board/bf537-minotaur/bf537-minotaur.c
board/bf537-pnav/bf537-pnav.c
board/bf537-srv1/bf537-srv1.c
board/bf537-stamp/bf537-stamp.c
board/boundary/nitrogen6x/nitrogen6x.c
board/buffalo/lsxl/lsxl.c
board/cm-bf527/cm-bf527.c
board/cm-bf537e/cm-bf537e.c
board/cm-bf537u/cm-bf537u.c
board/compulab/cm_t54/Makefile [new file with mode: 0644]
board/compulab/cm_t54/cm_t54.c [new file with mode: 0644]
board/compulab/cm_t54/mux.c [new file with mode: 0644]
board/compulab/cm_t54/spl.c [new file with mode: 0644]
board/compulab/common/Makefile
board/compulab/common/eeprom.c
board/compulab/common/eeprom.h
board/dave/PPChameleonEVB/u-boot.lds
board/dnp5370/dnp5370.c
board/embest/mx6boards/Makefile [new file with mode: 0644]
board/embest/mx6boards/mx6boards.c [new file with mode: 0644]
board/esd/pmc440/fpga.c
board/esd/pmc440/u-boot-nand.lds [deleted file]
board/freescale/b4860qds/b4860qds.c
board/freescale/common/Makefile
board/freescale/common/sys_eeprom.c
board/freescale/common/zm7300.c [new file with mode: 0644]
board/freescale/common/zm7300.h [new file with mode: 0644]
board/freescale/mx6sabresd/mx6sabresd.c
board/freescale/mx6slevk/mx6slevk.c
board/freescale/p1_p2_rdb/Makefile
board/freescale/p1_p2_rdb/ddr.c
board/freescale/p1_p2_rdb/spl.c [new file with mode: 0644]
board/freescale/p1_p2_rdb/spl_minimal.c [new file with mode: 0644]
board/freescale/p1_p2_rdb/tlb.c
board/freescale/qemu-ppce500/qemu-ppce500.c
board/freescale/t104xrdb/t104xrdb.c
board/freescale/t4rdb/Makefile [new file with mode: 0644]
board/freescale/t4rdb/ddr.c [new file with mode: 0644]
board/freescale/t4rdb/ddr.h [new file with mode: 0644]
board/freescale/t4rdb/eth.c [new file with mode: 0644]
board/freescale/t4rdb/law.c [new file with mode: 0644]
board/freescale/t4rdb/pci.c [new file with mode: 0644]
board/freescale/t4rdb/t4240rdb.c [new file with mode: 0644]
board/freescale/t4rdb/t4_pbi.cfg [new file with mode: 0644]
board/freescale/t4rdb/t4_rcw.cfg [new file with mode: 0644]
board/freescale/t4rdb/t4rdb.h [new file with mode: 0644]
board/freescale/t4rdb/tlb.c [new file with mode: 0644]
board/freescale/vf610twr/vf610twr.c
board/gateworks/gw_ventana/gw_ventana.c
board/gateworks/gw_ventana/ventana_eeprom.h
board/gen860t/fpga.c
board/gumstix/duovero/Makefile [new file with mode: 0644]
board/gumstix/duovero/duovero.c [new file with mode: 0644]
board/gumstix/duovero/duovero_mux_data.h [new file with mode: 0644]
board/gumstix/pepper/Makefile [new file with mode: 0644]
board/gumstix/pepper/board.c [new file with mode: 0644]
board/gumstix/pepper/board.h [new file with mode: 0644]
board/gumstix/pepper/mux.c [new file with mode: 0644]
board/ip04/ip04.c
board/keymile/kmp204x/kmp204x.c
board/keymile/kmp204x/kmp204x.h
board/keymile/kmp204x/pbi.cfg
board/keymile/kmp204x/pci.c
board/keymile/kmp204x/qrio.c
board/keymile/kmp204x/rcw_kmp204x.cfg
board/matrix_vision/common/mv_common.c
board/matrix_vision/mvsmr/fpga.c
board/muas3001/muas3001.c
board/mvblue/mvblue.c
board/overo/overo.c
board/overo/overo.h
board/renesas/koelsch/koelsch.c
board/renesas/koelsch/qos.c
board/renesas/lager/lager.c
board/renesas/lager/qos.c
board/samsung/common/Makefile
board/samsung/common/ums.c [deleted file]
board/sandbox/Makefile [moved from board/sandbox/sandbox/Makefile with 100% similarity]
board/sandbox/README.sandbox [new file with mode: 0644]
board/sandbox/sandbox.c [moved from board/sandbox/sandbox/sandbox.c with 100% similarity]
board/sandbox/sandbox/README.sandbox [deleted file]
board/siemens/common/board.c
board/siemens/draco/Makefile [moved from board/siemens/dxr2/Makefile with 100% similarity]
board/siemens/draco/board.c [moved from board/siemens/dxr2/board.c with 63% similarity]
board/siemens/draco/board.h [moved from board/siemens/dxr2/board.h with 71% similarity]
board/siemens/draco/mux.c [moved from board/siemens/dxr2/mux.c with 99% similarity]
board/siemens/pxm2/board.c
board/siemens/rut/board.c
board/spear/x600/fpga.c
board/sunxi/Makefile [new file with mode: 0644]
board/sunxi/board.c [new file with mode: 0644]
board/sunxi/dram_cubietruck.c [new file with mode: 0644]
board/sunxi/gmac.c [new file with mode: 0644]
board/tcm-bf518/tcm-bf518.c
board/tcm-bf537/tcm-bf537.c
board/teejet/mt_ventoux/mt_ventoux.c
board/wandboard/wandboard.c
board/xilinx/zynq/.gitignore [new file with mode: 0644]
board/xilinx/zynq/Makefile
board/xilinx/zynq/board.c
board/xilinx/zynq/ps7_init.c [deleted file]
board/xilinx/zynq/xil_io.h [new file with mode: 0644]
boards.cfg
common/Makefile
common/board_f.c
common/cmd_bdinfo.c
common/cmd_bootm.c
common/cmd_fastboot.c [new file with mode: 0644]
common/cmd_fpga.c
common/cmd_fuse.c
common/cmd_mmc.c
common/cmd_nand.c
common/cmd_nvedit.c
common/cmd_otp.c
common/cmd_part.c
common/cmd_time.c
common/cmd_usb_mass_storage.c
common/console.c
common/hush.c
common/image-android.c [new file with mode: 0644]
common/image.c
common/main.c
common/spl/spl_nand.c
disk/part.c
disk/part_efi.c
doc/README.android-fastboot [new file with mode: 0644]
doc/README.android-fastboot-protocol [new file with mode: 0644]
doc/README.atmel_pmecc
doc/README.generic-board
doc/README.gpt
doc/git-mailrc
drivers/dfu/dfu.c
drivers/dfu/dfu_mmc.c
drivers/dfu/dfu_nand.c
drivers/fpga/fpga.c
drivers/fpga/spartan2.c
drivers/fpga/spartan3.c
drivers/fpga/virtex2.c
drivers/fpga/xilinx.c
drivers/fpga/zynqpl.c
drivers/gpio/at91_gpio.c
drivers/i2c/mvtwsi.c
drivers/i2c/zynq_i2c.c
drivers/mmc/Makefile
drivers/mmc/fsl_esdhc.c
drivers/mmc/gen_atmel_mci.c
drivers/mmc/mmc.c
drivers/mmc/rpmb.c [new file with mode: 0644]
drivers/mmc/sunxi_mmc.c [new file with mode: 0644]
drivers/mtd/nand/omap_gpmc.c
drivers/net/designware.c
drivers/net/designware.h
drivers/net/dm9000x.c
drivers/net/fm/Makefile
drivers/net/fm/memac_phy.c
drivers/net/ftmac110.c
drivers/net/phy/atheros.c
drivers/net/phy/phy.c
drivers/net/phy/vitesse.c
drivers/pci/fsl_pci_init.c
drivers/power/pmic/Makefile
drivers/power/pmic/pmic_ltc3676.c [new file with mode: 0644]
drivers/power/pmic/pmic_pfuze100.c
drivers/power/tps6586x.c
drivers/qe/qe.c
drivers/serial/ns16550.c
drivers/serial/serial.c
drivers/usb/gadget/Makefile
drivers/usb/gadget/ci_udc.c
drivers/usb/gadget/ci_udc.h
drivers/usb/gadget/f_dfu.c
drivers/usb/gadget/f_fastboot.c [new file with mode: 0644]
drivers/usb/gadget/f_thor.c
drivers/usb/gadget/storage_common.c
drivers/usb/host/Makefile
drivers/usb/host/ehci-fsl.c
drivers/usb/host/ehci-tegra.c
drivers/usb/host/ehci-zynq.c [new file with mode: 0644]
drivers/usb/musb-new/musb_gadget_ep0.c
drivers/video/Makefile
drivers/video/atmel_hlcdfb.c
drivers/video/imx25lcdc.c [new file with mode: 0644]
drivers/video/mxc_ipuv3_fb.c
examples/standalone/Makefile
fs/ext4/ext4_common.c
fs/ext4/ext4_write.c
fs/fat/fat_write.c
fs/ubifs/super.c
include/android_image.h [new file with mode: 0644]
include/asm-generic/u-boot.h
include/common.h
include/config_fallbacks.h
include/configs/B4860QDS.h
include/configs/BSC9132QDS.h
include/configs/GEN860T.h
include/configs/MPC8536DS.h
include/configs/MPC8572DS.h
include/configs/MPC8641HPCN.h
include/configs/MVBC_P.h
include/configs/MVBLM7.h
include/configs/MVSMR.h
include/configs/P1_P2_RDB.h
include/configs/P2041RDB.h
include/configs/T1040QDS.h
include/configs/T104xRDB.h
include/configs/T208xQDS.h
include/configs/T208xRDB.h
include/configs/T4240EMU.h
include/configs/T4240QDS.h
include/configs/T4240RDB.h [new file with mode: 0644]
include/configs/alpr.h
include/configs/armadillo-800eva.h
include/configs/astro_mcf5373l.h
include/configs/at91sam9m10g45ek.h
include/configs/at91sam9n12ek.h
include/configs/at91sam9x5ek.h
include/configs/balloon3.h
include/configs/bct-brettl2.h
include/configs/bf518f-ezbrd.h
include/configs/bf526-ezbrd.h
include/configs/bf527-ezkit.h
include/configs/bf537-minotaur.h
include/configs/bf537-pnav.h
include/configs/bf537-srv1.h
include/configs/bf537-stamp.h
include/configs/cm-bf527.h
include/configs/cm-bf537e.h
include/configs/cm-bf537u.h
include/configs/cm_t54.h [new file with mode: 0644]
include/configs/coreboot.h
include/configs/corenet_ds.h
include/configs/corvus.h
include/configs/cpu9260.h
include/configs/da850evm.h
include/configs/dnp5370.h
include/configs/draco.h [new file with mode: 0644]
include/configs/duovero.h [new file with mode: 0644]
include/configs/dxr2.h
include/configs/embestmx6boards.h [new file with mode: 0644]
include/configs/ethernut5.h
include/configs/grsim.h
include/configs/grsim_leon2.h
include/configs/gw_ventana.h
include/configs/highbank.h
include/configs/hummingboard.h
include/configs/ids8313.h
include/configs/iocon.h
include/configs/ip04.h
include/configs/k2hk_evm.h
include/configs/km/kmp204x-common.h
include/configs/koelsch.h
include/configs/kwb.h
include/configs/lager.h
include/configs/lsxl.h
include/configs/m28evk.h
include/configs/mt_ventoux.h
include/configs/mx53ard.h
include/configs/mx53evk.h
include/configs/mx53loco.h
include/configs/mx53smd.h
include/configs/mx6sabre_common.h
include/configs/mx6sabresd.h
include/configs/mx6slevk.h
include/configs/mxs.h
include/configs/nitrogen6x.h
include/configs/omap3_beagle.h
include/configs/omap3_mvblx.h
include/configs/omap3_overo.h
include/configs/p1_p2_rdb_pc.h
include/configs/pepper.h [new file with mode: 0644]
include/configs/pxm2.h
include/configs/qemu-ppce500.h
include/configs/sama5d3_xplained.h
include/configs/sama5d3xek.h
include/configs/sandbox.h
include/configs/siemens-am33x-common.h
include/configs/sun7i.h [new file with mode: 0644]
include/configs/sunxi-common.h [new file with mode: 0644]
include/configs/t4qds.h
include/configs/tcm-bf518.h
include/configs/tcm-bf537.h
include/configs/ti_omap4_common.h
include/configs/tseries.h
include/configs/udoo.h
include/configs/vl_ma2sc.h
include/configs/wandboard.h
include/configs/x600.h
include/configs/zynq-common.h
include/configs/zynq_zc70x.h
include/configs/zynq_zed.h
include/dfu.h
include/ext4fs.h
include/fat.h
include/fpga.h
include/image.h
include/mmc.h
include/net.h
include/netdev.h
include/ns16550.h
include/palmas.h
include/part.h
include/power/ltc3676_pmic.h [new file with mode: 0644]
include/power/pfuze100_pmic.h
include/spartan2.h
include/spartan3.h
include/usb/ehci-fsl.h
include/usb_mass_storage.h
include/virtex2.h
include/xilinx.h
include/zynqpl.h
lib/Makefile
lib/sha256.c
nand_spl/board/freescale/p1_p2_rdb/Makefile [deleted file]
nand_spl/board/freescale/p1_p2_rdb/nand_boot.c [deleted file]
net/eth.c
spl/Makefile
tools/.gitignore
tools/Makefile
tools/atmel_pmecc_params.c [new file with mode: 0644]
tools/atmelimage.c [new file with mode: 0644]
tools/env/aes.c [new file with mode: 0644]
tools/imagetool.c
tools/imagetool.h
tools/logos/syteco.bmp
tools/mksunxiboot.c [new file with mode: 0644]
tools/patman/README
tools/patman/commit.py
tools/patman/gitutil.py
tools/patman/patchstream.py

index cba5eac2a03223699866c0c01d648abe6f29c65e..a6b2d1c650c151e44b8820ec7211cd7442b17e36 100644 (file)
@@ -47,8 +47,8 @@
 /errlog
 /reloc_off
 
-!/spl/Makefile
 /spl/*
+!/spl/Makefile
 /tpl/
 
 #
index 840c39b43b882ad6e7432c9a1940efea87adb159..966fd14844fd761863bf92d790c28aaec1f2d87d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,9 +6,9 @@
 #
 
 VERSION = 2014
-PATCHLEVEL = 04
+PATCHLEVEL = 07
 SUBLEVEL =
-EXTRAVERSION =
+EXTRAVERSION = -rc1
 NAME =
 
 # *DOCUMENTATION*
@@ -285,7 +285,7 @@ export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
 #         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
 #
 # If $(quiet) is empty, the whole command will be printed.
-# If it is set to "quiet_", only the short version will be printed. 
+# If it is set to "quiet_", only the short version will be printed.
 # If it is set to "silent_", nothing will be printed at all, since
 # the variable $(silent_cmd_cc_o_c) doesn't exist.
 #
@@ -578,6 +578,9 @@ KBUILD_AFLAGS += -Wa,-gstabs,-S
 endif
 endif
 
+# Prohibit date/time macros, which would make the build non-deterministic
+KBUILD_CFLAGS   += $(call cc-option,-Werror=date-time)
+
 ifneq ($(CONFIG_SYS_TEXT_BASE),)
 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
 endif
@@ -696,6 +699,7 @@ PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`
 endif
 PLATFORM_LIBS += $(PLATFORM_LIBGCC)
 export PLATFORM_LIBS
+export PLATFORM_LIBGCC
 
 # Special flags for CPP when processing the linker script.
 # Pass the version down so we can handle backwards compatibility
@@ -749,6 +753,9 @@ ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
+ifeq ($(CONFIG_SPL_FRAMEWORK),y)
+ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
+endif
 ALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb
 ifneq ($(CONFIG_SPL_TARGET),)
 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
@@ -851,6 +858,11 @@ MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
 u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
        $(call if_changed,mkimage)
 
+MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
+
+u-boot-dtb.img: u-boot-dtb.bin FORCE
+       $(call if_changed,mkimage)
+
 u-boot.sha1:   u-boot.bin
                tools/ubsha1 u-boot.bin
 
@@ -890,7 +902,7 @@ MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
        $(call if_changed,mkimage)
 
-OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_MAX_SIZE)
+OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
        $(call if_changed,pad_cat)
 
@@ -925,6 +937,13 @@ OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
 u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE
        $(call if_changed,pad_cat)
 
+ifneq ($(CONFIG_SUNXI),)
+OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \
+                                  --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
+u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img FORCE
+       $(call if_changed,pad_cat)
+endif
+
 ifneq ($(CONFIG_TEGRA),)
 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
@@ -995,7 +1014,7 @@ ifeq ($(CONFIG_KALLSYMS),y)
        $(call cmd,u-boot__) common/system_map.o
 endif
 
-# The actual objects are generated when descending, 
+# The actual objects are generated when descending,
 # make sure no implicit rule kicks in
 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
 
@@ -1151,6 +1170,9 @@ spl/u-boot-spl.bin: spl/u-boot-spl
 spl/u-boot-spl: tools prepare
        $(Q)$(MAKE) obj=spl -f $(srctree)/spl/Makefile all
 
+spl/sunxi-spl.bin: spl/u-boot-spl
+       @:
+
 tpl/u-boot-tpl.bin: tools prepare
        $(Q)$(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y
 
@@ -1434,7 +1456,7 @@ endif
        $(build)=$(build-dir) $(@:.ko=.o)
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
-# FIXME Should go into a make.lib or something 
+# FIXME Should go into a make.lib or something
 # ===========================================================================
 
 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN   $(wildcard $(rm-dirs)))
diff --git a/README b/README
index 61851b3d888c98223832554785a774674c318037..a280435e9fbec65012cf9758a66f6827d2f22353 100644 (file)
--- a/README
+++ b/README
@@ -264,6 +264,17 @@ e.g. "make cogent_mpc8xx_config". And also configure the cogent
 directory according to the instructions in cogent/README.
 
 
+Sandbox Environment:
+--------------------
+
+U-Boot can be built natively to run on a Linux host using the 'sandbox'
+board. This allows feature development which is not board- or architecture-
+specific to be undertaken on a native platform. The sandbox is also used to
+run some of U-Boot's tests.
+
+See board/sandbox/sandbox/README.sandbox for more details.
+
+
 Configuration Options:
 ----------------------
 
@@ -440,6 +451,12 @@ The following options need to be configured:
                supported, core will start to execute uboot when wakes up.
 
 - Generic CPU options:
+               CONFIG_SYS_GENERIC_GLOBAL_DATA
+               Defines global data is initialized in generic board board_init_f().
+               If this macro is defined, global data is created and cleared in
+               generic board board_init_f(). Without this macro, architecture/board
+               should initialize global data before calling board_init_f().
+
                CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
 
                Defines the endianess of the CPU. Implementation of those
@@ -740,6 +757,10 @@ The following options need to be configured:
                boot loader that has already initialized the UART.  Define this
                variable to flush the UART at init time.
 
+               CONFIG_SERIAL_HW_FLOW_CONTROL
+
+               Define this variable to enable hw flow control in serial driver.
+               Current user of this option is drivers/serial/nsl16550.c driver
 
 - Console Interface:
                Depending on board, define exactly one serial port
@@ -1513,6 +1534,16 @@ The following options need to be configured:
                        CONFIG_SH_MMCIF_CLK
                        Define the clock frequency for MMCIF
 
+               CONFIG_GENERIC_MMC
+               Enable the generic MMC driver
+
+               CONFIG_SUPPORT_EMMC_BOOT
+               Enable some additional features of the eMMC boot partitions.
+
+               CONFIG_SUPPORT_EMMC_RPMB
+               Enable the commands for reading, writing and programming the
+               key for the Replay Protection Memory Block partition in eMMC.
+
 - USB Device Firmware Update (DFU) class support:
                CONFIG_DFU_FUNCTION
                This enables the USB portion of the DFU USB class
@@ -1558,6 +1589,28 @@ The following options need to be configured:
                entering dfuMANIFEST state. Host waits this timeout, before
                sending again an USB request to the device.
 
+- USB Device Android Fastboot support:
+               CONFIG_CMD_FASTBOOT
+               This enables the command "fastboot" which enables the Android
+               fastboot mode for the platform's USB device. Fastboot is a USB
+               protocol for downloading images, flashing and device control
+               used on Android devices.
+               See doc/README.android-fastboot for more information.
+
+               CONFIG_ANDROID_BOOT_IMAGE
+               This enables support for booting images which use the Android
+               image format header.
+
+               CONFIG_USB_FASTBOOT_BUF_ADDR
+               The fastboot protocol requires a large memory buffer for
+               downloads. Define this to the starting RAM address to use for
+               downloaded images.
+
+               CONFIG_USB_FASTBOOT_BUF_SIZE
+               The fastboot protocol requires a large memory buffer for
+               downloads. This buffer should be as large as possible for a
+               platform. Define this to the size available RAM for fastboot.
+
 - Journaling Flash filesystem support:
                CONFIG_JFFS2_NAND, CONFIG_JFFS2_NAND_OFF, CONFIG_JFFS2_NAND_SIZE,
                CONFIG_JFFS2_NAND_DEV
@@ -2529,6 +2582,19 @@ CBFS (Coreboot Filesystem) support
 
                Specify the number of FPGA devices to support.
 
+               CONFIG_CMD_FPGA_LOADMK
+
+               Enable support for fpga loadmk command
+
+               CONFIG_CMD_FPGA_LOADP
+
+               Enable support for fpga loadp command - load partial bitstream
+
+               CONFIG_CMD_FPGA_LOADBP
+
+               Enable support for fpga loadbp command - load partial bitstream
+               (Xilinx only)
+
                CONFIG_SYS_FPGA_PROG_FEEDBACK
 
                Enable printing of hash marks during FPGA configuration.
index 5761def1e7188ace3f8c9dfa53b920909717141c..3d331cc970d87698a7f07fba8502f319d524dab8 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef __ASM_ARC_CONFIG_H_
 #define __ASM_ARC_CONFIG_H_
 
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
+
 #define CONFIG_LMB
 
 #endif /*__ASM_ARC_CONFIG_H_ */
index 7d7725c4b831392c3bddff515f9df574de44cf9f..0e6c0da1bdd4cfeefb2c7f3e20d207550b76c4c6 100644 (file)
@@ -165,3 +165,20 @@ void at91_macb_hw_init(void)
 #endif
 }
 #endif
+
+#ifdef CONFIG_GENERIC_ATMEL_MCI
+void at91_mci_hw_init(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       at91_set_a_periph(AT91_PIO_PORTA, 0, 0);        /* MCI0 CLK */
+       at91_set_a_periph(AT91_PIO_PORTA, 1, 0);        /* MCI0 CDA */
+       at91_set_a_periph(AT91_PIO_PORTA, 2, 0);        /* MCI0 DA0 */
+       at91_set_a_periph(AT91_PIO_PORTA, 3, 0);        /* MCI0 DA1 */
+       at91_set_a_periph(AT91_PIO_PORTA, 4, 0);        /* MCI0 DA2 */
+       at91_set_a_periph(AT91_PIO_PORTA, 5, 0);        /* MCI0 DA3 */
+
+       /* Enable clock */
+       writel(1 << ATMEL_ID_MCI0, &pmc->pcer);
+}
+#endif
index ab869b1ee87d1f0b031ccfe2bdd7e5b6f5bbdf94..232118d7f4135475c3489787211b3a04fe254080 100644 (file)
@@ -12,7 +12,7 @@ obj-y += cache_v7.o
 obj-y  += cpu.o
 obj-y  += syslib.o
 
-ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY),)
+ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI),)
 ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
 obj-y  += lowlevel_init.o
 endif
index 5566310d9481f68dc1b6191e6440f8c793b351df..aae3f096b23f4d995d3d70260c8d6a80c70b1c72 100644 (file)
@@ -14,7 +14,6 @@ endif
 
 obj-$(CONFIG_TI816X)   += clock_ti816x.o
 obj-y  += sys_info.o
-obj-y  += mem.o
 obj-y  += ddr.o
 obj-y  += emif4.o
 obj-y  += board.o
diff --git a/arch/arm/cpu/armv7/am33xx/mem.c b/arch/arm/cpu/armv7/am33xx/mem.c
deleted file mode 100644 (file)
index 56c9e7d..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * (C) Copyright 2010
- * Texas Instruments, <www.ti.com>
- *
- * Author :
- *     Mansoor Ahamed <mansoor.ahamed@ti.com>
- *
- * Initial Code from:
- *     Manikandan Pillai <mani.pillai@ti.com>
- *     Richard Woodruff <r-woodruff2@ti.com>
- *     Syed Mohammed Khasim <khasim@ti.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/sys_proto.h>
-#include <command.h>
-
-struct gpmc *gpmc_cfg;
-
-
-void enable_gpmc_cs_config(const u32 *gpmc_config, struct gpmc_cs *cs, u32 base,
-                       u32 size)
-{
-       writel(0, &cs->config7);
-       sdelay(1000);
-       /* Delay for settling */
-       writel(gpmc_config[0], &cs->config1);
-       writel(gpmc_config[1], &cs->config2);
-       writel(gpmc_config[2], &cs->config3);
-       writel(gpmc_config[3], &cs->config4);
-       writel(gpmc_config[4], &cs->config5);
-       writel(gpmc_config[5], &cs->config6);
-       /* Enable the config */
-       writel((((size & 0xF) << 8) | ((base >> 24) & 0x3F) |
-               (1 << 6)), &cs->config7);
-       sdelay(2000);
-}
-
-/*****************************************************
- * gpmc_init(): init gpmc bus
- * Init GPMC for x16, MuxMode (SDRAM in x32).
- * This code can only be executed from SRAM or SDRAM.
- *****************************************************/
-void gpmc_init(void)
-{
-       /* putting a blanket check on GPMC based on ZeBu for now */
-       gpmc_cfg = (struct gpmc *)GPMC_BASE;
-#if defined(CONFIG_NOR)
-/* configure GPMC for NOR */
-       const u32 gpmc_regs[GPMC_MAX_REG] = {   STNOR_GPMC_CONFIG1,
-                                               STNOR_GPMC_CONFIG2,
-                                               STNOR_GPMC_CONFIG3,
-                                               STNOR_GPMC_CONFIG4,
-                                               STNOR_GPMC_CONFIG5,
-                                               STNOR_GPMC_CONFIG6,
-                                               STNOR_GPMC_CONFIG7
-                                               };
-       u32 size = GPMC_SIZE_16M;
-       u32 base = CONFIG_SYS_FLASH_BASE;
-#elif defined(CONFIG_NAND)
-/* configure GPMC for NAND */
-       const u32  gpmc_regs[GPMC_MAX_REG] = {  M_NAND_GPMC_CONFIG1,
-                                               M_NAND_GPMC_CONFIG2,
-                                               M_NAND_GPMC_CONFIG3,
-                                               M_NAND_GPMC_CONFIG4,
-                                               M_NAND_GPMC_CONFIG5,
-                                               M_NAND_GPMC_CONFIG6,
-                                               0
-                                               };
-       u32 size = GPMC_SIZE_256M;
-       u32 base = CONFIG_SYS_NAND_BASE;
-#else
-       const u32 gpmc_regs[GPMC_MAX_REG] = { 0, 0, 0, 0, 0, 0, 0 };
-       u32 size = 0;
-       u32 base = 0;
-#endif
-       /* global settings */
-       writel(0x00000008, &gpmc_cfg->sysconfig);
-       writel(0x00000000, &gpmc_cfg->irqstatus);
-       writel(0x00000000, &gpmc_cfg->irqenable);
-#ifdef CONFIG_NOR
-       writel(0x00000200, &gpmc_cfg->config);
-#else
-       writel(0x00000012, &gpmc_cfg->config);
-#endif
-       /*
-        * Disable the GPMC0 config set by ROM code
-        */
-       writel(0, &gpmc_cfg->cs[0].config7);
-       sdelay(1000);
-       /* enable chip-select specific configurations */
-       enable_gpmc_cs_config(gpmc_regs, &gpmc_cfg->cs[0], base, size);
-}
index 50eb598ff2686142c364a6688b47650e5c64d5fe..2ce682f6b1087ba056d2ce627e9745382c0b288d 100644 (file)
@@ -79,12 +79,24 @@ u32 get_sysboot_value(void)
 }
 
 #ifdef CONFIG_DISPLAY_CPUINFO
+static char *cpu_revs[] = {
+               "1.0",
+               "2.0",
+               "2.1"};
+
+
+static char *dev_types[] = {
+               "TST",
+               "EMU",
+               "HS",
+               "GP"};
+
 /**
  * Print CPU information
  */
 int print_cpuinfo(void)
 {
-       char *cpu_s, *sec_s;
+       char *cpu_s, *sec_s, *rev_s;
 
        switch (get_cpu_type()) {
        case AM335X:
@@ -94,28 +106,21 @@ int print_cpuinfo(void)
                cpu_s = "TI81XX";
                break;
        default:
-               cpu_s = "Unknown cpu type";
+               cpu_s = "Unknown CPU type";
                break;
        }
 
-       switch (get_device_type()) {
-       case TST_DEVICE:
-               sec_s = "TST";
-               break;
-       case EMU_DEVICE:
-               sec_s = "EMU";
-               break;
-       case HS_DEVICE:
-               sec_s = "HS";
-               break;
-       case GP_DEVICE:
-               sec_s = "GP";
-               break;
-       default:
+       if (get_cpu_rev() < ARRAY_SIZE(cpu_revs))
+               rev_s = cpu_revs[get_cpu_rev()];
+       else
+               rev_s = "?";
+
+       if (get_device_type() < ARRAY_SIZE(dev_types))
+               sec_s = dev_types[get_device_type()];
+       else
                sec_s = "?";
-       }
 
-       printf("%s-%s rev %d\n", cpu_s, sec_s, get_cpu_rev());
+       printf("%s-%s rev %s\n", cpu_s, sec_s, rev_s);
 
        return 0;
 }
diff --git a/arch/arm/cpu/armv7/at91/config.mk b/arch/arm/cpu/armv7/at91/config.mk
new file mode 100644 (file)
index 0000000..09eab70
--- /dev/null
@@ -0,0 +1,10 @@
+#
+# Copyright (C) 2014, Andreas Bießmann <andreas.devel@googlemail.com>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+ifdef CONFIG_SPL_BUILD
+ALL-y  += boot.bin
+else
+ALL-y  += u-boot.img
+endif
index 59f5352b26d25ce62dff396ad91ab8809f9bebab..5f5132f6617b844a2f48fdcb4604250d8c798a8d 100644 (file)
@@ -27,8 +27,4 @@ obj-y += boot-common.o
 obj-y  += lowlevel_init.o
 endif
 
-ifndef CONFIG_SPL_BUILD
-ifneq ($(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
 obj-y  += mem-common.o
-endif
-endif
index 429c4becf3469e7061abc08e6799f54d48c62ff5..71c0cc8f2e440e0fbc72a77ae19e197cabf634b1 100644 (file)
@@ -1384,8 +1384,10 @@ void sdram_init(void)
 
        if (sdram_type == EMIF_SDRAM_TYPE_DDR3 &&
            (!in_sdram && !warm_reset())) {
-               do_bug0039_workaround(EMIF1_BASE);
-               do_bug0039_workaround(EMIF2_BASE);
+               if (emif1_enabled)
+                       do_bug0039_workaround(EMIF1_BASE);
+               if (emif2_enabled)
+                       do_bug0039_workaround(EMIF2_BASE);
        }
 
        debug("<<sdram_init()\n");
index 8ebc0ce251632cff1b2564130496d7cb34970982..ba97d9ec565af9ea4d83e1c69118868ffed43063 100644 (file)
@@ -185,7 +185,7 @@ u32 omap_sdram_size(void)
 {
        u32 section, i, valid;
        u64 sdram_start = 0, sdram_end = 0, addr,
-           size, total_size = 0, trap_size = 0;
+           size, total_size = 0, trap_size = 0, trap_start = 0;
 
        for (i = 0; i < 4; i++) {
                section = __raw_readl(DMM_BASE + i*4);
@@ -194,8 +194,8 @@ u32 omap_sdram_size(void)
                addr = section & EMIF_SYS_ADDR_MASK;
 
                /* See if the address is valid */
-               if ((addr >= DRAM_ADDR_SPACE_START) &&
-                   (addr < DRAM_ADDR_SPACE_END)) {
+               if ((addr >= TI_ARMV7_DRAM_ADDR_SPACE_START) &&
+                   (addr < TI_ARMV7_DRAM_ADDR_SPACE_END)) {
                        size = ((section & EMIF_SYS_SIZE_MASK) >>
                                   EMIF_SYS_SIZE_SHIFT);
                        size = 1 << size;
@@ -208,12 +208,15 @@ u32 omap_sdram_size(void)
                                        sdram_end = addr + size;
                        } else {
                                trap_size = size;
+                               trap_start = addr;
                        }
-
                }
-
        }
-       total_size = (sdram_end - sdram_start) - (trap_size);
+
+       if ((trap_start >= sdram_start) && (trap_start < sdram_end))
+               total_size = (sdram_end - sdram_start) - (trap_size);
+       else
+               total_size = sdram_end - sdram_start;
 
        return total_size;
 }
index afc1bc185e4bb0f41b87c93bf909b33823ee580e..944ef840a16178ec0e513eec501c99cdc57a167a 100644 (file)
  * (C) Copyright 2010
  * Texas Instruments, <www.ti.com>
  *
- * Steve Sakoman <steve@sakoman.com>
+ * Author :
+ *     Mansoor Ahamed <mansoor.ahamed@ti.com>
+ *
+ * Initial Code from:
+ *     Manikandan Pillai <mani.pillai@ti.com>
+ *     Richard Woodruff <r-woodruff2@ti.com>
+ *     Syed Mohammed Khasim <khasim@ti.com>
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include <common.h>
+#include <asm/io.h>
 #include <asm/arch/cpu.h>
+#include <asm/arch/mem.h>
 #include <asm/arch/sys_proto.h>
+#include <command.h>
+#include <linux/mtd/omap_gpmc.h>
 
 struct gpmc *gpmc_cfg;
 
+#if defined(CONFIG_OMAP34XX)
+/********************************************************
+ *  mem_ok() - test used to see if timings are correct
+ *             for a part. Helps in guessing which part
+ *             we are currently using.
+ *******************************************************/
+u32 mem_ok(u32 cs)
+{
+       u32 val1, val2, addr;
+       u32 pattern = 0x12345678;
+
+       addr = OMAP34XX_SDRC_CS0 + get_sdr_cs_offset(cs);
+
+       writel(0x0, addr + 0x400);      /* clear pos A */
+       writel(pattern, addr);          /* pattern to pos B */
+       writel(0x0, addr + 4);          /* remove pattern off the bus */
+       val1 = readl(addr + 0x400);     /* get pos A value */
+       val2 = readl(addr);             /* get val2 */
+       writel(0x0, addr + 0x400);      /* clear pos A */
+
+       if ((val1 != 0) || (val2 != pattern))   /* see if pos A val changed */
+               return 0;
+       else
+               return 1;
+}
+#endif
+
+void enable_gpmc_cs_config(const u32 *gpmc_config, struct gpmc_cs *cs, u32 base,
+                       u32 size)
+{
+       writel(0, &cs->config7);
+       sdelay(1000);
+       /* Delay for settling */
+       writel(gpmc_config[0], &cs->config1);
+       writel(gpmc_config[1], &cs->config2);
+       writel(gpmc_config[2], &cs->config3);
+       writel(gpmc_config[3], &cs->config4);
+       writel(gpmc_config[4], &cs->config5);
+       writel(gpmc_config[5], &cs->config6);
+       /* Enable the config */
+       writel((((size & 0xF) << 8) | ((base >> 24) & 0x3F) |
+               (1 << 6)), &cs->config7);
+       sdelay(2000);
+}
+
 /*****************************************************
  * gpmc_init(): init gpmc bus
+ * Init GPMC for x16, MuxMode (SDRAM in x32).
  * This code can only be executed from SRAM or SDRAM.
  *****************************************************/
 void gpmc_init(void)
 {
+       /* putting a blanket check on GPMC based on ZeBu for now */
        gpmc_cfg = (struct gpmc *)GPMC_BASE;
-
+#if defined(CONFIG_NOR)
+/* configure GPMC for NOR */
+       const u32 gpmc_regs[GPMC_MAX_REG] = {   STNOR_GPMC_CONFIG1,
+                                               STNOR_GPMC_CONFIG2,
+                                               STNOR_GPMC_CONFIG3,
+                                               STNOR_GPMC_CONFIG4,
+                                               STNOR_GPMC_CONFIG5,
+                                               STNOR_GPMC_CONFIG6,
+                                               STNOR_GPMC_CONFIG7
+                                               };
+       u32 size = GPMC_SIZE_16M;
+       u32 base = CONFIG_SYS_FLASH_BASE;
+#elif defined(CONFIG_NAND)
+/* configure GPMC for NAND */
+       const u32  gpmc_regs[GPMC_MAX_REG] = {  M_NAND_GPMC_CONFIG1,
+                                               M_NAND_GPMC_CONFIG2,
+                                               M_NAND_GPMC_CONFIG3,
+                                               M_NAND_GPMC_CONFIG4,
+                                               M_NAND_GPMC_CONFIG5,
+                                               M_NAND_GPMC_CONFIG6,
+                                               0
+                                               };
+       u32 size = GPMC_SIZE_256M;
+       u32 base = CONFIG_SYS_NAND_BASE;
+#elif defined(CONFIG_CMD_ONENAND)
+       const u32 gpmc_regs[GPMC_MAX_REG] = {   ONENAND_GPMC_CONFIG1,
+                                               ONENAND_GPMC_CONFIG2,
+                                               ONENAND_GPMC_CONFIG3,
+                                               ONENAND_GPMC_CONFIG4,
+                                               ONENAND_GPMC_CONFIG5,
+                                               ONENAND_GPMC_CONFIG6,
+                                               0
+                                               };
+       u32 base = PISMO1_ONEN_BASE;
+       u32 size = PISMO1_ONEN_SIZE;
+#else
+       const u32 gpmc_regs[GPMC_MAX_REG] = { 0, 0, 0, 0, 0, 0, 0 };
+       u32 size = 0;
+       u32 base = 0;
+#endif
        /* global settings */
-       writel(0, &gpmc_cfg->irqenable); /* isr's sources masked */
-       writel(0, &gpmc_cfg->timeout_control);/* timeout disable */
-
+       writel(0x00000008, &gpmc_cfg->sysconfig);
+       writel(0x00000000, &gpmc_cfg->irqstatus);
+       writel(0x00000000, &gpmc_cfg->irqenable);
+       writel(0x00000000, &gpmc_cfg->timeout_control);
+#ifdef CONFIG_NOR
+       writel(0x00000200, &gpmc_cfg->config);
+#else
+       writel(0x00000012, &gpmc_cfg->config);
+#endif
        /*
         * Disable the GPMC0 config set by ROM code
-        * It conflicts with our MPDB (both at 0x08000000)
         */
        writel(0, &gpmc_cfg->cs[0].config7);
+       sdelay(1000);
+       /* enable chip-select specific configurations */
+       enable_gpmc_cs_config(gpmc_regs, &gpmc_cfg->cs[0], base, size);
 }
index 39ff2575bc50c82c09697b40b0b088df876daccf..cf860463532f077d28ffeb2f7759af4c3fff0745 100644 (file)
@@ -9,7 +9,6 @@ obj-y   := lowlevel_init.o
 
 obj-y  += board.o
 obj-y  += clock.o
-obj-y  += mem.o
 obj-y  += sys_info.o
 ifdef CONFIG_SPL_BUILD
 obj-$(CONFIG_SPL_OMAP3_ID_NAND)        += spl_id_nand.o
index ad971327bf223b7f1e02ee729b5a8dc07813fecc..4baca11d7a93d9ef0c85f3f3f32f6cc2ace246dc 100644 (file)
@@ -372,6 +372,38 @@ struct vcores_data dra752_volts = {
        .iva.pmic       = &tps659038,
 };
 
+struct vcores_data dra722_volts = {
+       .mpu.value      = 1000,
+       .mpu.efuse.reg  = STD_FUSE_OPP_VMIN_MPU_NOM,
+       .mpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .mpu.addr       = 0x23,
+       .mpu.pmic       = &tps659038,
+
+       .eve.value      = 1000,
+       .eve.efuse.reg  = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
+       .eve.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .eve.addr       = 0x2f,
+       .eve.pmic       = &tps659038,
+
+       .gpu.value      = 1000,
+       .gpu.efuse.reg  = STD_FUSE_OPP_VMIN_GPU_NOM,
+       .gpu.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .gpu.addr       = 0x2f,
+       .gpu.pmic       = &tps659038,
+
+       .core.value     = 1000,
+       .core.efuse.reg = STD_FUSE_OPP_VMIN_CORE_NOM,
+       .core.efuse.reg_bits = DRA752_EFUSE_REGBITS,
+       .core.addr      = 0x27,
+       .core.pmic      = &tps659038,
+
+       .iva.value      = 1000,
+       .iva.efuse.reg  = STD_FUSE_OPP_VMIN_IVA_NOM,
+       .iva.efuse.reg_bits     = DRA752_EFUSE_REGBITS,
+       .iva.addr       = 0x2f,
+       .iva.pmic       = &tps659038,
+};
+
 /*
  * Enable essential clock domains, modules and
  * do some additional special settings needed
@@ -558,6 +590,13 @@ void hw_data_init(void)
        *ctrl = &dra7xx_ctrl;
        break;
 
+       case DRA722_ES1_0:
+       *prcm = &dra7xx_prcm;
+       *dplls_data = &dra7xx_dplls;
+       *omap_vcores = &dra722_volts;
+       *ctrl = &dra7xx_ctrl;
+       break;
+
        default:
                printf("\n INVALID OMAP REVISION ");
        }
@@ -580,6 +619,7 @@ void get_ioregs(const struct ctrl_ioregs **regs)
                break;
        case DRA752_ES1_0:
        case DRA752_ES1_1:
+       case DRA722_ES1_0:
                *regs = &ioregs_dra7xx_es1;
                break;
 
index 93feb1623cd9a04764234acb99d582c2dce4ccaf..a8a474a88be94a94fabf2e5d71a47fb50797df37 100644 (file)
@@ -336,6 +336,9 @@ void init_omap_revision(void)
        case DRA752_CONTROL_ID_CODE_ES1_1:
                *omap_si_rev = DRA752_ES1_1;
                break;
+       case DRA722_CONTROL_ID_CODE_ES1_0:
+               *omap_si_rev = DRA722_ES1_0;
+               break;
        default:
                *omap_si_rev = OMAP5430_SILICON_ID_INVALID;
        }
index 7292161f3cbd15a803673e622650dc5d1eb59e56..ff08ef42479400a5697ba210c7b313ae9165a67c 100644 (file)
@@ -447,10 +447,10 @@ struct omap_sys_ctrl_regs const dra7xx_ctrl = {
        .control_wkup_control_spare_r           = 0x4AE0C5B4,
        .control_wkup_control_spare_r_c0        = 0x4AE0C5B8,
        .control_srcomp_east_side_wkup          = 0x4AE0C5BC,
-       .control_efuse_1                        = 0x4AE0C5C0,
-       .control_efuse_2                        = 0x4AE0C5C4,
-       .control_efuse_3                        = 0x4AE0C5C8,
-       .control_efuse_4                        = 0x4AE0C5CC,
+       .control_efuse_1                        = 0x4AE0C5C8,
+       .control_efuse_2                        = 0x4AE0C5CC,
+       .control_efuse_3                        = 0x4AE0C5D0,
+       .control_efuse_4                        = 0x4AE0C5D4,
        .control_efuse_13                       = 0x4AE0C5F0,
 };
 
index 16a91f911a0c84bedadfd2e8010f612618b60b00..e2ebab826232709a599d1d91e443f942ca7e660f 100644 (file)
@@ -229,6 +229,17 @@ const struct dmm_lisa_map_regs lisa_map_2G_x_2_x_2 = {
        .is_ma_present  = 0x1
 };
 
+/*
+ * DRA722 EVM EMIF1 CONFIGURATION
+ */
+const struct dmm_lisa_map_regs lisa_map_2G_x_2 = {
+       .dmm_lisa_map_0 = 0x0,
+       .dmm_lisa_map_1 = 0x0,
+       .dmm_lisa_map_2 = 0x80600100,
+       .dmm_lisa_map_3 = 0xFF020100,
+       .is_ma_present  = 0x1
+};
+
 static void emif_get_reg_dump_sdp(u32 emif_nr, const struct emif_regs **regs)
 {
        switch (omap_revision()) {
@@ -255,6 +266,7 @@ static void emif_get_reg_dump_sdp(u32 emif_nr, const struct emif_regs **regs)
                        break;
                }
                break;
+       case DRA722_ES1_0:
        default:
                *regs = &emif_1_regs_ddr3_532_mhz_1cs_dra_es1;
        }
@@ -275,8 +287,11 @@ static void emif_get_dmm_regs_sdp(const struct dmm_lisa_map_regs
                break;
        case DRA752_ES1_0:
        case DRA752_ES1_1:
-       default:
                *dmm_lisa_regs = &lisa_map_2G_x_2_x_2_2G_x_1_x_2;
+               break;
+       case DRA722_ES1_0:
+       default:
+               *dmm_lisa_regs = &lisa_map_2G_x_2;
        }
 
 }
@@ -463,6 +478,7 @@ static void emif_get_ext_phy_ctrl_const_regs(u32 emif_nr,
                break;
        case DRA752_ES1_0:
        case DRA752_ES1_1:
+       case DRA722_ES1_0:
                if (emif_nr == 1) {
                        *regs = dra_ddr3_ext_phy_ctrl_const_base_es1_emif1;
                        *size =
@@ -630,6 +646,7 @@ const struct read_write_regs *get_bug_regs(u32 *iterations)
                break;
        case DRA752_ES1_0:
        case DRA752_ES1_1:
+       case DRA722_ES1_0:
                bug_00339_regs_ptr = dra_bug_00339_regs;
                *iterations = sizeof(dra_bug_00339_regs)/
                             sizeof(dra_bug_00339_regs[0]);
index 22219990dd27279a6d00aded861147ec04b7322a..fad004ca64b19b4623fab4207e075861e7c43647 100644 (file)
@@ -11,7 +11,7 @@ obj-y += emac.o
 obj-$(CONFIG_DISPLAY_BOARDINFO) += board.o
 obj-$(CONFIG_GLOBAL_TIMER) += timer.o
 obj-$(CONFIG_R8A7740) += lowlevel_init.o cpu_info-r8a7740.o pfc-r8a7740.o
-obj-$(CONFIG_R8A7790) += lowlevel_init_ca15.o cpu_info-r8a7790.o pfc-r8a7790.o
-obj-$(CONFIG_R8A7791) += lowlevel_init_ca15.o cpu_info-r8a7791.o pfc-r8a7791.o
+obj-$(CONFIG_R8A7790) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7790.o
+obj-$(CONFIG_R8A7791) += lowlevel_init_ca15.o cpu_info-rcar.o pfc-r8a7791.o
 obj-$(CONFIG_SH73A0) += lowlevel_init.o cpu_info-sh73a0.o pfc-sh73a0.o
 obj-$(CONFIG_TMU_TIMER) += ../../../../sh/lib/time.o
diff --git a/arch/arm/cpu/armv7/rmobile/cpu_info-r8a7791.c b/arch/arm/cpu/armv7/rmobile/cpu_info-r8a7791.c
deleted file mode 100644 (file)
index 2de58ed..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * arch/arm/cpu/armv7/rmobile/cpu_info-r8a7791.c
- *
- * Copyright (C) 2013 Renesas Electronics Corporation
- *
- * SPDX-License-Identifier: GPL-2.0
- */
-#include <common.h>
-#include <asm/io.h>
-
-#define PRR 0xFF000044
-
-u32 rmobile_get_cpu_type(void)
-{
-       u32 product;
-
-       product = readl(PRR);
-
-       return (u32)((product & 0x00007F00) >> 8);
-}
-
-u32 rmobile_get_cpu_rev_integer(void)
-{
-       u32 product;
-
-       product = readl(PRR);
-
-       return (u32)((product & 0x000000F0) >> 4);
-}
similarity index 50%
rename from arch/arm/cpu/armv7/rmobile/cpu_info-r8a7790.c
rename to arch/arm/cpu/armv7/rmobile/cpu_info-rcar.c
index 7232e2377490e1ff86560179f86f8d6087f145a0..42ee30fbe7acf29ac423ac966f8490aaf13ff0a8 100644 (file)
@@ -1,8 +1,7 @@
 /*
- * arch/arm/cpu/armv7/rmobile/cpu_info-r8a7790.c
- *     This file is r8a7790 processor support.
+ * arch/arm/cpu/armv7/rmobile/cpu_info-rcar.c
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
  */
@@ -18,5 +17,10 @@ u32 rmobile_get_cpu_type(void)
 
 u32 rmobile_get_cpu_rev_integer(void)
 {
-       return (readl(PRR) & 0x000000F0) >> 4;
+       return ((readl(PRR) & 0x000000F0) >> 4) + 1;
+}
+
+u32 rmobile_get_cpu_rev_fraction(void)
+{
+       return readl(PRR) & 0x0000000F;
 }
index 83d5282e3e71e2f51c23f4fbf98024ac0f658028..7a7c97d791b0e1886857373b783506cfeeca3f16 100644 (file)
@@ -44,35 +44,30 @@ static u32 __rmobile_get_cpu_rev_fraction(void)
 u32 rmobile_get_cpu_rev_fraction(void)
                __attribute__((weak, alias("__rmobile_get_cpu_rev_fraction")));
 
+/* CPU infomation table */
+static const struct {
+       u16 cpu_type;
+       u8 cpu_name[10];
+} rmobile_cpuinfo[] = {
+       { 0x37, "SH73A0" },
+       { 0x40, "R8A7740" },
+       { 0x45, "R8A7790" },
+       { 0x47, "R8A7791" },
+       { 0x0, "CPU" },
+};
+
 int print_cpuinfo(void)
 {
-       switch (rmobile_get_cpu_type()) {
-       case 0x37:
-               printf("CPU: Renesas Electronics SH73A0 rev %d.%d\n",
-                      rmobile_get_cpu_rev_integer(),
-                      rmobile_get_cpu_rev_fraction());
-               break;
-       case 0x40:
-               printf("CPU: Renesas Electronics R8A7740 rev %d.%d\n",
-                      rmobile_get_cpu_rev_integer(),
-                      rmobile_get_cpu_rev_fraction());
-               break;
-
-       case 0x45:
-               printf("CPU: Renesas Electronics R8A7790 rev %d\n",
-                      rmobile_get_cpu_rev_integer());
-               break;
-
-       case 0x47:
-               printf("CPU: Renesas Electronics R8A7791 rev %d\n",
-                       rmobile_get_cpu_rev_integer());
-               break;
-
-       default:
-               printf("CPU: Renesas Electronics CPU rev %d.%d\n",
-                      rmobile_get_cpu_rev_integer(),
-                      rmobile_get_cpu_rev_fraction());
-               break;
+       int i = 0;
+       u32 cpu_type = rmobile_get_cpu_type();
+       for (; i < ARRAY_SIZE(rmobile_cpuinfo); i++) {
+               if (rmobile_cpuinfo[i].cpu_type == cpu_type) {
+                       printf("CPU: Renesas Electronics %s rev %d.%d\n",
+                              rmobile_cpuinfo[i].cpu_name,
+                              rmobile_get_cpu_rev_integer(),
+                              rmobile_get_cpu_rev_fraction());
+                       break;
+               }
        }
        return 0;
 }
index e07cc8093a05510c67ca4bbdd0bcab2f3daea00b..287f8d74afa342534bc5b42a3f2f8793c7ff4ccf 100644 (file)
@@ -2,7 +2,7 @@
  * arch/arm/cpu/armv7/rmobile/lowlevel_init_ca15.S
  *     This file is lager low level initialize.
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013, 2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
  */
@@ -36,16 +36,32 @@ do_cpu_waiting:
        .align  4
 do_lowlevel_init:
        /* surpress wfe if ca15 */
-       tst     r4, #4
+       tst r4, #4
        mrceq p15, 0, r0, c1, c0, 1     /* actlr */
        orreq r0, r0, #(1<<7)
        mcreq p15, 0, r0, c1, c0, 1
+
        /* and set l2 latency */
        mrceq p15, 1, r0, c9, c0, 2     /* l2ctlr */
        orreq r0, r0, #0x00000800
        orreq r0, r0, #0x00000003
        mcreq p15, 1, r0, c9, c0, 2
 
+       mrc p15, 0, r0, c0, c0, 5       /* r0 = MPIDR */
+       and r0, r0, #0xf00
+       lsr r0, r0, #8
+       tst r0, #1                      /* only need for cluster 0 */
+       bne _exit_init_l2_a15
+
+       mrc p15, 1, r0, c9, c0, 2       /* r0 = L2CTLR */
+       and r1, r0, #7
+       cmp r1, #3                      /* has already been set up */
+       bicne r0, r0, #0xe7
+       orrne r0, r0, #0x83             /* L2CTLR[7:6] + L2CTLR[2:0] */
+       orrne r0, r0, #0x20             /* L2CTLR[5] */
+       mcrne p15, 1, r0, c9, c0, 2
+
+_exit_init_l2_a15:
        ldr     r3, =(CONFIG_SYS_INIT_SP_ADDR)
        sub     sp, r3, #4
        str     lr, [sp]
index f49f990a024583ec763b58448881d5d145daa90f..46d6e60c158279fe76e580dd2c02055a77c073c1 100644 (file)
@@ -913,7 +913,7 @@ static struct pinmux_cfg_reg pinmux_config_regs[] = {
                /* SEL_SCIF3 [2] */
                FN_SEL_SCIF3_0, FN_SEL_SCIF3_1, FN_SEL_SCIF3_2, FN_SEL_SCIF3_3,
                /* SEL_IEB [2] */
-               FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2,
+               FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, 0,
                /* SEL_MMC [1] */
                FN_SEL_MMC_0, FN_SEL_MMC_1,
                /* SEL_SCIF5 [1] */
diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
new file mode 100644 (file)
index 0000000..a64bfa1
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+#
+# Based on some other Makefile
+# (C) Copyright 2000-2003
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+obj-y  += timer.o
+obj-y  += board.o
+obj-y  += clock.o
+obj-y  += pinmux.o
+obj-$(CONFIG_SUN7I)    += clock_sun4i.o
+
+ifndef CONFIG_SPL_BUILD
+obj-y  += cpu_info.o
+endif
+
+ifdef CONFIG_SPL_BUILD
+obj-$(CONFIG_SUN7I)    += dram.o
+ifdef CONFIG_SPL_FEL
+obj-y  += start.o
+endif
+endif
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
new file mode 100644 (file)
index 0000000..49c9448
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Some init for sunxi platform.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <netdev.h>
+#include <miiphy.h>
+#include <serial.h>
+#ifdef CONFIG_SPL_BUILD
+#include <spl.h>
+#endif
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/timer.h>
+
+#ifdef CONFIG_SPL_BUILD
+/* Pointer to the global data structure for SPL */
+DECLARE_GLOBAL_DATA_PTR;
+
+/* The sunxi internal brom will try to loader external bootloader
+ * from mmc0, nand flash, mmc2.
+ * Unfortunately we can't check how SPL was loaded so assume
+ * it's always the first SD/MMC controller
+ */
+u32 spl_boot_device(void)
+{
+       return BOOT_DEVICE_MMC1;
+}
+
+/* No confirmation data available in SPL yet. Hardcode bootmode */
+u32 spl_boot_mode(void)
+{
+       return MMCSD_MODE_RAW;
+}
+#endif
+
+int gpio_init(void)
+{
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUN4I_GPB22_UART0_TX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUN4I_GPB23_UART0_RX);
+       sunxi_gpio_set_pull(SUNXI_GPB(23), 1);
+
+       return 0;
+}
+
+void reset_cpu(ulong addr)
+{
+}
+
+/* do some early init */
+void s_init(void)
+{
+#if !defined CONFIG_SPL_BUILD && (defined CONFIG_SUN7I || defined CONFIG_SUN6I)
+       /* Enable SMP mode for CPU0, by setting bit 6 of Auxiliary Ctl reg */
+       asm volatile(
+               "mrc p15, 0, r0, c1, c0, 1\n"
+               "orr r0, r0, #1 << 6\n"
+               "mcr p15, 0, r0, c1, c0, 1\n");
+#endif
+
+       clock_init();
+       timer_init();
+       gpio_init();
+
+#ifdef CONFIG_SPL_BUILD
+       gd = &gdata;
+       preloader_console_init();
+
+       sunxi_board_init();
+#endif
+}
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+void enable_caches(void)
+{
+       /* Enable D-cache. I-cache is already enabled in start.S */
+       dcache_enable();
+}
+#endif
+
+#ifdef CONFIG_CMD_NET
+/*
+ * Initializes on-chip ethernet controllers.
+ * to override, implement board_eth_init()
+ */
+int cpu_eth_init(bd_t *bis)
+{
+       int rc;
+
+#ifdef CONFIG_SUNXI_GMAC
+       rc = sunxi_gmac_initialize(bis);
+       if (rc < 0) {
+               printf("sunxi: failed to initialize gmac\n");
+               return rc;
+       }
+#endif
+
+       return 0;
+}
+#endif
diff --git a/arch/arm/cpu/armv7/sunxi/clock.c b/arch/arm/cpu/armv7/sunxi/clock.c
new file mode 100644 (file)
index 0000000..47fb70f
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * (C) Copyright 2013 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/sys_proto.h>
+
+int clock_init(void)
+{
+#ifdef CONFIG_SPL_BUILD
+       clock_init_safe();
+#endif
+       clock_init_uart();
+
+       return 0;
+}
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun4i.c b/arch/arm/cpu/armv7/sunxi/clock_sun4i.c
new file mode 100644 (file)
index 0000000..5a7da3c
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * sun4i, sun5i and sun7i specific clock code
+ *
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * (C) Copyright 2013 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/sys_proto.h>
+
+#ifdef CONFIG_SPL_BUILD
+void clock_init_safe(void)
+{
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* Set safe defaults until PMU is configured */
+       writel(AXI_DIV_1 << AXI_DIV_SHIFT |
+              AHB_DIV_2 << AHB_DIV_SHIFT |
+              APB0_DIV_1 << APB0_DIV_SHIFT |
+              CPU_CLK_SRC_OSC24M << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_ahb_apb0_cfg);
+       writel(PLL1_CFG_DEFAULT, &ccm->pll1_cfg);
+       sdelay(200);
+       writel(AXI_DIV_1 << AXI_DIV_SHIFT |
+              AHB_DIV_2 << AHB_DIV_SHIFT |
+              APB0_DIV_1 << APB0_DIV_SHIFT |
+              CPU_CLK_SRC_PLL1 << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_ahb_apb0_cfg);
+#ifdef CONFIG_SUN7I
+       writel(0x1 << AHB_GATE_OFFSET_DMA | readl(&ccm->ahb_gate0),
+              &ccm->ahb_gate0);
+#endif
+       writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
+}
+#endif
+
+void clock_init_uart(void)
+{
+       struct sunxi_ccm_reg *const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* uart clock source is apb1 */
+       writel(APB1_CLK_SRC_OSC24M|
+              APB1_CLK_RATE_N_1|
+              APB1_CLK_RATE_M(1),
+              &ccm->apb1_clk_div_cfg);
+
+       /* open the clock for uart */
+       setbits_le32(&ccm->apb1_gate,
+               CLK_GATE_OPEN << (APB1_GATE_UART_SHIFT+CONFIG_CONS_INDEX-1));
+}
+
+int clock_twi_onoff(int port, int state)
+{
+       struct sunxi_ccm_reg *const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       if (port > 2)
+               return -1;
+
+       /* set the apb clock gate for twi */
+       if (state)
+               setbits_le32(&ccm->apb1_gate,
+                            CLK_GATE_OPEN << (APB1_GATE_TWI_SHIFT+port));
+       else
+               clrbits_le32(&ccm->apb1_gate,
+                            CLK_GATE_OPEN << (APB1_GATE_TWI_SHIFT+port));
+
+       return 0;
+}
+
+#ifdef CONFIG_SPL_BUILD
+#define PLL1_CFG(N, K, M, P)   ( 1 << CCM_PLL1_CFG_ENABLE_SHIFT | \
+                                 0 << CCM_PLL1_CFG_VCO_RST_SHIFT |  \
+                                 8 << CCM_PLL1_CFG_VCO_BIAS_SHIFT | \
+                                 0 << CCM_PLL1_CFG_PLL4_EXCH_SHIFT | \
+                                16 << CCM_PLL1_CFG_BIAS_CUR_SHIFT | \
+                                (P)<< CCM_PLL1_CFG_DIVP_SHIFT | \
+                                 2 << CCM_PLL1_CFG_LCK_TMR_SHIFT | \
+                                (N)<< CCM_PLL1_CFG_FACTOR_N_SHIFT | \
+                                (K)<< CCM_PLL1_CFG_FACTOR_K_SHIFT | \
+                                 0 << CCM_PLL1_CFG_SIG_DELT_PAT_IN_SHIFT | \
+                                 0 << CCM_PLL1_CFG_SIG_DELT_PAT_EN_SHIFT | \
+                                (M)<< CCM_PLL1_CFG_FACTOR_M_SHIFT)
+
+static struct {
+       u32 pll1_cfg;
+       unsigned int freq;
+} pll1_para[] = {
+       /* This array must be ordered by frequency. */
+       { PLL1_CFG(16, 0, 0, 0), 384000000 },
+       { PLL1_CFG(16, 1, 0, 0), 768000000 },
+       { PLL1_CFG(20, 1, 0, 0), 960000000 },
+       { PLL1_CFG(21, 1, 0, 0), 1008000000},
+       { PLL1_CFG(22, 1, 0, 0), 1056000000},
+       { PLL1_CFG(23, 1, 0, 0), 1104000000},
+       { PLL1_CFG(24, 1, 0, 0), 1152000000},
+       { PLL1_CFG(25, 1, 0, 0), 1200000000},
+       { PLL1_CFG(26, 1, 0, 0), 1248000000},
+       { PLL1_CFG(27, 1, 0, 0), 1296000000},
+       { PLL1_CFG(28, 1, 0, 0), 1344000000},
+       { PLL1_CFG(29, 1, 0, 0), 1392000000},
+       { PLL1_CFG(30, 1, 0, 0), 1440000000},
+       { PLL1_CFG(31, 1, 0, 0), 1488000000},
+       /* Final catchall entry */
+       { PLL1_CFG(31, 1, 0, 0), ~0},
+};
+
+void clock_set_pll1(unsigned int hz)
+{
+       int i = 0;
+       int axi, ahb, apb0;
+       struct sunxi_ccm_reg * const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* Find target frequency */
+       while (pll1_para[i].freq < hz)
+               i++;
+
+       hz = pll1_para[i].freq;
+
+       /* Calculate system clock divisors */
+       axi = DIV_ROUND_UP(hz, 432000000);      /* Max 450MHz */
+       ahb = DIV_ROUND_UP(hz/axi, 204000000);  /* Max 250MHz */
+       apb0 = 2;                               /* Max 150MHz */
+
+       printf("CPU: %uHz, AXI/AHB/APB: %d/%d/%d\n", hz, axi, ahb, apb0);
+
+       /* Map divisors to register values */
+       axi = axi - 1;
+       if (ahb > 4)
+               ahb = 3;
+       else if (ahb > 2)
+               ahb = 2;
+       else if (ahb > 1)
+               ahb = 1;
+       else
+               ahb = 0;
+
+       apb0 = apb0 - 1;
+
+       /* Switch to 24MHz clock while changing PLL1 */
+       writel(AXI_DIV_1 << AXI_DIV_SHIFT |
+              AHB_DIV_2 << AHB_DIV_SHIFT |
+              APB0_DIV_1 << APB0_DIV_SHIFT |
+              CPU_CLK_SRC_OSC24M << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_ahb_apb0_cfg);
+       sdelay(20);
+
+       /* Configure sys clock divisors */
+       writel(axi << AXI_DIV_SHIFT |
+              ahb << AHB_DIV_SHIFT |
+              apb0 << APB0_DIV_SHIFT |
+              CPU_CLK_SRC_OSC24M << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_ahb_apb0_cfg);
+
+       /* Configure PLL1 at the desired frequency */
+       writel(pll1_para[i].pll1_cfg, &ccm->pll1_cfg);
+       sdelay(200);
+
+       /* Switch CPU to PLL1 */
+       writel(axi << AXI_DIV_SHIFT |
+              ahb << AHB_DIV_SHIFT |
+              apb0 << APB0_DIV_SHIFT |
+              CPU_CLK_SRC_PLL1 << CPU_CLK_SRC_SHIFT,
+              &ccm->cpu_ahb_apb0_cfg);
+       sdelay(20);
+}
+#endif
+
+unsigned int clock_get_pll6(void)
+{
+       struct sunxi_ccm_reg *const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+       uint32_t rval = readl(&ccm->pll6_cfg);
+       int n = ((rval & CCM_PLL6_CTRL_N_MASK) >> CCM_PLL6_CTRL_N_SHIFT);
+       int k = ((rval & CCM_PLL6_CTRL_K_MASK) >> CCM_PLL6_CTRL_K_SHIFT) + 1;
+       return 24000000 * n * k / 2;
+}
diff --git a/arch/arm/cpu/armv7/sunxi/config.mk b/arch/arm/cpu/armv7/sunxi/config.mk
new file mode 100644 (file)
index 0000000..00f5ffc
--- /dev/null
@@ -0,0 +1,8 @@
+# Build a combined spl + u-boot image
+ifdef CONFIG_SPL
+ifndef CONFIG_SPL_BUILD
+ifndef CONFIG_SPL_FEL
+ALL-y += u-boot-sunxi-with-spl.bin
+endif
+endif
+endif
diff --git a/arch/arm/cpu/armv7/sunxi/cpu_info.c b/arch/arm/cpu/armv7/sunxi/cpu_info.c
new file mode 100644 (file)
index 0000000..b4c3d5c
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+
+#ifdef CONFIG_DISPLAY_CPUINFO
+int print_cpuinfo(void)
+{
+       puts("CPU:   Allwinner A20 (SUN7I)\n");
+       return 0;
+}
+#endif
diff --git a/arch/arm/cpu/armv7/sunxi/dram.c b/arch/arm/cpu/armv7/sunxi/dram.c
new file mode 100644 (file)
index 0000000..b43c4b4
--- /dev/null
@@ -0,0 +1,593 @@
+/*
+ * sunxi DRAM controller initialization
+ * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ * (C) Copyright 2013 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * Based on sun4i Linux kernel sources mach-sunxi/pm/standby/dram*.c
+ * and earlier U-Boot Allwiner A10 SPL work
+ *
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * Unfortunately the only documentation we have on the sun7i DRAM
+ * controller is Allwinner boot0 + boot1 code, and that code uses
+ * magic numbers & shifts with no explanations. Hence this code is
+ * rather undocumented and full of magic.
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/dram.h>
+#include <asm/arch/timer.h>
+#include <asm/arch/sys_proto.h>
+
+#define CPU_CFG_CHIP_VER(n) ((n) << 6)
+#define CPU_CFG_CHIP_VER_MASK CPU_CFG_CHIP_VER(0x3)
+#define CPU_CFG_CHIP_REV_A 0x0
+#define CPU_CFG_CHIP_REV_C1 0x1
+#define CPU_CFG_CHIP_REV_C2 0x2
+#define CPU_CFG_CHIP_REV_B 0x3
+
+/*
+ * Wait up to 1s for mask to be clear in given reg.
+ */
+static void await_completion(u32 *reg, u32 mask)
+{
+       unsigned long tmo = timer_get_us() + 1000000;
+
+       while (readl(reg) & mask) {
+               if (timer_get_us() > tmo)
+                       panic("Timeout initialising DRAM\n");
+       }
+}
+
+static void mctl_ddr3_reset(void)
+{
+       struct sunxi_dram_reg *dram =
+                       (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+
+       clrbits_le32(&dram->mcr, DRAM_MCR_RESET);
+       udelay(2);
+       setbits_le32(&dram->mcr, DRAM_MCR_RESET);
+}
+
+static void mctl_set_drive(void)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+
+       clrsetbits_le32(&dram->mcr, DRAM_MCR_MODE_NORM(0x3) | (0x3 << 28),
+                       DRAM_MCR_MODE_EN(0x3) |
+                       0xffc);
+}
+
+static void mctl_itm_disable(void)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+
+       clrsetbits_le32(&dram->ccr, DRAM_CCR_INIT, DRAM_CCR_ITM_OFF);
+}
+
+static void mctl_itm_enable(void)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+
+       clrbits_le32(&dram->ccr, DRAM_CCR_ITM_OFF);
+}
+
+static void mctl_enable_dll0(u32 phase)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+
+       clrsetbits_le32(&dram->dllcr[0], 0x3f << 6,
+                       ((phase >> 16) & 0x3f) << 6);
+       clrsetbits_le32(&dram->dllcr[0], DRAM_DLLCR_NRESET, DRAM_DLLCR_DISABLE);
+       udelay(2);
+
+       clrbits_le32(&dram->dllcr[0], DRAM_DLLCR_NRESET | DRAM_DLLCR_DISABLE);
+       udelay(22);
+
+       clrsetbits_le32(&dram->dllcr[0], DRAM_DLLCR_DISABLE, DRAM_DLLCR_NRESET);
+       udelay(22);
+}
+
+/*
+ * Note: This differs from pm/standby in that it checks the bus width
+ */
+static void mctl_enable_dllx(u32 phase)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+       u32 i, n, bus_width;
+
+       bus_width = readl(&dram->dcr);
+
+       if ((bus_width & DRAM_DCR_BUS_WIDTH_MASK) ==
+           DRAM_DCR_BUS_WIDTH(DRAM_DCR_BUS_WIDTH_32BIT))
+               n = DRAM_DCR_NR_DLLCR_32BIT;
+       else
+               n = DRAM_DCR_NR_DLLCR_16BIT;
+
+       for (i = 1; i < n; i++) {
+               clrsetbits_le32(&dram->dllcr[i], 0xf << 14,
+                               (phase & 0xf) << 14);
+               clrsetbits_le32(&dram->dllcr[i], DRAM_DLLCR_NRESET,
+                               DRAM_DLLCR_DISABLE);
+               phase >>= 4;
+       }
+       udelay(2);
+
+       for (i = 1; i < n; i++)
+               clrbits_le32(&dram->dllcr[i], DRAM_DLLCR_NRESET |
+                            DRAM_DLLCR_DISABLE);
+       udelay(22);
+
+       for (i = 1; i < n; i++)
+               clrsetbits_le32(&dram->dllcr[i], DRAM_DLLCR_DISABLE,
+                               DRAM_DLLCR_NRESET);
+       udelay(22);
+}
+
+static u32 hpcr_value[32] = {
+#ifdef CONFIG_SUN7I
+       0x0301, 0x0301, 0x0301, 0x0301,
+       0x0301, 0x0301, 0x0301, 0x0301,
+       0, 0, 0, 0,
+       0, 0, 0, 0,
+       0x1031, 0x1031, 0x0735, 0x1035,
+       0x1035, 0x0731, 0x1031, 0x0735,
+       0x1035, 0x1031, 0x0731, 0x1035,
+       0x0001, 0x1031, 0, 0x1031
+       /* last row differs from boot0 source table
+        * 0x1031, 0x0301, 0x0301, 0x0731
+        * but boot0 code skips #28 and #30, and sets #29 and #31 to the
+        * value from #28 entry (0x1031)
+        */
+#endif
+};
+
+static void mctl_configure_hostport(void)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+       u32 i;
+
+       for (i = 0; i < 32; i++)
+               writel(hpcr_value[i], &dram->hpcr[i]);
+}
+
+static void mctl_setup_dram_clock(u32 clk)
+{
+       u32 reg_val;
+       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* setup DRAM PLL */
+       reg_val = readl(&ccm->pll5_cfg);
+       reg_val &= ~CCM_PLL5_CTRL_M_MASK;               /* set M to 0 (x1) */
+       reg_val &= ~CCM_PLL5_CTRL_K_MASK;               /* set K to 0 (x1) */
+       reg_val &= ~CCM_PLL5_CTRL_N_MASK;               /* set N to 0 (x0) */
+       reg_val &= ~CCM_PLL5_CTRL_P_MASK;               /* set P to 0 (x1) */
+       if (clk >= 540 && clk < 552) {
+               /* dram = 540MHz, pll5p = 540MHz */
+               reg_val |= CCM_PLL5_CTRL_M(CCM_PLL5_CTRL_M_X(2));
+               reg_val |= CCM_PLL5_CTRL_K(CCM_PLL5_CTRL_K_X(3));
+               reg_val |= CCM_PLL5_CTRL_N(CCM_PLL5_CTRL_N_X(15));
+               reg_val |= CCM_PLL5_CTRL_P(1);
+       } else if (clk >= 512 && clk < 528) {
+               /* dram = 512MHz, pll5p = 384MHz */
+               reg_val |= CCM_PLL5_CTRL_M(CCM_PLL5_CTRL_M_X(3));
+               reg_val |= CCM_PLL5_CTRL_K(CCM_PLL5_CTRL_K_X(4));
+               reg_val |= CCM_PLL5_CTRL_N(CCM_PLL5_CTRL_N_X(16));
+               reg_val |= CCM_PLL5_CTRL_P(2);
+       } else if (clk >= 496 && clk < 504) {
+               /* dram = 496MHz, pll5p = 372MHz */
+               reg_val |= CCM_PLL5_CTRL_M(CCM_PLL5_CTRL_M_X(3));
+               reg_val |= CCM_PLL5_CTRL_K(CCM_PLL5_CTRL_K_X(2));
+               reg_val |= CCM_PLL5_CTRL_N(CCM_PLL5_CTRL_N_X(31));
+               reg_val |= CCM_PLL5_CTRL_P(2);
+       } else if (clk >= 468 && clk < 480) {
+               /* dram = 468MHz, pll5p = 468MHz */
+               reg_val |= CCM_PLL5_CTRL_M(CCM_PLL5_CTRL_M_X(2));
+               reg_val |= CCM_PLL5_CTRL_K(CCM_PLL5_CTRL_K_X(3));
+               reg_val |= CCM_PLL5_CTRL_N(CCM_PLL5_CTRL_N_X(13));
+               reg_val |= CCM_PLL5_CTRL_P(1);
+       } else if (clk >= 396 && clk < 408) {
+               /* dram = 396MHz, pll5p = 396MHz */
+               reg_val |= CCM_PLL5_CTRL_M(CCM_PLL5_CTRL_M_X(2));
+               reg_val |= CCM_PLL5_CTRL_K(CCM_PLL5_CTRL_K_X(3));
+               reg_val |= CCM_PLL5_CTRL_N(CCM_PLL5_CTRL_N_X(11));
+               reg_val |= CCM_PLL5_CTRL_P(1);
+       } else  {
+               /* any other frequency that is a multiple of 24 */
+               reg_val |= CCM_PLL5_CTRL_M(CCM_PLL5_CTRL_M_X(2));
+               reg_val |= CCM_PLL5_CTRL_K(CCM_PLL5_CTRL_K_X(2));
+               reg_val |= CCM_PLL5_CTRL_N(CCM_PLL5_CTRL_N_X(clk / 24));
+               reg_val |= CCM_PLL5_CTRL_P(CCM_PLL5_CTRL_P_X(2));
+       }
+       reg_val &= ~CCM_PLL5_CTRL_VCO_GAIN;             /* PLL VCO Gain off */
+       reg_val |= CCM_PLL5_CTRL_EN;                    /* PLL On */
+       writel(reg_val, &ccm->pll5_cfg);
+       udelay(5500);
+
+       setbits_le32(&ccm->pll5_cfg, CCM_PLL5_CTRL_DDR_CLK);
+
+#if defined(CONFIG_SUN4I) || defined(CONFIG_SUN7I)
+       /* reset GPS */
+       clrbits_le32(&ccm->gps_clk_cfg, CCM_GPS_CTRL_RESET | CCM_GPS_CTRL_GATE);
+       setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_GPS);
+       udelay(1);
+       clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_GPS);
+#endif
+
+       /* setup MBUS clock */
+       reg_val = CCM_MBUS_CTRL_GATE |
+                 CCM_MBUS_CTRL_CLK_SRC(CCM_MBUS_CTRL_CLK_SRC_PLL6) |
+                 CCM_MBUS_CTRL_N(CCM_MBUS_CTRL_N_X(2)) |
+                 CCM_MBUS_CTRL_M(CCM_MBUS_CTRL_M_X(2));
+       writel(reg_val, &ccm->mbus_clk_cfg);
+
+       /*
+        * open DRAMC AHB & DLL register clock
+        * close it first
+        */
+       clrbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM | CCM_AHB_GATE_DLL);
+       udelay(22);
+
+       /* then open it */
+       setbits_le32(&ccm->ahb_gate0, CCM_AHB_GATE_SDRAM | CCM_AHB_GATE_DLL);
+       udelay(22);
+}
+
+static int dramc_scan_readpipe(void)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+       u32 reg_val;
+
+       /* data training trigger */
+#ifdef CONFIG_SUN7I
+       clrbits_le32(&dram->csr, DRAM_CSR_FAILED);
+#endif
+       setbits_le32(&dram->ccr, DRAM_CCR_DATA_TRAINING);
+
+       /* check whether data training process has completed */
+       await_completion(&dram->ccr, DRAM_CCR_DATA_TRAINING);
+
+       /* check data training result */
+       reg_val = readl(&dram->csr);
+       if (reg_val & DRAM_CSR_FAILED)
+               return -1;
+
+       return 0;
+}
+
+static int dramc_scan_dll_para(void)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+       const u32 dqs_dly[7] = {0x3, 0x2, 0x1, 0x0, 0xe, 0xd, 0xc};
+       const u32 clk_dly[15] = {0x07, 0x06, 0x05, 0x04, 0x03,
+                                0x02, 0x01, 0x00, 0x08, 0x10,
+                                0x18, 0x20, 0x28, 0x30, 0x38};
+       u32 clk_dqs_count[15];
+       u32 dqs_i, clk_i, cr_i;
+       u32 max_val, min_val;
+       u32 dqs_index, clk_index;
+
+       /* Find DQS_DLY Pass Count for every CLK_DLY */
+       for (clk_i = 0; clk_i < 15; clk_i++) {
+               clk_dqs_count[clk_i] = 0;
+               clrsetbits_le32(&dram->dllcr[0], 0x3f << 6,
+                               (clk_dly[clk_i] & 0x3f) << 6);
+               for (dqs_i = 0; dqs_i < 7; dqs_i++) {
+                       for (cr_i = 1; cr_i < 5; cr_i++) {
+                               clrsetbits_le32(&dram->dllcr[cr_i],
+                                               0x4f << 14,
+                                               (dqs_dly[dqs_i] & 0x4f) << 14);
+                       }
+                       udelay(2);
+                       if (dramc_scan_readpipe() == 0)
+                               clk_dqs_count[clk_i]++;
+               }
+       }
+       /* Test DQS_DLY Pass Count for every CLK_DLY from up to down */
+       for (dqs_i = 15; dqs_i > 0; dqs_i--) {
+               max_val = 15;
+               min_val = 15;
+               for (clk_i = 0; clk_i < 15; clk_i++) {
+                       if (clk_dqs_count[clk_i] == dqs_i) {
+                               max_val = clk_i;
+                               if (min_val == 15)
+                                       min_val = clk_i;
+                       }
+               }
+               if (max_val < 15)
+                       break;
+       }
+
+       /* Check if Find a CLK_DLY failed */
+       if (!dqs_i)
+               goto fail;
+
+       /* Find the middle index of CLK_DLY */
+       clk_index = (max_val + min_val) >> 1;
+       if ((max_val == (15 - 1)) && (min_val > 0))
+               /* if CLK_DLY[MCTL_CLK_DLY_COUNT] is very good, then the middle
+                * value can be more close to the max_val
+                */
+               clk_index = (15 + clk_index) >> 1;
+       else if ((max_val < (15 - 1)) && (min_val == 0))
+               /* if CLK_DLY[0] is very good, then the middle value can be more
+                * close to the min_val
+                */
+               clk_index >>= 1;
+       if (clk_dqs_count[clk_index] < dqs_i)
+               clk_index = min_val;
+
+       /* Find the middle index of DQS_DLY for the CLK_DLY got above, and Scan
+        * read pipe again
+        */
+       clrsetbits_le32(&dram->dllcr[0], 0x3f << 6,
+                       (clk_dly[clk_index] & 0x3f) << 6);
+       max_val = 7;
+       min_val = 7;
+       for (dqs_i = 0; dqs_i < 7; dqs_i++) {
+               clk_dqs_count[dqs_i] = 0;
+               for (cr_i = 1; cr_i < 5; cr_i++) {
+                       clrsetbits_le32(&dram->dllcr[cr_i],
+                                       0x4f << 14,
+                                       (dqs_dly[dqs_i] & 0x4f) << 14);
+               }
+               udelay(2);
+               if (dramc_scan_readpipe() == 0) {
+                       clk_dqs_count[dqs_i] = 1;
+                       max_val = dqs_i;
+                       if (min_val == 7)
+                               min_val = dqs_i;
+               }
+       }
+
+       if (max_val < 7) {
+               dqs_index = (max_val + min_val) >> 1;
+               if ((max_val == (7-1)) && (min_val > 0))
+                       dqs_index = (7 + dqs_index) >> 1;
+               else if ((max_val < (7-1)) && (min_val == 0))
+                       dqs_index >>= 1;
+               if (!clk_dqs_count[dqs_index])
+                       dqs_index = min_val;
+               for (cr_i = 1; cr_i < 5; cr_i++) {
+                       clrsetbits_le32(&dram->dllcr[cr_i],
+                                       0x4f << 14,
+                                       (dqs_dly[dqs_index] & 0x4f) << 14);
+               }
+               udelay(2);
+               return dramc_scan_readpipe();
+       }
+
+fail:
+       clrbits_le32(&dram->dllcr[0], 0x3f << 6);
+       for (cr_i = 1; cr_i < 5; cr_i++)
+               clrbits_le32(&dram->dllcr[cr_i], 0x4f << 14);
+       udelay(2);
+
+       return dramc_scan_readpipe();
+}
+
+static void dramc_clock_output_en(u32 on)
+{
+#if defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+
+       if (on)
+               setbits_le32(&dram->mcr, DRAM_MCR_DCLK_OUT);
+       else
+               clrbits_le32(&dram->mcr, DRAM_MCR_DCLK_OUT);
+#endif
+}
+
+static const u16 tRFC_table[2][6] = {
+       /*       256Mb    512Mb    1Gb      2Gb      4Gb      8Gb      */
+       /* DDR2  75ns     105ns    127.5ns  195ns    327.5ns  invalid  */
+       {        77,      108,     131,     200,     336,     336 },
+       /* DDR3  invalid  90ns     110ns    160ns    300ns    350ns    */
+       {        93,      93,      113,     164,     308,     359 }
+};
+
+static void dramc_set_autorefresh_cycle(u32 clk, u32 type, u32 density)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+       u32 tRFC, tREFI;
+
+       tRFC = (tRFC_table[type][density] * clk + 1023) >> 10;
+       tREFI = (7987 * clk) >> 10;     /* <= 7.8us */
+
+       writel(DRAM_DRR_TREFI(tREFI) | DRAM_DRR_TRFC(tRFC), &dram->drr);
+}
+
+unsigned long dramc_init(struct dram_para *para)
+{
+       struct sunxi_dram_reg *dram = (struct sunxi_dram_reg *)SUNXI_DRAMC_BASE;
+       u32 reg_val;
+       u32 density;
+       int ret_val;
+
+       /* check input dram parameter structure */
+       if (!para)
+               return 0;
+
+       /* setup DRAM relative clock */
+       mctl_setup_dram_clock(para->clock);
+
+       /* reset external DRAM */
+       mctl_set_drive();
+
+       /* dram clock off */
+       dramc_clock_output_en(0);
+
+       mctl_itm_disable();
+       mctl_enable_dll0(para->tpr3);
+
+       /* configure external DRAM */
+       reg_val = 0x0;
+       if (para->type == DRAM_MEMORY_TYPE_DDR3)
+               reg_val |= DRAM_DCR_TYPE_DDR3;
+       reg_val |= DRAM_DCR_IO_WIDTH(para->io_width >> 3);
+
+       if (para->density == 256)
+               density = DRAM_DCR_CHIP_DENSITY_256M;
+       else if (para->density == 512)
+               density = DRAM_DCR_CHIP_DENSITY_512M;
+       else if (para->density == 1024)
+               density = DRAM_DCR_CHIP_DENSITY_1024M;
+       else if (para->density == 2048)
+               density = DRAM_DCR_CHIP_DENSITY_2048M;
+       else if (para->density == 4096)
+               density = DRAM_DCR_CHIP_DENSITY_4096M;
+       else if (para->density == 8192)
+               density = DRAM_DCR_CHIP_DENSITY_8192M;
+       else
+               density = DRAM_DCR_CHIP_DENSITY_256M;
+
+       reg_val |= DRAM_DCR_CHIP_DENSITY(density);
+       reg_val |= DRAM_DCR_BUS_WIDTH((para->bus_width >> 3) - 1);
+       reg_val |= DRAM_DCR_RANK_SEL(para->rank_num - 1);
+       reg_val |= DRAM_DCR_CMD_RANK_ALL;
+       reg_val |= DRAM_DCR_MODE(DRAM_DCR_MODE_INTERLEAVE);
+       writel(reg_val, &dram->dcr);
+
+#ifdef CONFIG_SUN7I
+       setbits_le32(&dram->zqcr1, (0x1 << 24) | (0x1 << 1));
+       if (para->tpr4 & 0x2)
+               clrsetbits_le32(&dram->zqcr1, (0x1 << 24), (0x1 << 1));
+       dramc_clock_output_en(1);
+#endif
+
+#if (defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I))
+       /* set odt impendance divide ratio */
+       reg_val = ((para->zq) >> 8) & 0xfffff;
+       reg_val |= ((para->zq) & 0xff) << 20;
+       reg_val |= (para->zq) & 0xf0000000;
+       writel(reg_val, &dram->zqcr0);
+#endif
+
+#ifdef CONFIG_SUN7I
+       /* Set CKE Delay to about 1ms */
+       setbits_le32(&dram->idcr, 0x1ffff);
+#endif
+
+#ifdef CONFIG_SUN7I
+       if ((readl(&dram->ppwrsctl) & 0x1) != 0x1)
+               mctl_ddr3_reset();
+       else
+               setbits_le32(&dram->mcr, DRAM_MCR_RESET);
+#endif
+
+       udelay(1);
+
+       await_completion(&dram->ccr, DRAM_CCR_INIT);
+
+       mctl_enable_dllx(para->tpr3);
+
+       /* set refresh period */
+       dramc_set_autorefresh_cycle(para->clock, para->type - 2, density);
+
+       /* set timing parameters */
+       writel(para->tpr0, &dram->tpr0);
+       writel(para->tpr1, &dram->tpr1);
+       writel(para->tpr2, &dram->tpr2);
+
+       if (para->type == DRAM_MEMORY_TYPE_DDR3) {
+               reg_val = DRAM_MR_BURST_LENGTH(0x0);
+#if (defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I))
+               reg_val |= DRAM_MR_POWER_DOWN;
+#endif
+               reg_val |= DRAM_MR_CAS_LAT(para->cas - 4);
+               reg_val |= DRAM_MR_WRITE_RECOVERY(0x5);
+       } else if (para->type == DRAM_MEMORY_TYPE_DDR2) {
+               reg_val = DRAM_MR_BURST_LENGTH(0x2);
+               reg_val |= DRAM_MR_CAS_LAT(para->cas);
+               reg_val |= DRAM_MR_WRITE_RECOVERY(0x5);
+       }
+       writel(reg_val, &dram->mr);
+
+       writel(para->emr1, &dram->emr);
+       writel(para->emr2, &dram->emr2);
+       writel(para->emr3, &dram->emr3);
+
+       /* set DQS window mode */
+       clrsetbits_le32(&dram->ccr, DRAM_CCR_DQS_DRIFT_COMP, DRAM_CCR_DQS_GATE);
+
+#ifdef CONFIG_SUN7I
+       /* Command rate timing mode 2T & 1T */
+       if (para->tpr4 & 0x1)
+               setbits_le32(&dram->ccr, DRAM_CCR_COMMAND_RATE_1T);
+#endif
+       /* reset external DRAM */
+       setbits_le32(&dram->ccr, DRAM_CCR_INIT);
+       await_completion(&dram->ccr, DRAM_CCR_INIT);
+
+#ifdef CONFIG_SUN7I
+       /* setup zq calibration manual */
+       reg_val = readl(&dram->ppwrsctl);
+       if ((reg_val & 0x1) == 1) {
+               /* super_standby_flag = 1 */
+
+               reg_val = readl(0x01c20c00 + 0x120); /* rtc */
+               reg_val &= 0x000fffff;
+               reg_val |= 0x17b00000;
+               writel(reg_val, &dram->zqcr0);
+
+               /* exit self-refresh state */
+               clrsetbits_le32(&dram->dcr, 0x1f << 27, 0x12 << 27);
+               /* check whether command has been executed */
+               await_completion(&dram->dcr, 0x1 << 31);
+
+               udelay(2);
+
+               /* dram pad hold off */
+               setbits_le32(&dram->ppwrsctl, 0x16510000);
+
+               await_completion(&dram->ppwrsctl, 0x1);
+
+               /* exit self-refresh state */
+               clrsetbits_le32(&dram->dcr, 0x1f << 27, 0x12 << 27);
+
+               /* check whether command has been executed */
+               await_completion(&dram->dcr, 0x1 << 31);
+
+               udelay(2);
+
+               /* issue a refresh command */
+               clrsetbits_le32(&dram->dcr, 0x1f << 27, 0x13 << 27);
+               await_completion(&dram->dcr, 0x1 << 31);
+
+               udelay(2);
+       }
+#endif
+
+       /* scan read pipe value */
+       mctl_itm_enable();
+       if (para->tpr3 & (0x1 << 31)) {
+               ret_val = dramc_scan_dll_para();
+               if (ret_val == 0)
+                       para->tpr3 =
+                               (((readl(&dram->dllcr[0]) >> 6) & 0x3f) << 16) |
+                               (((readl(&dram->dllcr[1]) >> 14) & 0xf) << 0) |
+                               (((readl(&dram->dllcr[2]) >> 14) & 0xf) << 4) |
+                               (((readl(&dram->dllcr[3]) >> 14) & 0xf) << 8) |
+                               (((readl(&dram->dllcr[4]) >> 14) & 0xf) << 12
+                               );
+       } else {
+               ret_val = dramc_scan_readpipe();
+       }
+
+       if (ret_val < 0)
+               return 0;
+
+       /* configure all host port */
+       mctl_configure_hostport();
+
+       return get_ram_size((long *)PHYS_SDRAM_0, PHYS_SDRAM_0_SIZE);
+}
diff --git a/arch/arm/cpu/armv7/sunxi/pinmux.c b/arch/arm/cpu/armv7/sunxi/pinmux.c
new file mode 100644 (file)
index 0000000..1f2843f
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/gpio.h>
+
+int sunxi_gpio_set_cfgpin(u32 pin, u32 val)
+{
+       u32 bank = GPIO_BANK(pin);
+       u32 index = GPIO_CFG_INDEX(pin);
+       u32 offset = GPIO_CFG_OFFSET(pin);
+       struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+       clrsetbits_le32(&pio->cfg[0] + index, 0xf << offset, val << offset);
+
+       return 0;
+}
+
+int sunxi_gpio_get_cfgpin(u32 pin)
+{
+       u32 cfg;
+       u32 bank = GPIO_BANK(pin);
+       u32 index = GPIO_CFG_INDEX(pin);
+       u32 offset = GPIO_CFG_OFFSET(pin);
+       struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+       cfg = readl(&pio->cfg[0] + index);
+       cfg >>= offset;
+
+       return cfg & 0xf;
+}
+
+int sunxi_gpio_set_drv(u32 pin, u32 val)
+{
+       u32 bank = GPIO_BANK(pin);
+       u32 index = GPIO_DRV_INDEX(pin);
+       u32 offset = GPIO_DRV_OFFSET(pin);
+       struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+       clrsetbits_le32(&pio->drv[0] + index, 0x3 << offset, val << offset);
+
+       return 0;
+}
+
+int sunxi_gpio_set_pull(u32 pin, u32 val)
+{
+       u32 bank = GPIO_BANK(pin);
+       u32 index = GPIO_PULL_INDEX(pin);
+       u32 offset = GPIO_PULL_OFFSET(pin);
+       struct sunxi_gpio *pio = BANK_TO_GPIO(bank);
+
+       clrsetbits_le32(&pio->pull[0] + index, 0x3 << offset, val << offset);
+
+       return 0;
+}
diff --git a/arch/arm/cpu/armv7/sunxi/start.c b/arch/arm/cpu/armv7/sunxi/start.c
new file mode 100644 (file)
index 0000000..6b392fa
--- /dev/null
@@ -0,0 +1 @@
+/* Intentionally empty. Only needed to get FEL SPL link line right */
diff --git a/arch/arm/cpu/armv7/sunxi/timer.c b/arch/arm/cpu/armv7/sunxi/timer.c
new file mode 100644 (file)
index 0000000..3626389
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/timer.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define TIMER_MODE   (0x0 << 7)        /* continuous mode */
+#define TIMER_DIV    (0x0 << 4)        /* pre scale 1 */
+#define TIMER_SRC    (0x1 << 2)        /* osc24m */
+#define TIMER_RELOAD (0x1 << 1)        /* reload internal value */
+#define TIMER_EN     (0x1 << 0)        /* enable timer */
+
+#define TIMER_CLOCK            (24 * 1000 * 1000)
+#define COUNT_TO_USEC(x)       ((x) / 24)
+#define USEC_TO_COUNT(x)       ((x) * 24)
+#define TICKS_PER_HZ           (TIMER_CLOCK / CONFIG_SYS_HZ)
+#define TICKS_TO_HZ(x)         ((x) / TICKS_PER_HZ)
+
+#define TIMER_LOAD_VAL         0xffffffff
+
+#define TIMER_NUM              0       /* we use timer 0 */
+
+/* read the 32-bit timer */
+static ulong read_timer(void)
+{
+       struct sunxi_timer_reg *timers =
+               (struct sunxi_timer_reg *)SUNXI_TIMER_BASE;
+       struct sunxi_timer *timer = &timers->timer[TIMER_NUM];
+
+       /*
+        * The hardware timer counts down, therefore we invert to
+        * produce an incrementing timer.
+        */
+       return ~readl(&timer->val);
+}
+
+/* init timer register */
+int timer_init(void)
+{
+       struct sunxi_timer_reg *timers =
+               (struct sunxi_timer_reg *)SUNXI_TIMER_BASE;
+       struct sunxi_timer *timer = &timers->timer[TIMER_NUM];
+       writel(TIMER_LOAD_VAL, &timer->inter);
+       writel(TIMER_MODE | TIMER_DIV | TIMER_SRC | TIMER_RELOAD | TIMER_EN,
+              &timer->ctl);
+
+       return 0;
+}
+
+/* timer without interrupts */
+ulong get_timer(ulong base)
+{
+       return get_timer_masked() - base;
+}
+
+ulong get_timer_masked(void)
+{
+       /* current tick value */
+       ulong now = TICKS_TO_HZ(read_timer());
+
+       if (now >= gd->arch.lastinc)    /* normal (non rollover) */
+               gd->arch.tbl += (now - gd->arch.lastinc);
+       else {
+               /* rollover */
+               gd->arch.tbl += (TICKS_TO_HZ(TIMER_LOAD_VAL)
+                               - gd->arch.lastinc) + now;
+       }
+       gd->arch.lastinc = now;
+
+       return gd->arch.tbl;
+}
+
+/* delay x useconds */
+void __udelay(unsigned long usec)
+{
+       long tmo = USEC_TO_COUNT(usec);
+       ulong now, last = read_timer();
+
+       while (tmo > 0) {
+               now = read_timer();
+               if (now > last) /* normal (non rollover) */
+                       tmo -= now - last;
+               else            /* rollover */
+                       tmo -= TIMER_LOAD_VAL - last + now;
+               last = now;
+       }
+}
+
+/*
+ * This function is derived from PowerPC code (read timebase as long long).
+ * On ARM it just returns the timer value.
+ */
+unsigned long long get_ticks(void)
+{
+       return get_timer(0);
+}
+
+/*
+ * This function is derived from PowerPC code (timebase clock frequency).
+ * On ARM it returns the number of timer ticks per second.
+ */
+ulong get_tbclk(void)
+{
+       return CONFIG_SYS_HZ;
+}
diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
new file mode 100644 (file)
index 0000000..364e35c
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * (C) Copyright 2013
+ * Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(s_init)
+SECTIONS
+{
+       . = 0x00002000;
+
+       . = ALIGN(4);
+       .text :
+       {
+               *(.text.s_init)
+               *(.text*)
+       }
+
+       . = ALIGN(4);
+       .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+
+       . = ALIGN(4);
+       .data : {
+               *(.data*)
+       }
+
+       . = ALIGN(4);
+       . = .;
+
+       . = ALIGN(4);
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+
+       . = ALIGN(4);
+       .note.gnu.build-id :
+       {
+               *(.note.gnu.build-id)
+       }
+       _end = .;
+
+       . = ALIGN(4096);
+       .mmutable : {
+               *(.mmutable)
+       }
+
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+               __bss_base = .;
+       }
+
+       .bss __bss_base (OVERLAY) : {
+               *(.bss*)
+               . = ALIGN(4);
+               __bss_limit = .;
+       }
+
+       .bss_end __bss_limit (OVERLAY) : {
+               KEEP(*(.__bss_end));
+       }
+
+       /DISCARD/ : { *(.dynstr*) }
+       /DISCARD/ : { *(.dynamic*) }
+       /DISCARD/ : { *(.plt*) }
+       /DISCARD/ : { *(.interp*) }
+       /DISCARD/ : { *(.gnu*) }
+       /DISCARD/ : { *(.note*) }
+}
diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds
new file mode 100644 (file)
index 0000000..5008028
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * (C) Copyright 2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Based on omap-common/u-boot-spl.lds:
+ *
+ * (C) Copyright 2002
+ * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
+ *
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *     Aneesh V <aneesh@ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
+               LENGTH = CONFIG_SPL_MAX_SIZE }
+MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
+               LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+       .text      :
+       {
+               __start = .;
+               arch/arm/cpu/armv7/start.o      (.text)
+               *(.text*)
+       } > .sram
+
+       . = ALIGN(4);
+       .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
+
+       . = ALIGN(4);
+       .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+       . = ALIGN(4);
+       __image_copy_end = .;
+       _end = .;
+
+       .bss :
+       {
+               . = ALIGN(4);
+               __bss_start = .;
+               *(.bss*)
+               . = ALIGN(4);
+               __bss_end = .;
+       } > .sdram
+}
index 7626b5c1a3b5e85a18e8560b438cf67ad1ce75b6..816d0c5da7a5c69104c5458939bf799256e04229 100644 (file)
@@ -14,6 +14,9 @@ void lowlevel_init(void)
 {
 }
 
+#define ZYNQ_SILICON_VER_MASK  0xF0000000
+#define ZYNQ_SILICON_VER_SHIFT 28
+
 int arch_cpu_init(void)
 {
        zynq_slcr_unlock();
@@ -42,6 +45,16 @@ int arch_cpu_init(void)
        return 0;
 }
 
+unsigned int zynq_get_silicon_version(void)
+{
+       unsigned int ver;
+
+       ver = (readl(&devcfg_base->mctrl) &
+              ZYNQ_SILICON_VER_MASK) >> ZYNQ_SILICON_VER_SHIFT;
+
+       return ver;
+}
+
 void reset_cpu(ulong addr)
 {
        zynq_slcr_cpu_reset();
index ba6a6aee5cbf57d434d47914d2b9277d2a269960..e0ed3bfb43506fb836841191ad9fa640763920e0 100644 (file)
@@ -40,11 +40,8 @@ void zynq_ddrc_init(void)
                 * first stage bootloader. To get ECC to work all memory has
                 * been initialized by writing any value.
                 */
-               memset(0, 0, 1 * 1024 * 1024);
+               memset((void *)0, 0, 1 * 1024 * 1024);
        } else {
                puts("Memory: ECC disabled\n");
        }
-
-       if (width == ZYNQ_DDRC_CTRLREG_BUSWIDTH_16BIT)
-               gd->ram_size /= 2;
 }
index d7c18823322048f7c74764ab528a04a6c34b5c73..934ccc31c86fd80723afa6c89be03c5651600cb9 100644 (file)
@@ -8,26 +8,75 @@
 #include <asm/io.h>
 #include <malloc.h>
 #include <asm/arch/hardware.h>
+#include <asm/arch/sys_proto.h>
 #include <asm/arch/clk.h>
 
 #define SLCR_LOCK_MAGIC                0x767B
 #define SLCR_UNLOCK_MAGIC      0xDF0D
 
+#define SLCR_USB_L1_SEL                        0x04
+
 #define SLCR_IDCODE_MASK       0x1F000
 #define SLCR_IDCODE_SHIFT      12
 
+/*
+ * zynq_slcr_mio_get_status - Get the status of MIO peripheral.
+ *
+ * @peri_name: Name of the peripheral for checking MIO status
+ * @get_pins: Pointer to array of get pin for this peripheral
+ * @num_pins: Number of pins for this peripheral
+ * @mask: Mask value
+ * @check_val: Required check value to get the status of  periph
+ */
+struct zynq_slcr_mio_get_status {
+       const char *peri_name;
+       const int *get_pins;
+       int num_pins;
+       u32 mask;
+       u32 check_val;
+};
+
+static const int usb0_pins[] = {
+       28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
+};
+
+static const int usb1_pins[] = {
+       40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
+};
+
+static const struct zynq_slcr_mio_get_status mio_periphs[] = {
+       {
+               "usb0",
+               usb0_pins,
+               ARRAY_SIZE(usb0_pins),
+               SLCR_USB_L1_SEL,
+               SLCR_USB_L1_SEL,
+       },
+       {
+               "usb1",
+               usb1_pins,
+               ARRAY_SIZE(usb1_pins),
+               SLCR_USB_L1_SEL,
+               SLCR_USB_L1_SEL,
+       },
+};
+
 static int slcr_lock = 1; /* 1 means locked, 0 means unlocked */
 
 void zynq_slcr_lock(void)
 {
-       if (!slcr_lock)
+       if (!slcr_lock) {
                writel(SLCR_LOCK_MAGIC, &slcr_base->slcr_lock);
+               slcr_lock = 1;
+       }
 }
 
 void zynq_slcr_unlock(void)
 {
-       if (slcr_lock)
+       if (slcr_lock) {
                writel(SLCR_UNLOCK_MAGIC, &slcr_base->slcr_unlock);
+               slcr_lock = 0;
+       }
 }
 
 /* Reset the entire system */
@@ -82,7 +131,7 @@ void zynq_slcr_devcfg_disable(void)
 {
        zynq_slcr_unlock();
 
-       /* Disable AXI interface */
+       /* Disable AXI interface by asserting FPGA resets */
        writel(0xFFFFFFFF, &slcr_base->fpga_rst_ctrl);
 
        /* Set Level Shifters DT618760 */
@@ -98,7 +147,7 @@ void zynq_slcr_devcfg_enable(void)
        /* Set Level Shifters DT618760 */
        writel(0xF, &slcr_base->lvl_shftr_en);
 
-       /* Disable AXI interface */
+       /* Enable AXI interface by de-asserting FPGA resets */
        writel(0x0, &slcr_base->fpga_rst_ctrl);
 
        zynq_slcr_lock();
@@ -115,3 +164,33 @@ u32 zynq_slcr_get_idcode(void)
        return (readl(&slcr_base->pss_idcode) & SLCR_IDCODE_MASK) >>
                                                        SLCR_IDCODE_SHIFT;
 }
+
+/*
+ * zynq_slcr_get_mio_pin_status - Get the MIO pin status of peripheral.
+ *
+ * @periph: Name of the peripheral
+ *
+ * Returns count to indicate the number of pins configured for the
+ * given @periph.
+ */
+int zynq_slcr_get_mio_pin_status(const char *periph)
+{
+       const struct zynq_slcr_mio_get_status *mio_ptr;
+       int val, i, j;
+       int mio = 0;
+
+       for (i = 0; i < ARRAY_SIZE(mio_periphs); i++) {
+               if (strcmp(periph, mio_periphs[i].peri_name) == 0) {
+                       mio_ptr = &mio_periphs[i];
+                       for (j = 0; j < mio_ptr->num_pins; j++) {
+                               val = readl(&slcr_base->mio_pin
+                                               [mio_ptr->get_pins[j]]);
+                               if ((val & mio_ptr->mask) == mio_ptr->check_val)
+                                       mio++;
+                       }
+                       break;
+               }
+       }
+
+       return mio;
+}
index fcad762c030644d3d004cebbbdba9670a9b638a4..d73e5cbaa745a23c74b511fa866d3e51096f4db6 100644 (file)
@@ -28,6 +28,13 @@ void board_init_f(ulong dummy)
        board_init_r(NULL, 0);
 }
 
+#ifdef CONFIG_SPL_BOARD_INIT
+void spl_board_init(void)
+{
+       board_init();
+}
+#endif
+
 u32 spl_boot_device(void)
 {
        u32 mode;
@@ -67,3 +74,11 @@ int spl_start_uboot(void)
        return 0;
 }
 #endif
+
+__weak void ps7_init(void)
+{
+       /*
+        * This function is overridden by the one in
+        * board/xilinx/zynq/ps7_init.c, if it exists.
+        */
+}
index 33d3f3688ae83bc45f13a79e12c84a0848d20d05..4b11aa4f22272cfa1766b0482ff8b1797e15db6e 100644 (file)
@@ -50,10 +50,10 @@ reset:
         */
        adr     x0, vectors
        switch_el x1, 3f, 2f, 1f
-3:     mrs     x0, scr_el3
+3:     msr     vbar_el3, x0
+       mrs     x0, scr_el3
        orr     x0, x0, #0xf                    /* SCR_EL3.NS|IRQ|FIQ|EA */
        msr     scr_el3, x0
-       msr     vbar_el3, x0
        msr     cptr_el3, xzr                   /* Enable FP/SIMD */
        ldr     x0, =COUNTER_FREQUENCY
        msr     cntfrq_el0, x0                  /* Initialize CNTFRQ */
index 7f4debb912597d5a251cfa095b0309497b2528b0..cbb5a529da2b520fb841e8cc77f2357606abeb3b 100644 (file)
@@ -20,6 +20,43 @@ static void at91_disable_wdt(void)
        writel(AT91_WDT_MR_WDDIS, &wdt->mr);
 }
 
+static void switch_to_main_crystal_osc(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       u32 tmp;
+
+       tmp = readl(&pmc->mor);
+       tmp &= ~AT91_PMC_MOR_OSCOUNT(0xff);
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_MOSCEN;
+       tmp |= AT91_PMC_MOR_OSCOUNT(8);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+       while (!(readl(&pmc->sr) & AT91_PMC_IXR_MOSCS))
+               ;
+
+       tmp = readl(&pmc->mor);
+       tmp &= ~AT91_PMC_MOR_OSCBYPASS;
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+
+       tmp = readl(&pmc->mor);
+       tmp |= AT91_PMC_MOR_MOSCSEL;
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+
+       while (!(readl(&pmc->sr) & AT91_PMC_IXR_MOSCSELS))
+               ;
+
+       tmp = readl(&pmc->mor);
+       tmp &= ~AT91_PMC_MOR_MOSCRCEN;
+       tmp &= ~AT91_PMC_MOR_KEY(0xff);
+       tmp |= AT91_PMC_MOR_KEY(0x37);
+       writel(tmp, &pmc->mor);
+}
+
 void at91_plla_init(u32 pllar)
 {
        struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
@@ -76,6 +113,8 @@ u32 spl_boot_mode(void)
 
 void s_init(void)
 {
+       switch_to_main_crystal_osc();
+
        /* disable watchdog */
        at91_disable_wdt();
 
index a3c9c91f32149babfe6a57550e0684a315d0147a..7af2a88fd01d7946f1dbf942b3f2516121acaf87 100644 (file)
@@ -1,9 +1,9 @@
 /*
   + * Copyright 2012 Freescale Semiconductor, Inc.
   + * Copyright 2011 Linaro Ltd.
   + *
   + * SPDX-License-Identifier:     GPL-2.0+
   + */
+ * Copyright 2012 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
 
 /dts-v1/;
 
index f20b8bd604dd0d8cffcf59c3b80004b8e998780b..2d076f194e06035946f528a639a62a45fa3a648f 100644 (file)
 
 / {
        compatible = "xlnx,zynq-7000";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       compatible = "arm,cortex-a9";
+                       device_type = "cpu";
+                       reg = <0>;
+                       clocks = <&clkc 3>;
+                       clock-latency = <1000>;
+                       operating-points = <
+                               /* kHz    uV */
+                               666667  1000000
+                               333334  1000000
+                               222223  1000000
+                       >;
+               };
+
+               cpu@1 {
+                       compatible = "arm,cortex-a9";
+                       device_type = "cpu";
+                       reg = <1>;
+                       clocks = <&clkc 3>;
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a9-pmu";
+               interrupts = <0 5 4>, <0 6 4>;
+               interrupt-parent = <&intc>;
+               reg = < 0xf8891000 0x1000 0xf8893000 0x1000 >;
+       };
+
+       amba {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               interrupt-parent = <&intc>;
+               ranges;
+
+               i2c0: zynq-i2c@e0004000 {
+                       compatible = "cdns,i2c-r1p10";
+                       status = "disabled";
+                       clocks = <&clkc 38>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <0 25 4>;
+                       reg = <0xe0004000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c1: zynq-i2c@e0005000 {
+                       compatible = "cdns,i2c-r1p10";
+                       status = "disabled";
+                       clocks = <&clkc 39>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <0 48 4>;
+                       reg = <0xe0005000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               intc: interrupt-controller@f8f01000 {
+                       compatible = "arm,cortex-a9-gic";
+                       #interrupt-cells = <3>;
+                       #address-cells = <1>;
+                       interrupt-controller;
+                       reg = <0xF8F01000 0x1000>,
+                             <0xF8F00100 0x100>;
+               };
+
+               L2: cache-controller {
+                       compatible = "arm,pl310-cache";
+                       reg = <0xF8F02000 0x1000>;
+                       arm,data-latency = <3 2 2>;
+                       arm,tag-latency = <2 2 2>;
+                       cache-unified;
+                       cache-level = <2>;
+               };
+
+               uart0: uart@e0000000 {
+                       compatible = "xlnx,xuartps";
+                       status = "disabled";
+                       clocks = <&clkc 23>, <&clkc 40>;
+                       clock-names = "ref_clk", "aper_clk";
+                       reg = <0xE0000000 0x1000>;
+                       interrupts = <0 27 4>;
+               };
+
+               uart1: uart@e0001000 {
+                       compatible = "xlnx,xuartps";
+                       status = "disabled";
+                       clocks = <&clkc 24>, <&clkc 41>;
+                       clock-names = "ref_clk", "aper_clk";
+                       reg = <0xE0001000 0x1000>;
+                       interrupts = <0 50 4>;
+               };
+
+               gem0: ethernet@e000b000 {
+                       compatible = "cdns,gem";
+                       reg = <0xe000b000 0x4000>;
+                       status = "disabled";
+                       interrupts = <0 22 4>;
+                       clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
+                       clock-names = "pclk", "hclk", "tx_clk";
+               };
+
+               gem1: ethernet@e000c000 {
+                       compatible = "cdns,gem";
+                       reg = <0xe000c000 0x4000>;
+                       status = "disabled";
+                       interrupts = <0 45 4>;
+                       clocks = <&clkc 31>, <&clkc 31>, <&clkc 14>;
+                       clock-names = "pclk", "hclk", "tx_clk";
+               };
+
+               sdhci0: ps7-sdhci@e0100000 {
+                       compatible = "arasan,sdhci-8.9a";
+                       status = "disabled";
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&clkc 21>, <&clkc 32>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <0 24 4>;
+                       reg = <0xe0100000 0x1000>;
+               } ;
+
+               sdhci1: ps7-sdhci@e0101000 {
+                       compatible = "arasan,sdhci-8.9a";
+                       status = "disabled";
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&clkc 22>, <&clkc 33>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <0 47 4>;
+                       reg = <0xe0101000 0x1000>;
+               } ;
+
+               slcr: slcr@f8000000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "xlnx,zynq-slcr", "syscon";
+                       reg = <0xF8000000 0x1000>;
+                       ranges;
+                       clkc: clkc@100 {
+                               #clock-cells = <1>;
+                               compatible = "xlnx,ps7-clkc";
+                               ps-clk-frequency = <33333333>;
+                               fclk-enable = <0>;
+                               clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
+                                               "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
+                                               "dci", "lqspi", "smc", "pcap", "gem0", "gem1",
+                                               "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
+                                               "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
+                                               "dma", "usb0_aper", "usb1_aper", "gem0_aper",
+                                               "gem1_aper", "sdio0_aper", "sdio1_aper",
+                                               "spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
+                                               "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
+                                               "gpio_aper", "lqspi_aper", "smc_aper", "swdt",
+                                               "dbg_trc", "dbg_apb";
+                               reg = <0x100 0x100>;
+                       };
+               };
+
+               global_timer: timer@f8f00200 {
+                       compatible = "arm,cortex-a9-global-timer";
+                       reg = <0xf8f00200 0x20>;
+                       interrupts = <1 11 0x301>;
+                       interrupt-parent = <&intc>;
+                       clocks = <&clkc 4>;
+               };
+
+               ttc0: ttc0@f8001000 {
+                       interrupt-parent = <&intc>;
+                       interrupts = < 0 10 4 0 11 4 0 12 4 >;
+                       compatible = "cdns,ttc";
+                       clocks = <&clkc 6>;
+                       reg = <0xF8001000 0x1000>;
+               };
+
+               ttc1: ttc1@f8002000 {
+                       interrupt-parent = <&intc>;
+                       interrupts = < 0 37 4 0 38 4 0 39 4 >;
+                       compatible = "cdns,ttc";
+                       clocks = <&clkc 6>;
+                       reg = <0xF8002000 0x1000>;
+               };
+               scutimer: scutimer@f8f00600 {
+                       interrupt-parent = <&intc>;
+                       interrupts = < 1 13 0x301 >;
+                       compatible = "arm,cortex-a9-twd-timer";
+                       reg = < 0xf8f00600 0x20 >;
+                       clocks = <&clkc 4>;
+               } ;
+       };
 };
index 6da71c116d091c83caee054afe8fde3c1b283fc4..c373a2cc31d8feff275475fa3196922beb5f0edd 100644 (file)
 / {
        model = "Zynq MicroZED Board";
        compatible = "xlnx,zynq-microzed", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
 };
index 667dc2825632e2700c75b25c220cb4fd1f5932ca..4fa0b00b318bb45d07b2f7fd079e8f6a3442e48e 100644 (file)
 / {
        model = "Zynq ZC702 Board";
        compatible = "xlnx,zynq-zc702", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
 };
index 526fc8888ba976f45d16af6a571d17c958a43dd4..2a80195757db11e78812bda1944e01a096220821 100644 (file)
 / {
        model = "Zynq ZC706 Board";
        compatible = "xlnx,zynq-zc706", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
 };
index 8b542a109be3f08decdaf3f5691adbb700dea9dd..5e661749772b3b1ce235e3c1923c2fa71dd079b9 100644 (file)
 / {
        model = "Zynq ZC770 XM010 Board";
        compatible = "xlnx,zynq-zc770-xm010", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
 };
index 0379a070681edf660842a51dd6e8f8592631eacc..127a6619c6314d6b9c4ef3cac97e69713bd1a8be 100644 (file)
 / {
        model = "Zynq ZC770 XM012 Board";
        compatible = "xlnx,zynq-zc770-xm012", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
 };
index a4f9e05fc0ebb8082f179c23ee43f883acd876af..c61c7e7592f89d882551e2eaeaacb8295c72e9a1 100644 (file)
 / {
        model = "Zynq ZC770 XM013 Board";
        compatible = "xlnx,zynq-zc770-xm013", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
 };
index 91a5deba4a9f7059f56fa9dc1b6ecd72b526fffe..70cc8a6c0d75134c1fda1c701b0cea9c4eea85a8 100644 (file)
 / {
        model = "Zynq ZED Board";
        compatible = "xlnx,zynq-zed", "xlnx,zynq-7000";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x20000000>;
+       };
 };
index b04dfbbcb9594153440ed090cc8f5d469f7a8b19..0e713952dc4366476e5b555908fce9ce24388ae1 100644 (file)
@@ -19,6 +19,7 @@ obj-y += misc.o
 endif
 ifeq ($(SOC),$(filter $(SOC),mx6))
 obj-$(CONFIG_CMD_SATA) += sata.o
+obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o
 endif
 obj-$(CONFIG_CMD_BMODE) += cmd_bmode.o
 obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
index b59b802830677b240af7ce915394b41a8a1a1831..6e46ea8dcdeb0d762626faec9c8e3d649e9f9b17 100644 (file)
@@ -30,6 +30,14 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
                (pad & MUX_PAD_CTRL_OFS_MASK) >> MUX_PAD_CTRL_OFS_SHIFT;
        u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
 
+#if defined CONFIG_MX6SL
+       /* Check whether LVE bit needs to be set */
+       if (pad_ctrl & PAD_CTL_LVE) {
+               pad_ctrl &= ~PAD_CTL_LVE;
+               pad_ctrl |= PAD_CTL_LVE_BIT;
+       }
+#endif
+
        if (mux_ctrl_ofs)
                __raw_writel(mux_mode, base + mux_ctrl_ofs);
 
diff --git a/arch/arm/imx-common/video.c b/arch/arm/imx-common/video.c
new file mode 100644 (file)
index 0000000..0121cd7
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/imx-common/video.h>
+
+extern struct display_info_t const displays[];
+extern size_t display_count;
+
+int board_video_skip(void)
+{
+       int i;
+       int ret;
+       char const *panel = getenv("panel");
+       if (!panel) {
+               for (i = 0; i < display_count; i++) {
+                       struct display_info_t const *dev = displays+i;
+                       if (dev->detect && dev->detect(dev)) {
+                               panel = dev->mode.name;
+                               printf("auto-detected panel %s\n", panel);
+                               break;
+                       }
+               }
+               if (!panel) {
+                       panel = displays[0].mode.name;
+                       printf("No panel detected: default to %s\n", panel);
+                       i = 0;
+               }
+       } else {
+               for (i = 0; i < display_count; i++) {
+                       if (!strcmp(panel, displays[i].mode.name))
+                               break;
+               }
+       }
+       if (i < display_count) {
+               ret = ipuv3_fb_init(&displays[i].mode, 0,
+                                   displays[i].pixfmt);
+               if (!ret) {
+                       displays[i].enable(displays+i);
+                       printf("Display: %s (%ux%u)\n",
+                              displays[i].mode.name,
+                              displays[i].mode.xres,
+                              displays[i].mode.yres);
+               } else
+                       printf("LCD %s cannot be configured: %d\n",
+                              displays[i].mode.name, ret);
+       } else {
+               printf("unsupported panel %s\n", panel);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_IMX_HDMI
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/io.h>
+int detect_hdmi(struct display_info_t const *dev)
+{
+       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
+       return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
+}
+#endif
index 76374575496d598d6466750883f68693c19f2a4e..f00fad38fe4b5072d01a5535531df02aa3b6cf8b 100644 (file)
@@ -42,6 +42,8 @@
 #define MODULE_CLKCTRL_IDLEST_DISABLED         3
 
 /* CM_CLKMODE_DPLL */
+#define CM_CLKMODE_DPLL_SSC_EN_SHIFT           12
+#define CM_CLKMODE_DPLL_SSC_EN_MASK            (1 << 12)
 #define CM_CLKMODE_DPLL_REGM4XEN_SHIFT         11
 #define CM_CLKMODE_DPLL_REGM4XEN_MASK          (1 << 11)
 #define CM_CLKMODE_DPLL_LPMODE_EN_SHIFT                10
index 91ff2ad0e4cd49b3f86df6ba2be439e92387beb6..33a82fca98db67e3c89a5dba552b92d22dd89111 100644 (file)
@@ -11,6 +11,7 @@
 #ifndef _SYS_PROTO_H_
 #define _SYS_PROTO_H_
 #include <linux/mtd/omap_gpmc.h>
+#include <asm/ti-common/sys_proto.h>
 #include <asm/arch/cpu.h>
 
 #define BOARD_REV_ID   0x0
index 4535608434c0b3de54e16596bc4c9e85b60ea7c9..04f6239fd0b846da6acd5e5227c861b517a8a72e 100644 (file)
@@ -70,7 +70,10 @@ typedef struct at91_pmc {
 
 #define AT91_PMC_MOR_MOSCEN            0x01
 #define AT91_PMC_MOR_OSCBYPASS         0x02
+#define AT91_PMC_MOR_MOSCRCEN          0x08
 #define AT91_PMC_MOR_OSCOUNT(x)                ((x & 0xff) << 8)
+#define AT91_PMC_MOR_KEY(x)            ((x & 0xff) << 16)
+#define AT91_PMC_MOR_MOSCSEL           (1 << 24)
 
 #define AT91_PMC_PLLXR_DIV(x)          (x & 0xFF)
 #define AT91_PMC_PLLXR_PLLCOUNT(x)     ((x & 0x3F) << 8)
@@ -142,6 +145,7 @@ typedef struct at91_pmc {
 #define AT91_PMC_IXR_PCKRDY1           0x00000200
 #define AT91_PMC_IXR_PCKRDY2           0x00000400
 #define AT91_PMC_IXR_PCKRDY3           0x00000800
+#define AT91_PMC_IXR_MOSCSELS          0x00010000
 
 #define                AT91_PMC_PCK            (1 <<  0)               /* Processor Clock */
 #define                AT91RM9200_PMC_UDP      (1 <<  1)               /* USB Devcice Port Clock [AT91RM9200 only] */
index a47103851e48594c1a19b64d4d1a1ef2303a1e89..d49c18480dca68ac56c9eec2aa83ba549e7ee002 100644 (file)
@@ -12,6 +12,9 @@
 #ifndef __AT91SAM9X5_H__
 #define __AT91SAM9X5_H__
 
+#define CONFIG_ARM926EJS       /* ARM926EJS Core */
+#define CONFIG_AT91FAMILY      /* it's a member of AT91 family */
+
 /*
  * Peripheral identifiers/interrupts.
  */
index a63f97406020753baf0efd7ee936b747d9446bdf..d712a0dc9136c47f52eed8cbed253114163a7952 100644 (file)
@@ -25,8 +25,6 @@
 # include <asm/arch/at91sam9x5.h>
 #elif defined(CONFIG_AT91CAP9)
 # include <asm/arch/at91cap9.h>
-#elif defined(CONFIG_AT91X40)
-# include <asm/arch/at91x40.h>
 #elif defined(CONFIG_SAMA5D3)
 # include <asm/arch/sama5d3.h>
 #else
index a17f8283425e4ba36bc07af677a176eda661ea03..3dffa4a396bf9df10224b481ad0edc440bceecf7 100644 (file)
@@ -161,6 +161,126 @@ struct aips_regs {
        u32 mpr_0_7;
        u32 mpr_8_15;
 };
+/* LCD controller registers */
+struct lcdc_regs {
+       u32 lssar;      /* Screen Start Address */
+       u32 lsr;        /* Size */
+       u32 lvpwr;      /* Virtual Page Width */
+       u32 lcpr;       /* Cursor Position */
+       u32 lcwhb;      /* Cursor Width Height and Blink */
+       u32 lccmr;      /* Color Cursor Mapping */
+       u32 lpcr;       /* Panel Configuration */
+       u32 lhcr;       /* Horizontal Configuration */
+       u32 lvcr;       /* Vertical Configuration */
+       u32 lpor;       /* Panning Offset */
+       u32 lscr;       /* Sharp Configuration */
+       u32 lpccr;      /* PWM Contrast Control */
+       u32 ldcr;       /* DMA Control */
+       u32 lrmcr;      /* Refresh Mode Control */
+       u32 licr;       /* Interrupt Configuration */
+       u32 lier;       /* Interrupt Enable */
+       u32 lisr;       /* Interrupt Status */
+       u32 res0[3];
+       u32 lgwsar;     /* Graphic Window Start Address */
+       u32 lgwsr;      /* Graphic Window Size */
+       u32 lgwvpwr;    /* Graphic Window Virtual Page Width Regist */
+       u32 lgwpor;     /* Graphic Window Panning Offset */
+       u32 lgwpr;      /* Graphic Window Position */
+       u32 lgwcr;      /* Graphic Window Control */
+       u32 lgwdcr;     /* Graphic Window DMA Control */
+       u32 res1[5];
+       u32 lauscr;     /* AUS Mode Control */
+       u32 lausccr;    /* AUS mode Cursor Control */
+       u32 res2[31 + 64*7];
+       u32 bglut;      /* Background Lookup Table */
+       u32 gwlut;      /* Graphic Window Lookup Table */
+};
+
+/* Wireless External Interface Module Registers */
+struct weim_regs {
+       u32 cscr0u;     /* Chip Select 0 Upper Register */
+       u32 cscr0l;     /* Chip Select 0 Lower Register */
+       u32 cscr0a;     /* Chip Select 0 Addition Register */
+       u32 pad0;
+       u32 cscr1u;     /* Chip Select 1 Upper Register */
+       u32 cscr1l;     /* Chip Select 1 Lower Register */
+       u32 cscr1a;     /* Chip Select 1 Addition Register */
+       u32 pad1;
+       u32 cscr2u;     /* Chip Select 2 Upper Register */
+       u32 cscr2l;     /* Chip Select 2 Lower Register */
+       u32 cscr2a;     /* Chip Select 2 Addition Register */
+       u32 pad2;
+       u32 cscr3u;     /* Chip Select 3 Upper Register */
+       u32 cscr3l;     /* Chip Select 3 Lower Register */
+       u32 cscr3a;     /* Chip Select 3 Addition Register */
+       u32 pad3;
+       u32 cscr4u;     /* Chip Select 4 Upper Register */
+       u32 cscr4l;     /* Chip Select 4 Lower Register */
+       u32 cscr4a;     /* Chip Select 4 Addition Register */
+       u32 pad4;
+       u32 cscr5u;     /* Chip Select 5 Upper Register */
+       u32 cscr5l;     /* Chip Select 5 Lower Register */
+       u32 cscr5a;     /* Chip Select 5 Addition Register */
+       u32 pad5;
+       u32 wcr;        /* WEIM Configuration Register */
+};
+
+/* Multi-Master Memory Interface */
+struct m3if_regs {
+       u32 ctl;        /* Control Register */
+       u32 wcfg0;      /* Watermark Configuration Register 0 */
+       u32 wcfg1;      /* Watermark Configuration Register1 */
+       u32 wcfg2;      /* Watermark Configuration Register2 */
+       u32 wcfg3;      /* Watermark Configuration Register 3 */
+       u32 wcfg4;      /* Watermark Configuration Register 4 */
+       u32 wcfg5;      /* Watermark Configuration Register 5 */
+       u32 wcfg6;      /* Watermark Configuration Register 6 */
+       u32 wcfg7;      /* Watermark Configuration Register 7 */
+       u32 wcsr;       /* Watermark Control and Status Register */
+       u32 scfg0;      /* Snooping Configuration Register 0 */
+       u32 scfg1;      /* Snooping Configuration Register 1 */
+       u32 scfg2;      /* Snooping Configuration Register 2 */
+       u32 ssr0;       /* Snooping Status Register 0 */
+       u32 ssr1;       /* Snooping Status Register 1 */
+       u32 res0;
+       u32 mlwe0;      /* Master Lock WEIM CS0 Register */
+       u32 mlwe1;      /* Master Lock WEIM CS1 Register */
+       u32 mlwe2;      /* Master Lock WEIM CS2 Register */
+       u32 mlwe3;      /* Master Lock WEIM CS3 Register */
+       u32 mlwe4;      /* Master Lock WEIM CS4 Register */
+       u32 mlwe5;      /* Master Lock WEIM CS5 Register */
+};
+
+/* Pulse width modulation */
+struct pwm_regs {
+       u32 cr; /* Control Register */
+       u32 sr; /* Status Register */
+       u32 ir; /* Interrupt Register */
+       u32 sar;        /* Sample Register */
+       u32 pr; /* Period Register */
+       u32 cnr;        /* Counter Register */
+};
+
+/* Enhanced Periodic Interrupt Timer */
+struct epit_regs {
+       u32 cr; /* Control register */
+       u32 sr; /* Status register */
+       u32 lr; /* Load register */
+       u32 cmpr;       /* Compare register */
+       u32 cnr;        /* Counter register */
+};
+
+/* CSPI registers */
+struct cspi_regs {
+       u32 rxdata;
+       u32 txdata;
+       u32 ctrl;
+       u32 intr;
+       u32 dma;
+       u32 stat;
+       u32 period;
+       u32 test;
+};
 
 #endif
 
@@ -289,6 +409,8 @@ struct aips_regs {
 #define CCM_PERCLK_MASK                0x3f
 #define CCM_RCSR_NF_16BIT_SEL  (1 << 14)
 #define CCM_RCSR_NF_PS(v)      ((v >> 26) & 3)
+#define CCM_CRDR_BT_UART_SRC_SHIFT     29
+#define CCM_CRDR_BT_UART_SRC_MASK      7
 
 /* ESDRAM Controller register bitfields */
 #define ESDCTL_PRCT(x)         (((x) & 0x3f) << 0)
@@ -345,12 +467,65 @@ struct aips_regs {
 #define WSR_UNLOCK1            0x5555
 #define WSR_UNLOCK2            0xAAAA
 
+/* MAX bits */
+#define MAX_MGPCR_AULB(x)      (((x) & 0x7) << 0)
+
+/* M3IF bits */
+#define M3IF_CTL_MRRP(x)       (((x) & 0xff) << 0)
+
+/* WEIM bits */
+/* 13 fields of the upper CS control register */
+#define WEIM_CSCR_U(sp, wp, bcd, bcs, psz, pme, sync, dol, \
+               cnc, wsc, ew, wws, edc) \
+               ((sp) << 31 | (wp) << 30 | (bcd) << 28 | (bcs) << 24 | \
+               (psz) << 22 | (pme) << 21 | (sync) << 20 | (dol) << 16 | \
+               (cnc) << 14 | (wsc) << 8 | (ew) << 7 | (wws) << 4 | (edc) << 0)
+/* 12 fields of the lower CS control register */
+#define WEIM_CSCR_L(oea, oen, ebwa, ebwn, \
+               csa, ebc, dsz, csn, psr, cre, wrap, csen) \
+               ((oea) << 28 | (oen) << 24 | (ebwa) << 20 | (ebwn) << 16 |\
+               (csa) << 12 | (ebc) << 11 | (dsz) << 8 | (csn) << 4 |\
+               (psr) << 3 | (cre) << 2 | (wrap) << 1 | (csen) << 0)
+/* 14 fields of the additional CS control register */
+#define WEIM_CSCR_A(ebra, ebrn, rwa, rwn, mum, lah, lbn, lba, dww, dct, \
+               wwu, age, cnc2, fce) \
+               ((ebra) << 28 | (ebrn) << 24 | (rwa) << 20 | (rwn) << 16 |\
+               (mum) << 15 | (lah) << 13 | (lbn) << 10 | (lba) << 8 |\
+               (dww) << 6 | (dct) << 4 | (wwu) << 3 |\
+               (age) << 2 | (cnc2) << 1 | (fce) << 0)
+
 /* Names used in GPIO driver */
 #define GPIO1_BASE_ADDR                IMX_GPIO1_BASE
 #define GPIO2_BASE_ADDR                IMX_GPIO2_BASE
 #define GPIO3_BASE_ADDR                IMX_GPIO3_BASE
 #define GPIO4_BASE_ADDR                IMX_GPIO4_BASE
 
+/*
+ * CSPI register definitions
+ */
+#define MXC_CSPI
+#define MXC_CSPICTRL_EN                (1 << 0)
+#define MXC_CSPICTRL_MODE      (1 << 1)
+#define MXC_CSPICTRL_XCH       (1 << 2)
+#define MXC_CSPICTRL_SMC       (1 << 3)
+#define MXC_CSPICTRL_POL       (1 << 4)
+#define MXC_CSPICTRL_PHA       (1 << 5)
+#define MXC_CSPICTRL_SSCTL     (1 << 6)
+#define MXC_CSPICTRL_SSPOL     (1 << 7)
+#define MXC_CSPICTRL_CHIPSELECT(x)     (((x) & 0x3) << 12)
+#define MXC_CSPICTRL_BITCOUNT(x)       (((x) & 0xfff) << 20)
+#define MXC_CSPICTRL_DATARATE(x)       (((x) & 0x7) << 16)
+#define MXC_CSPICTRL_TC                (1 << 7)
+#define MXC_CSPICTRL_RXOVF     (1 << 6)
+#define MXC_CSPICTRL_MAXBITS   0xfff
+#define MXC_CSPIPERIOD_32KHZ   (1 << 15)
+#define MAX_SPI_BYTES  4
+
+#define MXC_SPI_BASE_ADDRESSES \
+       IMX_CSPI1_BASE, \
+       IMX_CSPI2_BASE, \
+       IMX_CSPI3_BASE
+
 #define CHIP_REV_1_0           0x10
 #define CHIP_REV_1_1           0x11
 #define CHIP_REV_1_2           0x12
index 5f9c90ad874a6568049ecdd27a4ea1f4324faa67..045ccc4512f3710ad4947f52ac3c904b61ab94eb 100644 (file)
 #include <asm/imx-common/iomux-v3.h>
 
 enum {
+       MX6_PAD_ECSPI1_MISO__ECSPI_MISO                         = IOMUX_PAD(0x0358, 0x0068, 0, 0x0684, 0, 0),
+       MX6_PAD_ECSPI1_MOSI__ECSPI_MOSI                         = IOMUX_PAD(0x035C, 0x006C, 0, 0x0688, 0, 0),
+       MX6_PAD_ECSPI1_SCLK__ECSPI_SCLK                         = IOMUX_PAD(0x0360, 0x0070, 0, 0x067C, 0, 0),
+       MX6_PAD_ECSPI1_SS0__GPIO4_IO11                          = IOMUX_PAD(0x0364, 0x0074, 5, 0x0000, 0, 0),
        MX6_PAD_SD2_CLK__USDHC2_CLK                             = IOMUX_PAD(0x055C, 0x0254, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_CMD__USDHC2_CMD                             = IOMUX_PAD(0x0560, 0x0258, 0, 0x0000, 0, 0),
        MX6_PAD_SD2_DAT0__USDHC2_DAT0                           = IOMUX_PAD(0x0564, 0x025C, 0, 0x0000, 0, 0),
index 18041913c4153dd0cf1474347bac8f704c57abfc..bdb1435291a1b9ea85211d108f2304a28128bb77 100644 (file)
@@ -344,6 +344,7 @@ enum {
  * MAP  - Map this CS to which address(GPMC address space)- Absolute address
  *   >>24 before being used.
  */
+#define GPMC_SIZE_256M 0x0
 #define GPMC_SIZE_128M 0x8
 #define GPMC_SIZE_64M  0xC
 #define GPMC_SIZE_32M  0xE
index c21fb54714a5055f4afde4b765a892e796948ec9..f7595ae5776440e9bd59d2214ffb87cdbc087481 100644 (file)
@@ -12,6 +12,8 @@
 #include <asm/types.h>
 #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
 
+#include <asm/arch/hardware.h>
+
 #ifndef __KERNEL_STRICT_NAMES
 #ifndef __ASSEMBLY__
 struct gptimer {
@@ -57,9 +59,6 @@ struct watchdog {
 #define TCLR_AR                        (0x1 << 1)
 #define TCLR_PRE               (0x1 << 5)
 
-/* GPMC BASE */
-#define GPMC_BASE              (OMAP44XX_GPMC_BASE)
-
 /* I2C base */
 #define I2C_BASE1              (OMAP44XX_L4_PER_BASE + 0x70000)
 #define I2C_BASE2              (OMAP44XX_L4_PER_BASE + 0x72000)
diff --git a/arch/arm/include/asm/arch-omap4/hardware.h b/arch/arm/include/asm/arch-omap4/hardware.h
new file mode 100644 (file)
index 0000000..f7011b4
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * hardware.h
+ *
+ * hardware specific header
+ *
+ * Copyright (C) 2013, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __OMAP_HARDWARE_H
+#define __OMAP_HARDWARE_H
+
+#include <asm/arch/omap.h>
+
+/*
+ * Common hardware definitions
+ */
+
+/* BCH Error Location Module */
+#define ELM_BASE                       0x48078000
+
+/* GPMC Base address */
+#define GPMC_BASE                      0x50000000
+
+#endif
diff --git a/arch/arm/include/asm/arch-omap4/mem.h b/arch/arm/include/asm/arch-omap4/mem.h
new file mode 100644 (file)
index 0000000..d2e708b
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2006-2008
+ * Texas Instruments, <www.ti.com>
+ *
+ * Author
+ *             Mansoor Ahamed <mansoor.ahamed@ti.com>
+ *
+ * Initial Code from:
+ *             Richard Woodruff <r-woodruff2@ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _MEM_H_
+#define _MEM_H_
+
+/*
+ * GPMC settings -
+ * Definitions is as per the following format
+ * #define <PART>_GPMC_CONFIG<x> <value>
+ * Where:
+ * PART is the part name e.g. STNOR - Intel Strata Flash
+ * x is GPMC config registers from 1 to 6 (there will be 6 macros)
+ * Value is corresponding value
+ *
+ * For every valid PRCM configuration there should be only one definition of
+ * the same. if values are independent of the board, this definition will be
+ * present in this file if values are dependent on the board, then this should
+ * go into corresponding mem-boardName.h file
+ *
+ * Currently valid part Names are (PART):
+ * M_NAND - Micron NAND
+ * STNOR - STMicrolelctronics M29W128GL
+ */
+#define GPMC_SIZE_256M         0x0
+#define GPMC_SIZE_128M         0x8
+#define GPMC_SIZE_64M          0xC
+#define GPMC_SIZE_32M          0xE
+#define GPMC_SIZE_16M          0xF
+
+#define M_NAND_GPMC_CONFIG1    0x00000800
+#define M_NAND_GPMC_CONFIG2    0x001e1e00
+#define M_NAND_GPMC_CONFIG3    0x001e1e00
+#define M_NAND_GPMC_CONFIG4    0x16051807
+#define M_NAND_GPMC_CONFIG5    0x00151e1e
+#define M_NAND_GPMC_CONFIG6    0x16000f80
+#define M_NAND_GPMC_CONFIG7    0x00000008
+
+#define STNOR_GPMC_CONFIG1     0x00001200
+#define STNOR_GPMC_CONFIG2     0x00101000
+#define STNOR_GPMC_CONFIG3     0x00030301
+#define STNOR_GPMC_CONFIG4     0x10041004
+#define STNOR_GPMC_CONFIG5     0x000C1010
+#define STNOR_GPMC_CONFIG6     0x08070280
+#define STNOR_GPMC_CONFIG7     0x00000F48
+
+/* max number of GPMC Chip Selects */
+#define GPMC_MAX_CS            8
+/* max number of GPMC regs */
+#define GPMC_MAX_REG           7
+
+#endif /* endif _MEM_H_ */
index f66da0d603489abd7eeeda8f5462bbfd5a0dd529..d43dc265cd68f952897d07b39fbf691fbe281fdf 100644 (file)
@@ -60,9 +60,6 @@
 /* Watchdog Timer2 - MPU watchdog */
 #define WDT2_BASE              (OMAP44XX_L4_WKUP_BASE + 0x14000)
 
-/* GPMC */
-#define OMAP44XX_GPMC_BASE     0x50000000
-
 /*
  * Hardware Register Details
  */
index 80172f37945e32a10d02c24d3b8324a14e2aaad4..83d858f305c4b5dde57e13aee77cae7252aab786 100644 (file)
@@ -14,6 +14,7 @@
 #include <asm/omap_common.h>
 #include <linux/mtd/omap_gpmc.h>
 #include <asm/arch/mux_omap4.h>
+#include <asm/ti-common/sys_proto.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -53,54 +54,4 @@ int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data);
 u32 warm_reset(void);
 void force_emif_self_refresh(void);
 void setup_warmreset_time(void);
-
-static inline u32 running_from_sdram(void)
-{
-       u32 pc;
-       asm volatile ("mov %0, pc" : "=r" (pc));
-       return ((pc >= OMAP44XX_DRAM_ADDR_SPACE_START) &&
-           (pc < OMAP44XX_DRAM_ADDR_SPACE_END));
-}
-
-static inline u8 uboot_loaded_by_spl(void)
-{
-       /*
-        * u-boot can be running from sdram either because of configuration
-        * Header or by SPL. If because of CH, then the romcode sets the
-        * CHSETTINGS executed bit to true in the boot parameter structure that
-        * it passes to the bootloader.This parameter is stored in the ch_flags
-        * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
-        * mandatory section if CH is present.
-        */
-       if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
-               return 0;
-       else
-               return running_from_sdram();
-}
-/*
- * The basic hardware init of OMAP(s_init()) can happen in 4
- * different contexts:
- *  1. SPL running from SRAM
- *  2. U-Boot running from FLASH
- *  3. Non-XIP U-Boot loaded to SDRAM by SPL
- *  4. Non-XIP U-Boot loaded to SDRAM by ROM code using the
- *     Configuration Header feature
- *
- * This function finds this context.
- * Defining as inline may help in compiling out unused functions in SPL
- */
-static inline u32 omap_hw_init_context(void)
-{
-#ifdef CONFIG_SPL_BUILD
-       return OMAP_INIT_CONTEXT_SPL;
-#else
-       if (uboot_loaded_by_spl())
-               return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL;
-       else if (running_from_sdram())
-               return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH;
-       else
-               return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR;
-#endif
-}
-
 #endif
index 2dfe4efb4b293fa578aa549f947411992fa68c7a..30d9de276492caf863b3d93429cb099bfdb9e0e4 100644 (file)
 
 #define V_SCLK V_OSCK
 
+/* CKO buffer control */
+#define CKOBUFFER_CLK_ENABLE_MASK      (1 << 28)
+
 /* AUXCLKx reg fields */
 #define AUXCLK_ENABLE_MASK             (1 << 8)
 #define AUXCLK_SRCSELECT_SHIFT         1
index 5f1d7454d01ae68d76b4fd2239844b1172beff7d..6109b92777c9b8c184e553f2003c847af55a393b 100644 (file)
@@ -14,6 +14,8 @@
 #include <asm/types.h>
 #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
 
+#include <asm/arch/hardware.h>
+
 #ifndef __KERNEL_STRICT_NAMES
 #ifndef __ASSEMBLY__
 struct gptimer {
@@ -63,9 +65,6 @@ struct watchdog {
 #define TCLR_AR                        (0x1 << 1)
 #define TCLR_PRE               (0x1 << 5)
 
-/* GPMC BASE */
-#define GPMC_BASE              (OMAP54XX_GPMC_BASE)
-
 /* I2C base */
 #define I2C_BASE1              (OMAP54XX_L4_PER_BASE + 0x70000)
 #define I2C_BASE2              (OMAP54XX_L4_PER_BASE + 0x72000)
diff --git a/arch/arm/include/asm/arch-omap5/hardware.h b/arch/arm/include/asm/arch-omap5/hardware.h
new file mode 100644 (file)
index 0000000..f7011b4
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * hardware.h
+ *
+ * hardware specific header
+ *
+ * Copyright (C) 2013, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __OMAP_HARDWARE_H
+#define __OMAP_HARDWARE_H
+
+#include <asm/arch/omap.h>
+
+/*
+ * Common hardware definitions
+ */
+
+/* BCH Error Location Module */
+#define ELM_BASE                       0x48078000
+
+/* GPMC Base address */
+#define GPMC_BASE                      0x50000000
+
+#endif
diff --git a/arch/arm/include/asm/arch-omap5/mem.h b/arch/arm/include/asm/arch-omap5/mem.h
new file mode 100644 (file)
index 0000000..d2e708b
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2006-2008
+ * Texas Instruments, <www.ti.com>
+ *
+ * Author
+ *             Mansoor Ahamed <mansoor.ahamed@ti.com>
+ *
+ * Initial Code from:
+ *             Richard Woodruff <r-woodruff2@ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _MEM_H_
+#define _MEM_H_
+
+/*
+ * GPMC settings -
+ * Definitions is as per the following format
+ * #define <PART>_GPMC_CONFIG<x> <value>
+ * Where:
+ * PART is the part name e.g. STNOR - Intel Strata Flash
+ * x is GPMC config registers from 1 to 6 (there will be 6 macros)
+ * Value is corresponding value
+ *
+ * For every valid PRCM configuration there should be only one definition of
+ * the same. if values are independent of the board, this definition will be
+ * present in this file if values are dependent on the board, then this should
+ * go into corresponding mem-boardName.h file
+ *
+ * Currently valid part Names are (PART):
+ * M_NAND - Micron NAND
+ * STNOR - STMicrolelctronics M29W128GL
+ */
+#define GPMC_SIZE_256M         0x0
+#define GPMC_SIZE_128M         0x8
+#define GPMC_SIZE_64M          0xC
+#define GPMC_SIZE_32M          0xE
+#define GPMC_SIZE_16M          0xF
+
+#define M_NAND_GPMC_CONFIG1    0x00000800
+#define M_NAND_GPMC_CONFIG2    0x001e1e00
+#define M_NAND_GPMC_CONFIG3    0x001e1e00
+#define M_NAND_GPMC_CONFIG4    0x16051807
+#define M_NAND_GPMC_CONFIG5    0x00151e1e
+#define M_NAND_GPMC_CONFIG6    0x16000f80
+#define M_NAND_GPMC_CONFIG7    0x00000008
+
+#define STNOR_GPMC_CONFIG1     0x00001200
+#define STNOR_GPMC_CONFIG2     0x00101000
+#define STNOR_GPMC_CONFIG3     0x00030301
+#define STNOR_GPMC_CONFIG4     0x10041004
+#define STNOR_GPMC_CONFIG5     0x000C1010
+#define STNOR_GPMC_CONFIG6     0x08070280
+#define STNOR_GPMC_CONFIG7     0x00000F48
+
+/* max number of GPMC Chip Selects */
+#define GPMC_MAX_CS            8
+/* max number of GPMC regs */
+#define GPMC_MAX_REG           7
+
+#endif /* endif _MEM_H_ */
index 19fdecec01bb77671a9df5df903c6b67e01b47b7..b9600cf42dbc5a03c384b5271e77b301cb3f2618 100644 (file)
 #define OMAP54XX_L4_WKUP_BASE  0x4Ae00000
 #define OMAP54XX_L4_PER_BASE   0x48000000
 
-#define OMAP54XX_DRAM_ADDR_SPACE_START 0x80000000
-#define OMAP54XX_DRAM_ADDR_SPACE_END   0xFFFFFFFF
-#define DRAM_ADDR_SPACE_START  OMAP54XX_DRAM_ADDR_SPACE_START
-#define DRAM_ADDR_SPACE_END    OMAP54XX_DRAM_ADDR_SPACE_END
-
 /* CONTROL ID CODE */
 #define CONTROL_CORE_ID_CODE   0x4A002204
 #define CONTROL_WKUP_ID_CODE   0x4AE0C204
 #define OMAP5432_CONTROL_ID_CODE_ES2_0          0x1B99802F
 #define DRA752_CONTROL_ID_CODE_ES1_0           0x0B99002F
 #define DRA752_CONTROL_ID_CODE_ES1_1           0x1B99002F
+#define DRA722_CONTROL_ID_CODE_ES1_0           0x0B9BC02F
 
 /* UART */
 #define UART1_BASE             (OMAP54XX_L4_PER_BASE + 0x6a000)
 #define UART2_BASE             (OMAP54XX_L4_PER_BASE + 0x6c000)
 #define UART3_BASE             (OMAP54XX_L4_PER_BASE + 0x20000)
+#define UART4_BASE             (OMAP54XX_L4_PER_BASE + 0x6e000)
 
 /* General Purpose Timers */
 #define GPT1_BASE              (OMAP54XX_L4_WKUP_BASE + 0x18000)
@@ -59,9 +56,6 @@
 /* Watchdog Timer2 - MPU watchdog */
 #define WDT2_BASE              (OMAP54XX_L4_WKUP_BASE + 0x14000)
 
-/* GPMC */
-#define OMAP54XX_GPMC_BASE     0x50000000
-
 /* QSPI */
 #define QSPI_BASE              0x4B300000
 
index bf12c7337247e9e969a826d1c1da34fd27f99e64..103830319a414d31f10a7d8ad05571111650ae9d 100644 (file)
@@ -14,6 +14,7 @@
 #include <asm/omap_common.h>
 #include <linux/mtd/omap_gpmc.h>
 #include <asm/arch/clock.h>
+#include <asm/ti-common/sys_proto.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -56,55 +57,6 @@ void get_ioregs(const struct ctrl_ioregs **regs);
 void srcomp_enable(void);
 void setup_warmreset_time(void);
 
-static inline u32 running_from_sdram(void)
-{
-       u32 pc;
-       asm volatile ("mov %0, pc" : "=r" (pc));
-       return ((pc >= OMAP54XX_DRAM_ADDR_SPACE_START) &&
-           (pc < OMAP54XX_DRAM_ADDR_SPACE_END));
-}
-
-static inline u8 uboot_loaded_by_spl(void)
-{
-       /*
-        * u-boot can be running from sdram either because of configuration
-        * Header or by SPL. If because of CH, then the romcode sets the
-        * CHSETTINGS executed bit to true in the boot parameter structure that
-        * it passes to the bootloader.This parameter is stored in the ch_flags
-        * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
-        * mandatory section if CH is present.
-        */
-       if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
-               return 0;
-       else
-               return running_from_sdram();
-}
-/*
- * The basic hardware init of OMAP(s_init()) can happen in 4
- * different contexts:
- *  1. SPL running from SRAM
- *  2. U-Boot running from FLASH
- *  3. Non-XIP U-Boot loaded to SDRAM by SPL
- *  4. Non-XIP U-Boot loaded to SDRAM by ROM code using the
- *     Configuration Header feature
- *
- * This function finds this context.
- * Defining as inline may help in compiling out unused functions in SPL
- */
-static inline u32 omap_hw_init_context(void)
-{
-#ifdef CONFIG_SPL_BUILD
-       return OMAP_INIT_CONTEXT_SPL;
-#else
-       if (uboot_loaded_by_spl())
-               return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL;
-       else if (running_from_sdram())
-               return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH;
-       else
-               return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR;
-#endif
-}
-
 static inline u32 div_round_up(u32 num, u32 den)
 {
        return (num + den - 1)/den;
index 444e361c06b6c0df116aba98646c91fd5e2b0836..74b5f1df59898c3be17419167aea494d15e95bfc 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __ASM_R8A7790_H__
-#define __ASM_R8A7790_H__
+#ifndef __ASM_R8A7790_GPIO_H__
+#define __ASM_R8A7790_GPIO_H__
 
 /* Pin Function Controller:
  * GPIO_FN_xx - GPIO used to select pin function
@@ -384,4 +384,4 @@ enum {
        GPIO_FN_TCLK1_B,
 };
 
-#endif /* __ASM_R8A7790_H__ */
+#endif /* __ASM_R8A7790_GPIO_H__ */
index d9ea71fa14f8c4f5ac9729caba584b2865ecce5f..6ef665d5835e3c3da16b10afc8d2fa9369b14943 100644 (file)
 /*
  * arch/arm/include/asm/arch-rmobile/r8a7790.h
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
- */
+*/
 
 #ifndef __ASM_ARCH_R8A7790_H
 #define __ASM_ARCH_R8A7790_H
 
-/*
- * R8A7790 I/O Addresses
- */
-#define        RWDT_BASE               0xE6020000
-#define        SWDT_BASE               0xE6030000
-#define        LBSC_BASE               0xFEC00200
-#define DBSC3_0_BASE           0xE6790000
-#define DBSC3_1_BASE           0xE67A0000
-#define TMU_BASE               0xE61E0000
-#define        GPIO5_BASE              0xE6055000
-#define SH_QSPI_BASE   0xE6B10000
-
-#define S3C_BASE               0xE6784000
-#define S3C_INT_BASE           0xE6784A00
-#define S3C_MEDIA_BASE         0xE6784B00
-
-#define S3C_QOS_DCACHE_BASE    0xE6784BDC
-#define S3C_QOS_CCI0_BASE      0xE6784C00
-#define S3C_QOS_CCI1_BASE      0xE6784C24
-#define S3C_QOS_MXI_BASE       0xE6784C48
-#define S3C_QOS_AXI_BASE       0xE6784C6C
-
-#define DBSC3_0_QOS_R0_BASE    0xE6791000
-#define DBSC3_0_QOS_R1_BASE    0xE6791100
-#define DBSC3_0_QOS_R2_BASE    0xE6791200
-#define DBSC3_0_QOS_R3_BASE    0xE6791300
-#define DBSC3_0_QOS_R4_BASE    0xE6791400
-#define DBSC3_0_QOS_R5_BASE    0xE6791500
-#define DBSC3_0_QOS_R6_BASE    0xE6791600
-#define DBSC3_0_QOS_R7_BASE    0xE6791700
-#define DBSC3_0_QOS_R8_BASE    0xE6791800
-#define DBSC3_0_QOS_R9_BASE    0xE6791900
-#define DBSC3_0_QOS_R10_BASE   0xE6791A00
-#define DBSC3_0_QOS_R11_BASE   0xE6791B00
-#define DBSC3_0_QOS_R12_BASE   0xE6791C00
-#define DBSC3_0_QOS_R13_BASE   0xE6791D00
-#define DBSC3_0_QOS_R14_BASE   0xE6791E00
-#define DBSC3_0_QOS_R15_BASE   0xE6791F00
-#define DBSC3_0_QOS_W0_BASE    0xE6792000
-#define DBSC3_0_QOS_W1_BASE    0xE6792100
-#define DBSC3_0_QOS_W2_BASE    0xE6792200
-#define DBSC3_0_QOS_W3_BASE    0xE6792300
-#define DBSC3_0_QOS_W4_BASE    0xE6792400
-#define DBSC3_0_QOS_W5_BASE    0xE6792500
-#define DBSC3_0_QOS_W6_BASE    0xE6792600
-#define DBSC3_0_QOS_W7_BASE    0xE6792700
-#define DBSC3_0_QOS_W8_BASE    0xE6792800
-#define DBSC3_0_QOS_W9_BASE    0xE6792900
-#define DBSC3_0_QOS_W10_BASE   0xE6792A00
-#define DBSC3_0_QOS_W11_BASE   0xE6792B00
-#define DBSC3_0_QOS_W12_BASE   0xE6792C00
-#define DBSC3_0_QOS_W13_BASE   0xE6792D00
-#define DBSC3_0_QOS_W14_BASE   0xE6792E00
-#define DBSC3_0_QOS_W15_BASE   0xE6792F00
-
-#define DBSC3_0_DBADJ2         0xE67900C8
-
-#define CCI_400_MAXOT_1                0xF0091110
-#define CCI_400_MAXOT_2                0xF0092110
-#define CCI_400_QOSCNTL_1      0xF009110C
-#define CCI_400_QOSCNTL_2      0xF009210C
-
-#define        MXI_BASE                0xFE960000
-#define        MXI_QOS_BASE            0xFE960300
-
-#define SYS_AXI_SYX64TO128_BASE        0xFF800300
-#define SYS_AXI_AVB_BASE       0xFF800340
-#define SYS_AXI_G2D_BASE       0xFF800540
-#define SYS_AXI_IMP0_BASE      0xFF800580
-#define SYS_AXI_IMP1_BASE      0xFF8005C0
-#define SYS_AXI_IMUX0_BASE     0xFF800600
-#define SYS_AXI_IMUX1_BASE     0xFF800640
-#define SYS_AXI_IMUX2_BASE     0xFF800680
-#define SYS_AXI_LBS_BASE       0xFF8006C0
-#define SYS_AXI_MMUDS_BASE     0xFF800700
-#define SYS_AXI_MMUM_BASE      0xFF800740
-#define SYS_AXI_MMUR_BASE      0xFF800780
-#define SYS_AXI_MMUS0_BASE     0xFF8007C0
-#define SYS_AXI_MMUS1_BASE     0xFF800800
-#define SYS_AXI_MTSB0_BASE     0xFF800880
-#define SYS_AXI_MTSB1_BASE     0xFF8008C0
-#define SYS_AXI_PCI_BASE       0xFF800900
-#define SYS_AXI_RTX_BASE       0xFF800940
-#define SYS_AXI_SDS0_BASE      0xFF800A80
-#define SYS_AXI_SDS1_BASE      0xFF800AC0
-#define SYS_AXI_USB20_BASE     0xFF800C00
-#define SYS_AXI_USB21_BASE     0xFF800C40
-#define SYS_AXI_USB22_BASE     0xFF800C80
-#define SYS_AXI_USB30_BASE     0xFF800CC0
-
-#define RT_AXI_SHX_BASE                0xFF810100
-#define RT_AXI_RDS_BASE                0xFF8101C0
-#define RT_AXI_RTX64TO128_BASE 0xFF810200
-#define RT_AXI_STPRO_BASE      0xFF810240
-
-#define MP_AXI_ADSP_BASE       0xFF820100
-#define MP_AXI_ASDS0_BASE      0xFF8201C0
-#define MP_AXI_ASDS1_BASE      0xFF820200
-#define MP_AXI_MLP_BASE                0xFF820240
-#define MP_AXI_MMUMP_BASE      0xFF820280
-#define MP_AXI_SPU_BASE                0xFF8202C0
-#define MP_AXI_SPUC_BASE       0xFF820300
-
-#define SYS_AXI256_AXI128TO256_BASE    0xFF860100
-#define SYS_AXI256_SYX_BASE    0xFF860140
-#define SYS_AXI256_MPX_BASE    0xFF860180
-#define SYS_AXI256_MXI_BASE    0xFF8601C0
-
-#define CCI_AXI_MMUS0_BASE     0xFF880100
-#define CCI_AXI_SYX2_BASE      0xFF880140
-#define CCI_AXI_MMUR_BASE      0xFF880180
-#define CCI_AXI_MMUDS_BASE     0xFF8801C0
-#define CCI_AXI_MMUM_BASE      0xFF880200
-#define CCI_AXI_MXI_BASE       0xFF880240
-#define CCI_AXI_MMUS1_BASE     0xFF880280
-#define CCI_AXI_MMUMP_BASE     0xFF8802C0
-
-#define MEDIA_AXI_JPR_BASE     0xFE964100
-#define MEDIA_AXI_JPW_BASE     0xFE966100
-#define MEDIA_AXI_GCU0R_BASE   0xFE964140
-#define MEDIA_AXI_GCU0W_BASE   0xFE966140
-#define MEDIA_AXI_GCU1R_BASE   0xFE964180
-#define MEDIA_AXI_GCU1W_BASE   0xFE966180
-#define MEDIA_AXI_TDMR_BASE    0xFE964500
-#define MEDIA_AXI_TDMW_BASE    0xFE966500
-#define MEDIA_AXI_VSP0CR_BASE  0xFE964540
-#define MEDIA_AXI_VSP0CW_BASE  0xFE966540
-#define MEDIA_AXI_VSP1CR_BASE  0xFE964580
-#define MEDIA_AXI_VSP1CW_BASE  0xFE966580
-#define MEDIA_AXI_VSPDU0CR_BASE        0xFE9645C0
-#define MEDIA_AXI_VSPDU0CW_BASE        0xFE9665C0
-#define MEDIA_AXI_VSPDU1CR_BASE        0xFE964600
-#define MEDIA_AXI_VSPDU1CW_BASE        0xFE966600
-#define MEDIA_AXI_VIN0W_BASE   0xFE966900
-#define MEDIA_AXI_VSP0R_BASE   0xFE964D00
-#define MEDIA_AXI_VSP0W_BASE   0xFE966D00
-#define MEDIA_AXI_FDP0R_BASE   0xFE964D40
-#define MEDIA_AXI_FDP0W_BASE   0xFE966D40
-#define MEDIA_AXI_IMSR_BASE    0xFE964D80
-#define MEDIA_AXI_IMSW_BASE    0xFE966D80
-#define MEDIA_AXI_VSP1R_BASE   0xFE965100
-#define MEDIA_AXI_VSP1W_BASE   0xFE967100
-#define MEDIA_AXI_FDP1R_BASE   0xFE965140
-#define MEDIA_AXI_FDP1W_BASE   0xFE967140
-#define MEDIA_AXI_IMRR_BASE    0xFE965180
-#define MEDIA_AXI_IMRW_BASE    0xFE967180
-#define MEDIA_AXI_FDP2R_BASE   0xFE9651C0
-#define MEDIA_AXI_FDP2W_BASE   0xFE966DC0
-#define MEDIA_AXI_VSPD0R_BASE  0xFE965500
-#define MEDIA_AXI_VSPD0W_BASE  0xFE967500
-#define MEDIA_AXI_VSPD1R_BASE  0xFE965540
-#define MEDIA_AXI_VSPD1W_BASE  0xFE967540
-#define MEDIA_AXI_DU0R_BASE    0xFE965580
-#define MEDIA_AXI_DU0W_BASE    0xFE967580
-#define MEDIA_AXI_DU1R_BASE    0xFE9655C0
-#define MEDIA_AXI_DU1W_BASE    0xFE9675C0
-#define MEDIA_AXI_VCP0CR_BASE  0xFE965900
-#define MEDIA_AXI_VCP0CW_BASE  0xFE967900
-#define MEDIA_AXI_VCP0VR_BASE  0xFE965940
-#define MEDIA_AXI_VCP0VW_BASE  0xFE967940
-#define MEDIA_AXI_VPC0R_BASE   0xFE965980
-#define MEDIA_AXI_VCP1CR_BASE  0xFE965D00
-#define MEDIA_AXI_VCP1CW_BASE  0xFE967D00
-#define MEDIA_AXI_VCP1VR_BASE  0xFE965D40
-#define MEDIA_AXI_VCP1VW_BASE  0xFE967D40
-#define MEDIA_AXI_VPC1R_BASE   0xFE965D80
-
-#define SYS_AXI_AVBDMSCR       0xFF802000
-#define SYS_AXI_SYX2DMSCR      0xFF802004
-#define SYS_AXI_CC50DMSCR      0xFF802008
-#define SYS_AXI_CC51DMSCR      0xFF80200C
-#define SYS_AXI_CCIDMSCR       0xFF802010
-#define SYS_AXI_CSDMSCR                0xFF802014
-#define SYS_AXI_DDMDMSCR       0xFF802018
-#define SYS_AXI_ETHDMSCR       0xFF80201C
-#define SYS_AXI_G2DDMSCR       0xFF802020
-#define SYS_AXI_IMP0DMSCR      0xFF802024
-#define SYS_AXI_IMP1DMSCR      0xFF802028
-#define SYS_AXI_LBSDMSCR       0xFF80202C
-#define SYS_AXI_MMUDSDMSCR     0xFF802030
-#define SYS_AXI_MMUMXDMSCR     0xFF802034
-#define SYS_AXI_MMURDDMSCR     0xFF802038
-#define SYS_AXI_MMUS0DMSCR     0xFF80203C
-#define SYS_AXI_MMUS1DMSCR     0xFF802040
-#define SYS_AXI_MPXDMSCR       0xFF802044
-#define SYS_AXI_MTSB0DMSCR     0xFF802048
-#define SYS_AXI_MTSB1DMSCR     0xFF80204C
-#define SYS_AXI_PCIDMSCR       0xFF802050
-#define SYS_AXI_RTXDMSCR       0xFF802054
-#define SYS_AXI_SAT0DMSCR      0xFF802058
-#define SYS_AXI_SAT1DMSCR      0xFF80205C
-#define SYS_AXI_SDM0DMSCR      0xFF802060
-#define SYS_AXI_SDM1DMSCR      0xFF802064
-#define SYS_AXI_SDS0DMSCR      0xFF802068
-#define SYS_AXI_SDS1DMSCR      0xFF80206C
-#define SYS_AXI_ETRABDMSCR     0xFF802070
-#define SYS_AXI_ETRKFDMSCR     0xFF802074
-#define SYS_AXI_UDM0DMSCR      0xFF802078
-#define SYS_AXI_UDM1DMSCR      0xFF80207C
-#define SYS_AXI_USB20DMSCR     0xFF802080
-#define SYS_AXI_USB21DMSCR     0xFF802084
-#define SYS_AXI_USB22DMSCR     0xFF802088
-#define SYS_AXI_USB30DMSCR     0xFF80208C
-#define SYS_AXI_X128TO64SLVDMSCR       0xFF802100
-#define SYS_AXI_X64TO128SLVDMSCR       0xFF802104
-#define SYS_AXI_AVBSLVDMSCR    0xFF802108
-#define SYS_AXI_SYX2SLVDMSCR   0xFF80210C
-#define SYS_AXI_ETHSLVDMSCR    0xFF802110
-#define SYS_AXI_GICSLVDMSCR    0xFF802114
-#define SYS_AXI_IMPSLVDMSCR    0xFF802118
-#define SYS_AXI_IMX0SLVDMSCR   0xFF80211C
-#define SYS_AXI_IMX1SLVDMSCR   0xFF802120
-#define SYS_AXI_IMX2SLVDMSCR   0xFF802124
-#define SYS_AXI_LBSSLVDMSCR    0xFF802128
-#define SYS_AXI_MMC0SLVDMSCR   0xFF80212C
-#define SYS_AXI_MMC1SLVDMSCR   0xFF802130
-#define SYS_AXI_MPXSLVDMSCR    0xFF802134
-#define SYS_AXI_MTSB0SLVDMSCR  0xFF802138
-#define SYS_AXI_MTSB1SLVDMSCR  0xFF80213C
-#define SYS_AXI_MXTSLVDMSCR    0xFF802140
-#define SYS_AXI_PCISLVDMSCR    0xFF802144
-#define SYS_AXI_SYAPBSLVDMSCR  0xFF802148
-#define SYS_AXI_QSAPBSLVDMSCR  0xFF80214C
-#define SYS_AXI_RTXSLVDMSCR    0xFF802150
-#define SYS_AXI_SAT0SLVDMSCR   0xFF802168
-#define SYS_AXI_SAT1SLVDMSCR   0xFF80216C
-#define SYS_AXI_SDAP0SLVDMSCR  0xFF802170
-#define SYS_AXI_SDAP1SLVDMSCR  0xFF802174
-#define SYS_AXI_SDAP2SLVDMSCR  0xFF802178
-#define SYS_AXI_SDAP3SLVDMSCR  0xFF80217C
-#define SYS_AXI_SGXSLVDMSCR    0xFF802180
-#define SYS_AXI_STBSLVDMSCR    0xFF802188
-#define SYS_AXI_STMSLVDMSCR    0xFF80218C
-#define SYS_AXI_TSPL0SLVDMSCR  0xFF802194
-#define SYS_AXI_TSPL1SLVDMSCR  0xFF802198
-#define SYS_AXI_TSPL2SLVDMSCR  0xFF80219C
-#define SYS_AXI_USB20SLVDMSCR  0xFF8021A0
-#define SYS_AXI_USB21SLVDMSCR  0xFF8021A4
-#define SYS_AXI_USB22SLVDMSCR  0xFF8021A8
-#define SYS_AXI_USB30SLVDMSCR  0xFF8021AC
-
-#define RT_AXI_CBMDMSCR                0xFF812000
-#define RT_AXI_DBDMSCR         0xFF812004
-#define RT_AXI_RDMDMSCR                0xFF812008
-#define RT_AXI_RDSDMSCR                0xFF81200C
-#define RT_AXI_STRDMSCR                0xFF812010
-#define RT_AXI_SY2RTDMSCR      0xFF812014
-#define RT_AXI_CBSSLVDMSCR     0xFF812100
-#define RT_AXI_DBSSLVDMSCR     0xFF812104
-#define RT_AXI_RTAP1SLVDMSCR   0xFF812108
-#define RT_AXI_RTAP2SLVDMSCR   0xFF81210C
-#define RT_AXI_RTAP3SLVDMSCR   0xFF812110
-#define RT_AXI_RT2SYSLVDMSCR   0xFF812114
-#define RT_AXI_A128TO64SLVDMSCR        0xFF812118
-#define RT_AXI_A64TO128SLVDMSCR        0xFF81211C
-#define RT_AXI_A64TO128CSLVDMSCR       0xFF812120
-#define RT_AXI_UTLBRSLVDMSCR   0xFF812128
-
-#define MP_AXI_ADSPDMSCR       0xFF822000
-#define MP_AXI_ASDM0DMSCR      0xFF822004
-#define MP_AXI_ASDM1DMSCR      0xFF822008
-#define MP_AXI_ASDS0DMSCR      0xFF82200C
-#define MP_AXI_ASDS1DMSCR      0xFF822010
-#define MP_AXI_MLPDMSCR                0xFF822014
-#define MP_AXI_MMUMPDMSCR      0xFF822018
-#define MP_AXI_SPUDMSCR                0xFF82201C
-#define MP_AXI_SPUCDMSCR       0xFF822020
-#define MP_AXI_SY2MPDMSCR      0xFF822024
-#define MP_AXI_ADSPSLVDMSCR    0xFF822100
-#define MP_AXI_MLMSLVDMSCR     0xFF822104
-#define MP_AXI_MPAP4SLVDMSCR   0xFF822108
-#define MP_AXI_MPAP5SLVDMSCR   0xFF82210C
-#define MP_AXI_MPAP6SLVDMSCR   0xFF822110
-#define MP_AXI_MPAP7SLVDMSCR   0xFF822114
-#define MP_AXI_MP2SYSLVDMSCR   0xFF822118
-#define MP_AXI_MP2SY2SLVDMSCR  0xFF82211C
-#define MP_AXI_MPXAPSLVDMSCR   0xFF822124
-#define MP_AXI_SPUSLVDMSCR     0xFF822128
-#define MP_AXI_UTLBMPSLVDMSCR  0xFF82212C
-
-#define ADM_AXI_ASDM0DMSCR     0xFF842000
-#define ADM_AXI_ASDM1DMSCR     0xFF842004
-#define ADM_AXI_MPAP1SLVDMSCR  0xFF842104
-#define ADM_AXI_MPAP2SLVDMSCR  0xFF842108
-#define ADM_AXI_MPAP3SLVDMSCR  0xFF84210C
-
-#define DM_AXI_RDMDMSCR                0xFF852000
-#define DM_AXI_SDM0DMSCR       0xFF852004
-#define DM_AXI_SDM1DMSCR       0xFF852008
-#define DM_AXI_MMAP0SLVDMSCR   0xFF852100
-#define DM_AXI_MMAP1SLVDMSCR   0xFF852104
-#define DM_AXI_QSPAPSLVDMSCR   0xFF852108
-#define DM_AXI_RAP4SLVDMSCR    0xFF85210C
-#define DM_AXI_RAP5SLVDMSCR    0xFF852110
-#define DM_AXI_SAP4SLVDMSCR    0xFF852114
-#define DM_AXI_SAP5SLVDMSCR    0xFF852118
-#define DM_AXI_SAP6SLVDMSCR    0xFF85211C
-#define DM_AXI_SAP65SLVDMSCR   0xFF852120
-#define DM_AXI_SDAP0SLVDMSCR   0xFF852124
-#define DM_AXI_SDAP1SLVDMSCR   0xFF852128
-#define DM_AXI_SDAP2SLVDMSCR   0xFF85212C
-#define DM_AXI_SDAP3SLVDMSCR   0xFF852130
-
-#define SYS_AXI256_SYXDMSCR    0xFF862000
-#define SYS_AXI256_MPXDMSCR    0xFF862004
-#define SYS_AXI256_MXIDMSCR    0xFF862008
-#define SYS_AXI256_X128TO256SLVDMSCR   0xFF862100
-#define SYS_AXI256_X256TO128SLVDMSCR   0xFF862104
-#define SYS_AXI256_SYXSLVDMSCR 0xFF862108
-#define SYS_AXI256_CCXSLVDMSCR 0xFF86210C
-#define SYS_AXI256_S3CSLVDMSCR 0xFF862110
-
-#define MXT_SYXDMSCR           0xFF872000
-#define MXT_CMM0SLVDMSCR       0xFF872100
-#define MXT_CMM1SLVDMSCR       0xFF872104
-#define MXT_CMM2SLVDMSCR       0xFF872108
-#define MXT_FDPSLVDMSCR                0xFF87210C
-#define MXT_IMRSLVDMSCR                0xFF872110
-#define MXT_VINSLVDMSCR                0xFF872114
-#define MXT_VPC0SLVDMSCR       0xFF872118
-#define MXT_VPC1SLVDMSCR       0xFF87211C
-#define MXT_VSP0SLVDMSCR       0xFF872120
-#define MXT_VSP1SLVDMSCR       0xFF872124
-#define MXT_VSPD0SLVDMSCR      0xFF872128
-#define MXT_VSPD1SLVDMSCR      0xFF87212C
-#define MXT_MAP1SLVDMSCR       0xFF872130
-#define MXT_MAP2SLVDMSCR       0xFF872134
-
-#define CCI_AXI_MMUS0DMSCR     0xFF882000
-#define CCI_AXI_SYX2DMSCR      0xFF882004
-#define CCI_AXI_MMURDMSCR      0xFF882008
-#define CCI_AXI_MMUDSDMSCR     0xFF88200C
-#define CCI_AXI_MMUMDMSCR      0xFF882010
-#define CCI_AXI_MXIDMSCR       0xFF882014
-#define CCI_AXI_MMUS1DMSCR     0xFF882018
-#define CCI_AXI_MMUMPDMSCR     0xFF88201C
-#define CCI_AXI_DVMDMSCR       0xFF882020
-#define CCI_AXI_CCISLVDMSCR    0xFF882100
-
-#define CCI_AXI_IPMMUIDVMCR    0xFF880400
-#define CCI_AXI_IPMMURDVMCR    0xFF880404
-#define CCI_AXI_IPMMUS0DVMCR   0xFF880408
-#define CCI_AXI_IPMMUS1DVMCR   0xFF88040C
-#define CCI_AXI_IPMMUMPDVMCR   0xFF880410
-#define CCI_AXI_IPMMUDSDVMCR   0xFF880414
-#define CCI_AXI_AX2ADDRMASK    0xFF88041C
-
-#ifndef __ASSEMBLY__
-#include <asm/types.h>
-
-/* RWDT */
-struct r8a7790_rwdt {
-       u32 rwtcnt;     /* 0x00 */
-       u32 rwtcsra;    /* 0x04 */
-       u16 rwtcsrb;    /* 0x08 */
-};
-
-/* SWDT */
-struct r8a7790_swdt {
-       u32 swtcnt;     /* 0x00 */
-       u32 swtcsra;    /* 0x04 */
-       u16 swtcsrb;    /* 0x08 */
-};
-
-/* LBSC */
-struct r8a7790_lbsc {
-       u32 cs0ctrl;
-       u32 cs1ctrl;
-       u32 ecs0ctrl;
-       u32 ecs1ctrl;
-       u32 ecs2ctrl;
-       u32 ecs3ctrl;
-       u32 ecs4ctrl;
-       u32 ecs5ctrl;
-       u32 dummy0[4];  /* 0x20 .. 0x2C */
-       u32 cswcr0;
-       u32 cswcr1;
-       u32 ecswcr0;
-       u32 ecswcr1;
-       u32 ecswcr2;
-       u32 ecswcr3;
-       u32 ecswcr4;
-       u32 ecswcr5;
-       u32 exdmawcr0;
-       u32 exdmawcr1;
-       u32 exdmawcr2;
-       u32 dummy1[9];  /* 0x5C .. 0x7C */
-       u32 cspwcr0;
-       u32 cspwcr1;
-       u32 ecspwcr0;
-       u32 ecspwcr1;
-       u32 ecspwcr2;
-       u32 ecspwcr3;
-       u32 ecspwcr4;
-       u32 ecspwcr5;
-       u32 exwtsync;
-       u32 dummy2[3];  /* 0xA4 .. 0xAC */
-       u32 cs0bstctl;
-       u32 cs0btph;
-       u32 dummy3[2];  /* 0xB8 .. 0xBC */
-       u32 cs1gdst;
-       u32 ecs0gdst;
-       u32 ecs1gdst;
-       u32 ecs2gdst;
-       u32 ecs3gdst;
-       u32 ecs4gdst;
-       u32 ecs5gdst;
-       u32 dummy4[5];  /* 0xDC .. 0xEC */
-       u32 exdmaset0;
-       u32 exdmaset1;
-       u32 exdmaset2;
-       u32 dummy5[5];  /* 0xFC .. 0x10C */
-       u32 exdmcr0;
-       u32 exdmcr1;
-       u32 exdmcr2;
-       u32 dummy6[5];  /* 0x11C .. 0x12C */
-       u32 bcintsr;
-       u32 bcintcr;
-       u32 bcintmr;
-       u32 dummy7;     /* 0x13C */
-       u32 exbatlv;
-       u32 exwtsts;
-       u32 dummy8[14]; /* 0x148 .. 0x17C */
-       u32 atacsctrl;
-       u32 dummy9[15]; /* 0x184 .. 0x1BC */
-       u32 exbct;
-       u32 extct;
-};
-
-/* DBSC3 */
-struct r8a7790_dbsc3 {
-       u32 dummy0[3];  /* 0x00 .. 0x08 */
-       u32 dbstate1;
-       u32 dbacen;
-       u32 dbrfen;
-       u32 dbcmd;
-       u32 dbwait;
-       u32 dbkind;
-       u32 dbconf0;
-       u32 dummy1[2];  /* 0x28 .. 0x2C */
-       u32 dbphytype;
-       u32 dummy2[3];  /* 0x34 .. 0x3C */
-       u32 dbtr0;
-       u32 dbtr1;
-       u32 dbtr2;
-       u32 dummy3;     /* 0x4C */
-       u32 dbtr3;
-       u32 dbtr4;
-       u32 dbtr5;
-       u32 dbtr6;
-       u32 dbtr7;
-       u32 dbtr8;
-       u32 dbtr9;
-       u32 dbtr10;
-       u32 dbtr11;
-       u32 dbtr12;
-       u32 dbtr13;
-       u32 dbtr14;
-       u32 dbtr15;
-       u32 dbtr16;
-       u32 dbtr17;
-       u32 dbtr18;
-       u32 dbtr19;
-       u32 dummy4[7];  /* 0x94 .. 0xAC */
-       u32 dbbl;
-       u32 dummy5[3];  /* 0xB4 .. 0xBC */
-       u32 dbadj0;
-       u32 dummy6;     /* 0xC4 */
-       u32 dbadj2;
-       u32 dummy7[5];  /* 0xCC .. 0xDC */
-       u32 dbrfcnf0;
-       u32 dbrfcnf1;
-       u32 dbrfcnf2;
-       u32 dummy8[2];  /* 0xEC .. 0xF0 */
-       u32 dbcalcnf;
-       u32 dbcaltr;
-       u32 dummy9;     /* 0xFC */
-       u32 dbrnk0;
-       u32 dummy10[31];        /* 0x104 .. 0x17C */
-       u32 dbpdncnf;
-       u32 dummy11[47];        /* 0x184 ..0x23C */
-       u32 dbdfistat;
-       u32 dbdficnt;
-       u32 dummy12[14];        /* 0x248 .. 0x27C */
-       u32 dbpdlck;
-       u32 dummy13[3]; /* 0x284 .. 0x28C */
-       u32 dbpdrga;
-       u32 dummy14[3]; /* 0x294 .. 0x29C */
-       u32 dbpdrgd;
-       u32 dummy15[24];        /* 0x2A4 .. 0x300 */
-       u32 dbbs0cnt1;
-       u32 dummy16[30];        /* 0x308 .. 0x37C */
-       u32 dbwt0cnf0;
-       u32 dbwt0cnf1;
-       u32 dbwt0cnf2;
-       u32 dbwt0cnf3;
-       u32 dbwt0cnf4;
-};
-
-/* GPIO */
-struct r8a7790_gpio {
-       u32 iointsel;
-       u32 inoutsel;
-       u32 outdt;
-       u32 indt;
-       u32 intdt;
-       u32 intclr;
-       u32 intmsk;
-       u32 posneg;
-       u32 edglevel;
-       u32 filonoff;
-       u32 intmsks;
-       u32 mskclrs;
-       u32 outdtsel;
-       u32 outdth;
-       u32 outdtl;
-       u32 bothedge;
-};
-
-/* S3C(QoS) */
-struct r8a7790_s3c {
-       u32 s3cexcladdmsk;
-       u32 s3cexclidmsk;
-       u32 s3cadsplcr;
-       u32 s3cmaar;
-       u32 s3carcr11;
-       u32 s3crorr;
-       u32 s3cworr;
-       u32 s3carcr22;
-       u32 dummy1[2];  /* 0x20 .. 0x24 */
-       u32 s3cmctr;
-       u32 dummy2;     /* 0x2C */
-       u32 cconf0;
-       u32 cconf1;
-       u32 cconf2;
-       u32 cconf3;
-};
-
-struct r8a7790_s3c_qos {
-       u32 s3cqos0;
-       u32 s3cqos1;
-       u32 s3cqos2;
-       u32 s3cqos3;
-       u32 s3cqos4;
-       u32 s3cqos5;
-       u32 s3cqos6;
-       u32 s3cqos7;
-       u32 s3cqos8;
-};
-
-/* DBSC(QoS) */
-struct r8a7790_dbsc3_qos {
-       u32 dblgcnt;
-       u32 dbtmval0;
-       u32 dbtmval1;
-       u32 dbtmval2;
-       u32 dbtmval3;
-       u32 dbrqctr;
-       u32 dbthres0;
-       u32 dbthres1;
-       u32 dbthres2;
-       u32 dummy0;     /* 0x24 */
-       u32 dblgqon;
-};
-
-/* MXI(QoS) */
-struct r8a7790_mxi {
-       u32 mxsaar0;
-       u32 mxsaar1;
-       u32 dummy0[7];  /* 0x08 .. 0x20 */
-       u32 mxaxiracr;
-       u32 mxs3cracr;
-       u32 dummy1[2];  /* 0x2C .. 0x30 */
-       u32 mxaxiwacr;
-       u32 mxs3cwacr;
-       u32 dummy2;     /* 0x3C */
-       u32 mxrtcr;
-       u32 mxwtcr;
-};
-
-struct r8a7790_mxi_qos {
-       u32 vspdu0;
-       u32 vspdu1;
-       u32 du0;
-       u32 du1;
-};
-
-/* AXI(QoS) */
-struct r8a7790_axi_qos {
-       u32 qosconf;
-       u32 qosctset0;
-       u32 qosctset1;
-       u32 qosctset2;
-       u32 qosctset3;
-       u32 qosreqctr;
-       u32 qosthres0;
-       u32 qosthres1;
-       u32 qosthres2;
-       u32 qosqon;
-};
+#include "rcar-base.h"
 
-#endif
+#define R8A7790_CUT_ES2X       2
+#define IS_R8A7790_ES2()       \
+       (rmobile_get_cpu_rev_integer() == R8A7790_CUT_ES2X)
 
 #endif /* __ASM_ARCH_R8A7790_H */
index d3cf0c10ace36a7baf09ea590776d8409b6f933d..42e82597e7832a8488a250966964a64e0f6fd3ea 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __ASM_R8A7791_H__
-#define __ASM_R8A7791_H__
+#ifndef __ASM_R8A7791_GPIO_H__
+#define __ASM_R8A7791_GPIO_H__
 
 /* Pin Function Controller:
  * GPIO_FN_xx - GPIO used to select pin function
@@ -435,4 +435,4 @@ enum {
        GPIO_FN_MLB_DAT, GPIO_FN_CAN1_RX_B,
 };
 
-#endif /* __ASM_R8A7791_H__ */
+#endif /* __ASM_R8A7791_GPIO_H__ */
index ff30180591459d4b25b402d0839ba01cf05539dd..592c52474fe2d5a486f07060a5776dbca0864dde 100644 (file)
@@ -1,69 +1,18 @@
 /*
  * arch/arm/include/asm/arch-rmobile/r8a7791.h
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
- */
+*/
 
 #ifndef __ASM_ARCH_R8A7791_H
 #define __ASM_ARCH_R8A7791_H
 
+#include "rcar-base.h"
 /*
- * R8A7791 I/O Addresses
+ * R-Car (R8A7791) I/O Addresses
  */
-#define        RWDT_BASE       0xE6020000
-#define        SWDT_BASE       0xE6030000
-#define        LBSC_BASE       0xFEC00200
-#define DBSC3_0_BASE   0xE6790000
-#define DBSC3_1_BASE   0xE67A0000
-#define TMU_BASE       0xE61E0000
-#define        GPIO5_BASE      0xE6055000
-#define SH_QSPI_BASE   0xE6B10000
-
-#define S3C_BASE       0xE6784000
-#define S3C_INT_BASE   0xE6784A00
-#define S3C_MEDIA_BASE 0xE6784B00
-
-#define S3C_QOS_DCACHE_BASE    0xE6784BDC
-#define S3C_QOS_CCI0_BASE      0xE6784C00
-#define S3C_QOS_CCI1_BASE      0xE6784C24
-#define S3C_QOS_MXI_BASE       0xE6784C48
-#define S3C_QOS_AXI_BASE       0xE6784C6C
-
-#define DBSC3_0_QOS_R0_BASE    0xE6791000
-#define DBSC3_0_QOS_R1_BASE    0xE6791100
-#define DBSC3_0_QOS_R2_BASE    0xE6791200
-#define DBSC3_0_QOS_R3_BASE    0xE6791300
-#define DBSC3_0_QOS_R4_BASE    0xE6791400
-#define DBSC3_0_QOS_R5_BASE    0xE6791500
-#define DBSC3_0_QOS_R6_BASE    0xE6791600
-#define DBSC3_0_QOS_R7_BASE    0xE6791700
-#define DBSC3_0_QOS_R8_BASE    0xE6791800
-#define DBSC3_0_QOS_R9_BASE    0xE6791900
-#define DBSC3_0_QOS_R10_BASE   0xE6791A00
-#define DBSC3_0_QOS_R11_BASE   0xE6791B00
-#define DBSC3_0_QOS_R12_BASE   0xE6791C00
-#define DBSC3_0_QOS_R13_BASE   0xE6791D00
-#define DBSC3_0_QOS_R14_BASE   0xE6791E00
-#define DBSC3_0_QOS_R15_BASE   0xE6791F00
-#define DBSC3_0_QOS_W0_BASE    0xE6792000
-#define DBSC3_0_QOS_W1_BASE    0xE6792100
-#define DBSC3_0_QOS_W2_BASE    0xE6792200
-#define DBSC3_0_QOS_W3_BASE    0xE6792300
-#define DBSC3_0_QOS_W4_BASE    0xE6792400
-#define DBSC3_0_QOS_W5_BASE    0xE6792500
-#define DBSC3_0_QOS_W6_BASE    0xE6792600
-#define DBSC3_0_QOS_W7_BASE    0xE6792700
-#define DBSC3_0_QOS_W8_BASE    0xE6792800
-#define DBSC3_0_QOS_W9_BASE    0xE6792900
-#define DBSC3_0_QOS_W10_BASE   0xE6792A00
-#define DBSC3_0_QOS_W11_BASE   0xE6792B00
-#define DBSC3_0_QOS_W12_BASE   0xE6792C00
-#define DBSC3_0_QOS_W13_BASE   0xE6792D00
-#define DBSC3_0_QOS_W14_BASE   0xE6792E00
-#define DBSC3_0_QOS_W15_BASE   0xE6792F00
-
 #define DBSC3_1_QOS_R0_BASE    0xE67A1000
 #define DBSC3_1_QOS_R1_BASE    0xE67A1100
 #define DBSC3_1_QOS_R2_BASE    0xE67A1200
 #define DBSC3_1_QOS_W13_BASE   0xE67A2D00
 #define DBSC3_1_QOS_W14_BASE   0xE67A2E00
 #define DBSC3_1_QOS_W15_BASE   0xE67A2F00
+#define DBSC3_1_DBADJ2         0xE67A00C8
 
-#define DBSC3_0_DBADJ2         0xE67900C8
-
-#define CCI_400_MAXOT_1                0xF0091110
-#define CCI_400_MAXOT_2                0xF0092110
-#define CCI_400_QOSCNTL_1      0xF009110C
-#define CCI_400_QOSCNTL_2      0xF009210C
-
-#define        MXI_BASE                0xFE960000
-#define        MXI_QOS_BASE            0xFE960300
-
-#define SYS_AXI_SYX64TO128_BASE        0xFF800300
-#define SYS_AXI_AVB_BASE       0xFF800340
-#define SYS_AXI_G2D_BASE       0xFF800540
-#define SYS_AXI_IMP0_BASE      0xFF800580
-#define SYS_AXI_IMP1_BASE      0xFF8005C0
-#define SYS_AXI_IMUX0_BASE     0xFF800600
-#define SYS_AXI_IMUX1_BASE     0xFF800640
-#define SYS_AXI_IMUX2_BASE     0xFF800680
-#define SYS_AXI_LBS_BASE       0xFF8006C0
-#define SYS_AXI_MMUDS_BASE     0xFF800700
-#define SYS_AXI_MMUM_BASE      0xFF800740
-#define SYS_AXI_MMUR_BASE      0xFF800780
-#define SYS_AXI_MMUS0_BASE     0xFF8007C0
-#define SYS_AXI_MMUS1_BASE     0xFF800800
-#define SYS_AXI_MTSB0_BASE     0xFF800880
-#define SYS_AXI_MTSB1_BASE     0xFF8008C0
-#define SYS_AXI_PCI_BASE       0xFF800900
-#define SYS_AXI_RTX_BASE       0xFF800940
-#define SYS_AXI_SDS0_BASE      0xFF800A80
-#define SYS_AXI_SDS1_BASE      0xFF800AC0
-#define SYS_AXI_USB20_BASE     0xFF800C00
-#define SYS_AXI_USB21_BASE     0xFF800C40
-#define SYS_AXI_USB22_BASE     0xFF800C80
-#define SYS_AXI_USB30_BASE     0xFF800CC0
-#define SYS_AXI_AX2M_BASE      0xFF800380
-#define SYS_AXI_CC50_BASE      0xFF8003C0
-#define SYS_AXI_CCI_BASE       0xFF800440
-#define SYS_AXI_CS_BASE                0xFF800480
-#define SYS_AXI_DDM_BASE       0xFF8004C0
-#define SYS_AXI_ETH_BASE       0xFF800500
-#define SYS_AXI_MPXM_BASE      0xFF800840
-#define SYS_AXI_SAT0_BASE      0xFF800980
-#define SYS_AXI_SAT1_BASE      0xFF8009C0
-#define SYS_AXI_SDM0_BASE      0xFF800A00
-#define SYS_AXI_SDM1_BASE      0xFF800A40
-#define SYS_AXI_TRAB_BASE      0xFF800B00
-#define SYS_AXI_UDM0_BASE      0xFF800B80
-#define SYS_AXI_UDM1_BASE      0xFF800BC0
-
-#define RT_AXI_SHX_BASE                0xFF810100
-#define RT_AXI_DBG_BASE                0xFF810140
-#define RT_AXI_RDM_BASE                0xFF810180
-#define RT_AXI_RDS_BASE                0xFF8101C0
-#define RT_AXI_RTX64TO128_BASE 0xFF810200
-#define RT_AXI_STPRO_BASE      0xFF810240
-#define RT_AXI_SY2RT_BASE      0xFF810280
-
-#define MP_AXI_ADSP_BASE       0xFF820100
-#define MP_AXI_ASDS0_BASE      0xFF8201C0
-#define MP_AXI_ASDS1_BASE      0xFF820200
-#define MP_AXI_MLP_BASE                0xFF820240
-#define MP_AXI_MMUMP_BASE      0xFF820280
-#define MP_AXI_SPU_BASE                0xFF8202C0
-#define MP_AXI_SPUC_BASE       0xFF820300
-
-#define SYS_AXI256_AXI128TO256_BASE    0xFF860100
-#define SYS_AXI256_SYX_BASE    0xFF860140
-#define SYS_AXI256_MPX_BASE    0xFF860180
-#define SYS_AXI256_MXI_BASE    0xFF8601C0
-
-#define CCI_AXI_MMUS0_BASE     0xFF880100
-#define CCI_AXI_SYX2_BASE      0xFF880140
-#define CCI_AXI_MMUR_BASE      0xFF880180
-#define CCI_AXI_MMUDS_BASE     0xFF8801C0
-#define CCI_AXI_MMUM_BASE      0xFF880200
-#define CCI_AXI_MXI_BASE       0xFF880240
-#define CCI_AXI_MMUS1_BASE     0xFF880280
-#define CCI_AXI_MMUMP_BASE     0xFF8802C0
-
-#define MEDIA_AXI_MXR_BASE     0xFE960080
-#define MEDIA_AXI_MXW_BASE     0xFE9600C0
-#define MEDIA_AXI_JPR_BASE     0xFE964100
-#define MEDIA_AXI_JPW_BASE     0xFE966100
-#define MEDIA_AXI_GCU0R_BASE   0xFE964140
-#define MEDIA_AXI_GCU0W_BASE   0xFE966140
-#define MEDIA_AXI_GCU1R_BASE   0xFE964180
-#define MEDIA_AXI_GCU1W_BASE   0xFE966180
-#define MEDIA_AXI_TDMR_BASE    0xFE964500
-#define MEDIA_AXI_TDMW_BASE    0xFE966500
-#define MEDIA_AXI_VSP0CR_BASE  0xFE964540
-#define MEDIA_AXI_VSP0CW_BASE  0xFE966540
-#define MEDIA_AXI_VSP1CR_BASE  0xFE964580
-#define MEDIA_AXI_VSP1CW_BASE  0xFE966580
-#define MEDIA_AXI_VSPDU0CR_BASE        0xFE9645C0
-#define MEDIA_AXI_VSPDU0CW_BASE        0xFE9665C0
-#define MEDIA_AXI_VSPDU1CR_BASE        0xFE964600
-#define MEDIA_AXI_VSPDU1CW_BASE        0xFE966600
-#define MEDIA_AXI_VIN0W_BASE   0xFE966900
-#define MEDIA_AXI_VSP0R_BASE   0xFE964D00
-#define MEDIA_AXI_VSP0W_BASE   0xFE966D00
-#define MEDIA_AXI_FDP0R_BASE   0xFE964D40
-#define MEDIA_AXI_FDP0W_BASE   0xFE966D40
-#define MEDIA_AXI_IMSR_BASE    0xFE964D80
-#define MEDIA_AXI_IMSW_BASE    0xFE966D80
-#define MEDIA_AXI_VSP1R_BASE   0xFE965100
-#define MEDIA_AXI_VSP1W_BASE   0xFE967100
-#define MEDIA_AXI_FDP1R_BASE   0xFE965140
-#define MEDIA_AXI_FDP1W_BASE   0xFE967140
-#define MEDIA_AXI_IMRR_BASE    0xFE965180
-#define MEDIA_AXI_IMRW_BASE    0xFE967180
-#define MEDIA_AXI_FDP2R_BASE   0xFE9651C0
-#define MEDIA_AXI_FDP2W_BASE   0xFE966DC0
-#define MEDIA_AXI_VSPD0R_BASE  0xFE965500
-#define MEDIA_AXI_VSPD0W_BASE  0xFE967500
-#define MEDIA_AXI_VSPD1R_BASE  0xFE965540
-#define MEDIA_AXI_VSPD1W_BASE  0xFE967540
-#define MEDIA_AXI_DU0R_BASE    0xFE965580
-#define MEDIA_AXI_DU0W_BASE    0xFE967580
-#define MEDIA_AXI_DU1R_BASE    0xFE9655C0
-#define MEDIA_AXI_DU1W_BASE    0xFE9675C0
-#define MEDIA_AXI_VCP0CR_BASE  0xFE965900
-#define MEDIA_AXI_VCP0CW_BASE  0xFE967900
-#define MEDIA_AXI_VCP0VR_BASE  0xFE965940
-#define MEDIA_AXI_VCP0VW_BASE  0xFE967940
-#define MEDIA_AXI_VPC0R_BASE   0xFE965980
-#define MEDIA_AXI_VCP1CR_BASE  0xFE965D00
-#define MEDIA_AXI_VCP1CW_BASE  0xFE967D00
-#define MEDIA_AXI_VCP1VR_BASE  0xFE965D40
-#define MEDIA_AXI_VCP1VW_BASE  0xFE967D40
-#define MEDIA_AXI_VPC1R_BASE   0xFE965D80
-
-#define SYS_AXI_AVBDMSCR       0xFF802000
-#define SYS_AXI_SYX2DMSCR      0xFF802004
-#define SYS_AXI_CC50DMSCR      0xFF802008
-#define SYS_AXI_CC51DMSCR      0xFF80200C
-#define SYS_AXI_CCIDMSCR       0xFF802010
-#define SYS_AXI_CSDMSCR                0xFF802014
-#define SYS_AXI_DDMDMSCR       0xFF802018
-#define SYS_AXI_ETHDMSCR       0xFF80201C
-#define SYS_AXI_G2DDMSCR       0xFF802020
-#define SYS_AXI_IMP0DMSCR      0xFF802024
-#define SYS_AXI_IMP1DMSCR      0xFF802028
-#define SYS_AXI_LBSDMSCR       0xFF80202C
-#define SYS_AXI_MMUDSDMSCR     0xFF802030
-#define SYS_AXI_MMUMXDMSCR     0xFF802034
-#define SYS_AXI_MMURDDMSCR     0xFF802038
-#define SYS_AXI_MMUS0DMSCR     0xFF80203C
-#define SYS_AXI_MMUS1DMSCR     0xFF802040
-#define SYS_AXI_MPXDMSCR       0xFF802044
-#define SYS_AXI_MTSB0DMSCR     0xFF802048
-#define SYS_AXI_MTSB1DMSCR     0xFF80204C
-#define SYS_AXI_PCIDMSCR       0xFF802050
-#define SYS_AXI_RTXDMSCR       0xFF802054
-#define SYS_AXI_SAT0DMSCR      0xFF802058
-#define SYS_AXI_SAT1DMSCR      0xFF80205C
-#define SYS_AXI_SDM0DMSCR      0xFF802060
-#define SYS_AXI_SDM1DMSCR      0xFF802064
-#define SYS_AXI_SDS0DMSCR      0xFF802068
-#define SYS_AXI_SDS1DMSCR      0xFF80206C
-#define SYS_AXI_ETRABDMSCR     0xFF802070
-#define SYS_AXI_ETRKFDMSCR     0xFF802074
-#define SYS_AXI_UDM0DMSCR      0xFF802078
-#define SYS_AXI_UDM1DMSCR      0xFF80207C
-#define SYS_AXI_USB20DMSCR     0xFF802080
-#define SYS_AXI_USB21DMSCR     0xFF802084
-#define SYS_AXI_USB22DMSCR     0xFF802088
-#define SYS_AXI_USB30DMSCR     0xFF80208C
-#define SYS_AXI_X128TO64SLVDMSCR       0xFF802100
-#define SYS_AXI_X64TO128SLVDMSCR       0xFF802104
-#define SYS_AXI_AVBSLVDMSCR    0xFF802108
-#define SYS_AXI_SYX2SLVDMSCR   0xFF80210C
-#define SYS_AXI_ETHSLVDMSCR    0xFF802110
-#define SYS_AXI_GICSLVDMSCR    0xFF802114
-#define SYS_AXI_IMPSLVDMSCR    0xFF802118
-#define SYS_AXI_IMX0SLVDMSCR   0xFF80211C
-#define SYS_AXI_IMX1SLVDMSCR   0xFF802120
-#define SYS_AXI_IMX2SLVDMSCR   0xFF802124
-#define SYS_AXI_LBSSLVDMSCR    0xFF802128
-#define SYS_AXI_MMC0SLVDMSCR   0xFF80212C
-#define SYS_AXI_MMC1SLVDMSCR   0xFF802130
-#define SYS_AXI_MPXSLVDMSCR    0xFF802134
-#define SYS_AXI_MTSB0SLVDMSCR  0xFF802138
-#define SYS_AXI_MTSB1SLVDMSCR  0xFF80213C
-#define SYS_AXI_MXTSLVDMSCR    0xFF802140
-#define SYS_AXI_PCISLVDMSCR    0xFF802144
-#define SYS_AXI_SYAPBSLVDMSCR  0xFF802148
-#define SYS_AXI_QSAPBSLVDMSCR  0xFF80214C
-#define SYS_AXI_RTXSLVDMSCR    0xFF802150
-#define SYS_AXI_SAT0SLVDMSCR   0xFF802168
-#define SYS_AXI_SAT1SLVDMSCR   0xFF80216C
-#define SYS_AXI_SDAP0SLVDMSCR  0xFF802170
-#define SYS_AXI_SDAP1SLVDMSCR  0xFF802174
-#define SYS_AXI_SDAP2SLVDMSCR  0xFF802178
-#define SYS_AXI_SDAP3SLVDMSCR  0xFF80217C
-#define SYS_AXI_SGXSLVDMSCR    0xFF802180
-#define SYS_AXI_STBSLVDMSCR    0xFF802188
-#define SYS_AXI_STMSLVDMSCR    0xFF80218C
-#define SYS_AXI_TSPL0SLVDMSCR  0xFF802194
-#define SYS_AXI_TSPL1SLVDMSCR  0xFF802198
-#define SYS_AXI_TSPL2SLVDMSCR  0xFF80219C
-#define SYS_AXI_USB20SLVDMSCR  0xFF8021A0
-#define SYS_AXI_USB21SLVDMSCR  0xFF8021A4
-#define SYS_AXI_USB22SLVDMSCR  0xFF8021A8
-#define SYS_AXI_USB30SLVDMSCR  0xFF8021AC
-
-#define RT_AXI_CBMDMSCR                0xFF812000
-#define RT_AXI_DBDMSCR         0xFF812004
-#define RT_AXI_RDMDMSCR                0xFF812008
-#define RT_AXI_RDSDMSCR                0xFF81200C
-#define RT_AXI_STRDMSCR                0xFF812010
-#define RT_AXI_SY2RTDMSCR      0xFF812014
-#define RT_AXI_CBSSLVDMSCR     0xFF812100
-#define RT_AXI_DBSSLVDMSCR     0xFF812104
-#define RT_AXI_RTAP1SLVDMSCR   0xFF812108
-#define RT_AXI_RTAP2SLVDMSCR   0xFF81210C
-#define RT_AXI_RTAP3SLVDMSCR   0xFF812110
-#define RT_AXI_RT2SYSLVDMSCR   0xFF812114
-#define RT_AXI_A128TO64SLVDMSCR        0xFF812118
-#define RT_AXI_A64TO128SLVDMSCR        0xFF81211C
-#define RT_AXI_A64TO128CSLVDMSCR       0xFF812120
-#define RT_AXI_UTLBRSLVDMSCR   0xFF812128
-
-#define MP_AXI_ADSPDMSCR       0xFF822000
-#define MP_AXI_ASDM0DMSCR      0xFF822004
-#define MP_AXI_ASDM1DMSCR      0xFF822008
-#define MP_AXI_ASDS0DMSCR      0xFF82200C
-#define MP_AXI_ASDS1DMSCR      0xFF822010
-#define MP_AXI_MLPDMSCR                0xFF822014
-#define MP_AXI_MMUMPDMSCR      0xFF822018
-#define MP_AXI_SPUDMSCR                0xFF82201C
-#define MP_AXI_SPUCDMSCR       0xFF822020
-#define MP_AXI_SY2MPDMSCR      0xFF822024
-#define MP_AXI_ADSPSLVDMSCR    0xFF822100
-#define MP_AXI_MLMSLVDMSCR     0xFF822104
-#define MP_AXI_MPAP4SLVDMSCR   0xFF822108
-#define MP_AXI_MPAP5SLVDMSCR   0xFF82210C
-#define MP_AXI_MPAP6SLVDMSCR   0xFF822110
-#define MP_AXI_MPAP7SLVDMSCR   0xFF822114
-#define MP_AXI_MP2SYSLVDMSCR   0xFF822118
-#define MP_AXI_MP2SY2SLVDMSCR  0xFF82211C
-#define MP_AXI_MPXAPSLVDMSCR   0xFF822124
-#define MP_AXI_SPUSLVDMSCR     0xFF822128
-#define MP_AXI_UTLBMPSLVDMSCR  0xFF82212C
-
-#define ADM_AXI_ASDM0DMSCR     0xFF842000
-#define ADM_AXI_ASDM1DMSCR     0xFF842004
-#define ADM_AXI_MPAP1SLVDMSCR  0xFF842104
-#define ADM_AXI_MPAP2SLVDMSCR  0xFF842108
-#define ADM_AXI_MPAP3SLVDMSCR  0xFF84210C
-
-#define DM_AXI_RDMDMSCR                0xFF852000
-#define DM_AXI_SDM0DMSCR       0xFF852004
-#define DM_AXI_SDM1DMSCR       0xFF852008
-#define DM_AXI_MMAP0SLVDMSCR   0xFF852100
-#define DM_AXI_MMAP1SLVDMSCR   0xFF852104
-#define DM_AXI_QSPAPSLVDMSCR   0xFF852108
-#define DM_AXI_RAP4SLVDMSCR    0xFF85210C
-#define DM_AXI_RAP5SLVDMSCR    0xFF852110
-#define DM_AXI_SAP4SLVDMSCR    0xFF852114
-#define DM_AXI_SAP5SLVDMSCR    0xFF852118
-#define DM_AXI_SAP6SLVDMSCR    0xFF85211C
-#define DM_AXI_SAP65SLVDMSCR   0xFF852120
-#define DM_AXI_SDAP0SLVDMSCR   0xFF852124
-#define DM_AXI_SDAP1SLVDMSCR   0xFF852128
-#define DM_AXI_SDAP2SLVDMSCR   0xFF85212C
-#define DM_AXI_SDAP3SLVDMSCR   0xFF852130
-
-#define SYS_AXI256_SYXDMSCR    0xFF862000
-#define SYS_AXI256_MPXDMSCR    0xFF862004
-#define SYS_AXI256_MXIDMSCR    0xFF862008
-#define SYS_AXI256_X128TO256SLVDMSCR   0xFF862100
-#define SYS_AXI256_X256TO128SLVDMSCR   0xFF862104
-#define SYS_AXI256_SYXSLVDMSCR 0xFF862108
-#define SYS_AXI256_CCXSLVDMSCR 0xFF86210C
-#define SYS_AXI256_S3CSLVDMSCR 0xFF862110
-
-#define MXT_SYXDMSCR           0xFF872000
-#define MXT_CMM0SLVDMSCR       0xFF872100
-#define MXT_CMM1SLVDMSCR       0xFF872104
-#define MXT_CMM2SLVDMSCR       0xFF872108
-#define MXT_FDPSLVDMSCR                0xFF87210C
-#define MXT_IMRSLVDMSCR                0xFF872110
-#define MXT_VINSLVDMSCR                0xFF872114
-#define MXT_VPC0SLVDMSCR       0xFF872118
-#define MXT_VPC1SLVDMSCR       0xFF87211C
-#define MXT_VSP0SLVDMSCR       0xFF872120
-#define MXT_VSP1SLVDMSCR       0xFF872124
-#define MXT_VSPD0SLVDMSCR      0xFF872128
-#define MXT_VSPD1SLVDMSCR      0xFF87212C
-#define MXT_MAP1SLVDMSCR       0xFF872130
-#define MXT_MAP2SLVDMSCR       0xFF872134
-
-#define CCI_AXI_MMUS0DMSCR     0xFF882000
-#define CCI_AXI_SYX2DMSCR      0xFF882004
-#define CCI_AXI_MMURDMSCR      0xFF882008
-#define CCI_AXI_MMUDSDMSCR     0xFF88200C
-#define CCI_AXI_MMUMDMSCR      0xFF882010
-#define CCI_AXI_MXIDMSCR       0xFF882014
-#define CCI_AXI_MMUS1DMSCR     0xFF882018
-#define CCI_AXI_MMUMPDMSCR     0xFF88201C
-#define CCI_AXI_DVMDMSCR       0xFF882020
-#define CCI_AXI_CCISLVDMSCR    0xFF882100
-
-#define CCI_AXI_IPMMUIDVMCR    0xFF880400
-#define CCI_AXI_IPMMURDVMCR    0xFF880404
-#define CCI_AXI_IPMMUS0DVMCR   0xFF880408
-#define CCI_AXI_IPMMUS1DVMCR   0xFF88040C
-#define CCI_AXI_IPMMUMPDVMCR   0xFF880410
-#define CCI_AXI_IPMMUDSDVMCR   0xFF880414
-#define CCI_AXI_AX2ADDRMASK    0xFF88041C
-
-#ifndef __ASSEMBLY__
-#include <asm/types.h>
-
-/* RWDT */
-struct r8a7791_rwdt {
-       u32 rwtcnt;     /* 0x00 */
-       u32 rwtcsra;    /* 0x04 */
-       u16 rwtcsrb;    /* 0x08 */
-};
-
-/* SWDT */
-struct r8a7791_swdt {
-       u32 swtcnt;     /* 0x00 */
-       u32 swtcsra;    /* 0x04 */
-       u16 swtcsrb;    /* 0x08 */
-};
-
-/* LBSC */
-struct r8a7791_lbsc {
-       u32 cs0ctrl;
-       u32 cs1ctrl;
-       u32 ecs0ctrl;
-       u32 ecs1ctrl;
-       u32 ecs2ctrl;
-       u32 ecs3ctrl;
-       u32 ecs4ctrl;
-       u32 ecs5ctrl;
-       u32 dummy0[4];  /* 0x20 .. 0x2C */
-       u32 cswcr0;
-       u32 cswcr1;
-       u32 ecswcr0;
-       u32 ecswcr1;
-       u32 ecswcr2;
-       u32 ecswcr3;
-       u32 ecswcr4;
-       u32 ecswcr5;
-       u32 exdmawcr0;
-       u32 exdmawcr1;
-       u32 exdmawcr2;
-       u32 dummy1[9];  /* 0x5C .. 0x7C */
-       u32 cspwcr0;
-       u32 cspwcr1;
-       u32 ecspwcr0;
-       u32 ecspwcr1;
-       u32 ecspwcr2;
-       u32 ecspwcr3;
-       u32 ecspwcr4;
-       u32 ecspwcr5;
-       u32 exwtsync;
-       u32 dummy2[3];  /* 0xA4 .. 0xAC */
-       u32 cs0bstctl;
-       u32 cs0btph;
-       u32 dummy3[2];  /* 0xB8 .. 0xBC */
-       u32 cs1gdst;
-       u32 ecs0gdst;
-       u32 ecs1gdst;
-       u32 ecs2gdst;
-       u32 ecs3gdst;
-       u32 ecs4gdst;
-       u32 ecs5gdst;
-       u32 dummy4[5];  /* 0xDC .. 0xEC */
-       u32 exdmaset0;
-       u32 exdmaset1;
-       u32 exdmaset2;
-       u32 dummy5[5];  /* 0xFC .. 0x10C */
-       u32 exdmcr0;
-       u32 exdmcr1;
-       u32 exdmcr2;
-       u32 dummy6[5];  /* 0x11C .. 0x12C */
-       u32 bcintsr;
-       u32 bcintcr;
-       u32 bcintmr;
-       u32 dummy7;     /* 0x13C */
-       u32 exbatlv;
-       u32 exwtsts;
-       u32 dummy8[14]; /* 0x148 .. 0x17C */
-       u32 atacsctrl;
-       u32 dummy9[15]; /* 0x184 .. 0x1BC */
-       u32 exbct;
-       u32 extct;
-};
-
-/* DBSC3 */
-struct r8a7791_dbsc3 {
-       u32 dummy0[3];  /* 0x00 .. 0x08 */
-       u32 dbstate1;
-       u32 dbacen;
-       u32 dbrfen;
-       u32 dbcmd;
-       u32 dbwait;
-       u32 dbkind;
-       u32 dbconf0;
-       u32 dummy1[2];  /* 0x28 .. 0x2C */
-       u32 dbphytype;
-       u32 dummy2[3];  /* 0x34 .. 0x3C */
-       u32 dbtr0;
-       u32 dbtr1;
-       u32 dbtr2;
-       u32 dummy3;     /* 0x4C */
-       u32 dbtr3;
-       u32 dbtr4;
-       u32 dbtr5;
-       u32 dbtr6;
-       u32 dbtr7;
-       u32 dbtr8;
-       u32 dbtr9;
-       u32 dbtr10;
-       u32 dbtr11;
-       u32 dbtr12;
-       u32 dbtr13;
-       u32 dbtr14;
-       u32 dbtr15;
-       u32 dbtr16;
-       u32 dbtr17;
-       u32 dbtr18;
-       u32 dbtr19;
-       u32 dummy4[7];  /* 0x94 .. 0xAC */
-       u32 dbbl;
-       u32 dummy5[3];  /* 0xB4 .. 0xBC */
-       u32 dbadj0;
-       u32 dummy6;     /* 0xC4 */
-       u32 dbadj2;
-       u32 dummy7[5];  /* 0xCC .. 0xDC */
-       u32 dbrfcnf0;
-       u32 dbrfcnf1;
-       u32 dbrfcnf2;
-       u32 dummy8[2];  /* 0xEC .. 0xF0 */
-       u32 dbcalcnf;
-       u32 dbcaltr;
-       u32 dummy9;     /* 0xFC */
-       u32 dbrnk0;
-       u32 dummy10[31];        /* 0x104 .. 0x17C */
-       u32 dbpdncnf;
-       u32 dummy11[47];        /* 0x184 ..0x23C */
-       u32 dbdfistat;
-       u32 dbdficnt;
-       u32 dummy12[14];        /* 0x248 .. 0x27C */
-       u32 dbpdlck;
-       u32 dummy13[3]; /* 0x284 .. 0x28C */
-       u32 dbpdrga;
-       u32 dummy14[3]; /* 0x294 .. 0x29C */
-       u32 dbpdrgd;
-       u32 dummy15[24];        /* 0x2A4 .. 0x300 */
-       u32 dbbs0cnt1;
-       u32 dummy16[30];        /* 0x308 .. 0x37C */
-       u32 dbwt0cnf0;
-       u32 dbwt0cnf1;
-       u32 dbwt0cnf2;
-       u32 dbwt0cnf3;
-       u32 dbwt0cnf4;
-};
-
-/* GPIO */
-struct r8a7791_gpio {
-       u32 iointsel;
-       u32 inoutsel;
-       u32 outdt;
-       u32 indt;
-       u32 intdt;
-       u32 intclr;
-       u32 intmsk;
-       u32 posneg;
-       u32 edglevel;
-       u32 filonoff;
-       u32 intmsks;
-       u32 mskclrs;
-       u32 outdtsel;
-       u32 outdth;
-       u32 outdtl;
-       u32 bothedge;
-};
-
-/* S3C(QoS) */
-struct r8a7791_s3c {
-       u32 s3cexcladdmsk;
-       u32 s3cexclidmsk;
-       u32 s3cadsplcr;
-       u32 s3cmaar;
-       u32 dummy0;     /* 0x10 */
-       u32 s3crorr;
-       u32 s3cworr;
-       u32 s3carcr22;
-       u32 dummy1[2];  /* 0x20 .. 0x24 */
-       u32 s3cmctr;
-       u32 dummy2;     /* 0x2C */
-       u32 cconf0;
-       u32 cconf1;
-       u32 cconf2;
-       u32 cconf3;
-};
-
-struct r8a7791_s3c_qos {
-       u32 s3cqos0;
-       u32 s3cqos1;
-       u32 s3cqos2;
-       u32 s3cqos3;
-       u32 s3cqos4;
-       u32 s3cqos5;
-       u32 s3cqos6;
-       u32 s3cqos7;
-       u32 s3cqos8;
-};
-
-/* DBSC(QoS) */
-struct r8a7791_dbsc3_qos {
-       u32 dblgcnt;
-       u32 dbtmval0;
-       u32 dbtmval1;
-       u32 dbtmval2;
-       u32 dbtmval3;
-       u32 dbrqctr;
-       u32 dbthres0;
-       u32 dbthres1;
-       u32 dbthres2;
-       u32 dummy0;     /* 0x24 */
-       u32 dblgqon;
-};
-
-/* MXI(QoS) */
-struct r8a7791_mxi {
-       u32 mxsaar0;
-       u32 mxsaar1;
-       u32 dummy0[8];  /* 0x08 .. 0x24 */
-       u32 mxs3cracr;
-       u32 dummy1[3];  /* 0x2C .. 0x34 */
-       u32 mxs3cwacr;
-       u32 dummy2;     /* 0x3C */
-       u32 mxrtcr;
-       u32 mxwtcr;
-};
-
-struct r8a7791_mxi_qos {
-       u32 vspdu0;
-       u32 vspdu1;
-       u32 du0;
-       u32 du1;
-};
-
-/* AXI(QoS) */
-struct r8a7791_axi_qos {
-       u32 qosconf;
-       u32 qosctset0;
-       u32 qosctset1;
-       u32 qosctset2;
-       u32 qosctset3;
-       u32 qosreqctr;
-       u32 qosthres0;
-       u32 qosthres1;
-       u32 qosthres2;
-       u32 qosqon;
-};
-
-#endif
+#define R8A7791_CUT_ES2X       2
+#define IS_R8A7791_ES2()       \
+       (rmobile_get_cpu_rev_integer() == R8A7791_CUT_ES2X)
 
 #endif /* __ASM_ARCH_R8A7791_H */
diff --git a/arch/arm/include/asm/arch-rmobile/rcar-base.h b/arch/arm/include/asm/arch-rmobile/rcar-base.h
new file mode 100644 (file)
index 0000000..41240f3
--- /dev/null
@@ -0,0 +1,645 @@
+/*
+ * arch/arm/include/asm/arch-rmobile/rcar-base.h
+ *
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0
+*/
+
+#ifndef __ASM_ARCH_RCAR_BASE_H
+#define __ASM_ARCH_RCAR_BASE_H
+
+/*
+ * R-Car (R8A7790/R8A7791) I/O Addresses
+ */
+#define RWDT_BASE              0xE6020000
+#define SWDT_BASE              0xE6030000
+#define LBSC_BASE              0xFEC00200
+#define DBSC3_0_BASE           0xE6790000
+#define DBSC3_1_BASE           0xE67A0000
+#define TMU_BASE               0xE61E0000
+#define GPIO5_BASE             0xE6055000
+#define SH_QSPI_BASE           0xE6B10000
+
+/* SCIF */
+#define SCIF0_BASE             0xE6E60000
+#define SCIF1_BASE             0xE6E68000
+#define SCIF2_BASE             0xE6E58000
+#define SCIF3_BASE             0xE6EA8000
+#define SCIF4_BASE             0xE6EE0000
+#define SCIF5_BASE             0xE6EE8000
+
+#define S3C_BASE               0xE6784000
+#define S3C_INT_BASE           0xE6784A00
+#define S3C_MEDIA_BASE         0xE6784B00
+
+#define S3C_QOS_DCACHE_BASE    0xE6784BDC
+#define S3C_QOS_CCI0_BASE      0xE6784C00
+#define S3C_QOS_CCI1_BASE      0xE6784C24
+#define S3C_QOS_MXI_BASE       0xE6784C48
+#define S3C_QOS_AXI_BASE       0xE6784C6C
+
+#define DBSC3_0_QOS_R0_BASE    0xE6791000
+#define DBSC3_0_QOS_R1_BASE    0xE6791100
+#define DBSC3_0_QOS_R2_BASE    0xE6791200
+#define DBSC3_0_QOS_R3_BASE    0xE6791300
+#define DBSC3_0_QOS_R4_BASE    0xE6791400
+#define DBSC3_0_QOS_R5_BASE    0xE6791500
+#define DBSC3_0_QOS_R6_BASE    0xE6791600
+#define DBSC3_0_QOS_R7_BASE    0xE6791700
+#define DBSC3_0_QOS_R8_BASE    0xE6791800
+#define DBSC3_0_QOS_R9_BASE    0xE6791900
+#define DBSC3_0_QOS_R10_BASE   0xE6791A00
+#define DBSC3_0_QOS_R11_BASE   0xE6791B00
+#define DBSC3_0_QOS_R12_BASE   0xE6791C00
+#define DBSC3_0_QOS_R13_BASE   0xE6791D00
+#define DBSC3_0_QOS_R14_BASE   0xE6791E00
+#define DBSC3_0_QOS_R15_BASE   0xE6791F00
+#define DBSC3_0_QOS_W0_BASE    0xE6792000
+#define DBSC3_0_QOS_W1_BASE    0xE6792100
+#define DBSC3_0_QOS_W2_BASE    0xE6792200
+#define DBSC3_0_QOS_W3_BASE    0xE6792300
+#define DBSC3_0_QOS_W4_BASE    0xE6792400
+#define DBSC3_0_QOS_W5_BASE    0xE6792500
+#define DBSC3_0_QOS_W6_BASE    0xE6792600
+#define DBSC3_0_QOS_W7_BASE    0xE6792700
+#define DBSC3_0_QOS_W8_BASE    0xE6792800
+#define DBSC3_0_QOS_W9_BASE    0xE6792900
+#define DBSC3_0_QOS_W10_BASE   0xE6792A00
+#define DBSC3_0_QOS_W11_BASE   0xE6792B00
+#define DBSC3_0_QOS_W12_BASE   0xE6792C00
+#define DBSC3_0_QOS_W13_BASE   0xE6792D00
+#define DBSC3_0_QOS_W14_BASE   0xE6792E00
+#define DBSC3_0_QOS_W15_BASE   0xE6792F00
+#define DBSC3_0_DBADJ2         0xE67900C8
+
+#define CCI_400_MAXOT_1                0xF0091110
+#define CCI_400_MAXOT_2                0xF0092110
+#define CCI_400_QOSCNTL_1      0xF009110C
+#define CCI_400_QOSCNTL_2      0xF009210C
+
+#define        MXI_BASE                0xFE960000
+#define        MXI_QOS_BASE            0xFE960300
+
+#define SYS_AXI_SYX64TO128_BASE        0xFF800300
+#define SYS_AXI_AVB_BASE       0xFF800340
+#define SYS_AXI_G2D_BASE       0xFF800540
+#define SYS_AXI_IMP0_BASE      0xFF800580
+#define SYS_AXI_IMP1_BASE      0xFF8005C0
+#define SYS_AXI_IMUX0_BASE     0xFF800600
+#define SYS_AXI_IMUX1_BASE     0xFF800640
+#define SYS_AXI_IMUX2_BASE     0xFF800680
+#define SYS_AXI_LBS_BASE       0xFF8006C0
+#define SYS_AXI_MMUDS_BASE     0xFF800700
+#define SYS_AXI_MMUM_BASE      0xFF800740
+#define SYS_AXI_MMUR_BASE      0xFF800780
+#define SYS_AXI_MMUS0_BASE     0xFF8007C0
+#define SYS_AXI_MMUS1_BASE     0xFF800800
+#define SYS_AXI_MTSB0_BASE     0xFF800880
+#define SYS_AXI_MTSB1_BASE     0xFF8008C0
+#define SYS_AXI_PCI_BASE       0xFF800900
+#define SYS_AXI_RTX_BASE       0xFF800940
+#define SYS_AXI_SDS0_BASE      0xFF800A80
+#define SYS_AXI_SDS1_BASE      0xFF800AC0
+#define SYS_AXI_USB20_BASE     0xFF800C00
+#define SYS_AXI_USB21_BASE     0xFF800C40
+#define SYS_AXI_USB22_BASE     0xFF800C80
+#define SYS_AXI_USB30_BASE     0xFF800CC0
+#define SYS_AXI_AX2M_BASE      0xFF800380
+#define SYS_AXI_CC50_BASE      0xFF8003C0
+#define SYS_AXI_CCI_BASE       0xFF800440
+#define SYS_AXI_CS_BASE                0xFF800480
+#define SYS_AXI_DDM_BASE       0xFF8004C0
+#define SYS_AXI_ETH_BASE       0xFF800500
+#define SYS_AXI_MPXM_BASE      0xFF800840
+#define SYS_AXI_SAT0_BASE      0xFF800980
+#define SYS_AXI_SAT1_BASE      0xFF8009C0
+#define SYS_AXI_SDM0_BASE      0xFF800A00
+#define SYS_AXI_SDM1_BASE      0xFF800A40
+#define SYS_AXI_TRAB_BASE      0xFF800B00
+#define SYS_AXI_UDM0_BASE      0xFF800B80
+#define SYS_AXI_UDM1_BASE      0xFF800BC0
+
+#define RT_AXI_SHX_BASE                0xFF810100
+#define RT_AXI_DBG_BASE                0xFF810140 /* R8A7791 only */
+#define RT_AXI_RDM_BASE                0xFF810180 /* R8A7791 only */
+#define RT_AXI_RDS_BASE                0xFF8101C0
+#define RT_AXI_RTX64TO128_BASE 0xFF810200
+#define RT_AXI_STPRO_BASE      0xFF810240
+#define RT_AXI_SY2RT_BASE      0xFF810280 /* R8A7791 only */
+
+#define MP_AXI_ADSP_BASE       0xFF820100
+#define MP_AXI_ASDS0_BASE      0xFF8201C0
+#define MP_AXI_ASDS1_BASE      0xFF820200
+#define MP_AXI_MLP_BASE                0xFF820240
+#define MP_AXI_MMUMP_BASE      0xFF820280
+#define MP_AXI_SPU_BASE                0xFF8202C0
+#define MP_AXI_SPUC_BASE       0xFF820300
+
+#define SYS_AXI256_AXI128TO256_BASE    0xFF860100
+#define SYS_AXI256_SYX_BASE    0xFF860140
+#define SYS_AXI256_MPX_BASE    0xFF860180
+#define SYS_AXI256_MXI_BASE    0xFF8601C0
+
+#define CCI_AXI_MMUS0_BASE     0xFF880100
+#define CCI_AXI_SYX2_BASE      0xFF880140
+#define CCI_AXI_MMUR_BASE      0xFF880180
+#define CCI_AXI_MMUDS_BASE     0xFF8801C0
+#define CCI_AXI_MMUM_BASE      0xFF880200
+#define CCI_AXI_MXI_BASE       0xFF880240
+#define CCI_AXI_MMUS1_BASE     0xFF880280
+#define CCI_AXI_MMUMP_BASE     0xFF8802C0
+
+#define MEDIA_AXI_MXR_BASE     0xFE960080 /* R8A7791 only */
+#define MEDIA_AXI_MXW_BASE     0xFE9600C0 /* R8A7791 only */
+#define MEDIA_AXI_JPR_BASE     0xFE964100
+#define MEDIA_AXI_JPW_BASE     0xFE966100
+#define MEDIA_AXI_GCU0R_BASE   0xFE964140
+#define MEDIA_AXI_GCU0W_BASE   0xFE966140
+#define MEDIA_AXI_GCU1R_BASE   0xFE964180
+#define MEDIA_AXI_GCU1W_BASE   0xFE966180
+#define MEDIA_AXI_TDMR_BASE    0xFE964500
+#define MEDIA_AXI_TDMW_BASE    0xFE966500
+#define MEDIA_AXI_VSP0CR_BASE  0xFE964540
+#define MEDIA_AXI_VSP0CW_BASE  0xFE966540
+#define MEDIA_AXI_VSP1CR_BASE  0xFE964580
+#define MEDIA_AXI_VSP1CW_BASE  0xFE966580
+#define MEDIA_AXI_VSPDU0CR_BASE        0xFE9645C0
+#define MEDIA_AXI_VSPDU0CW_BASE        0xFE9665C0
+#define MEDIA_AXI_VSPDU1CR_BASE        0xFE964600
+#define MEDIA_AXI_VSPDU1CW_BASE        0xFE966600
+#define MEDIA_AXI_VIN0W_BASE   0xFE966900
+#define MEDIA_AXI_VSP0R_BASE   0xFE964D00
+#define MEDIA_AXI_VSP0W_BASE   0xFE966D00
+#define MEDIA_AXI_FDP0R_BASE   0xFE964D40
+#define MEDIA_AXI_FDP0W_BASE   0xFE966D40
+#define MEDIA_AXI_IMSR_BASE    0xFE964D80
+#define MEDIA_AXI_IMSW_BASE    0xFE966D80
+#define MEDIA_AXI_VSP1R_BASE   0xFE965100
+#define MEDIA_AXI_VSP1W_BASE   0xFE967100
+#define MEDIA_AXI_FDP1R_BASE   0xFE965140
+#define MEDIA_AXI_FDP1W_BASE   0xFE967140
+#define MEDIA_AXI_IMRR_BASE    0xFE965180
+#define MEDIA_AXI_IMRW_BASE    0xFE967180
+#define MEDIA_AXI_FDP2R_BASE   0xFE9651C0
+#define MEDIA_AXI_FDP2W_BASE   0xFE966DC0
+#define MEDIA_AXI_VSPD0R_BASE  0xFE965500
+#define MEDIA_AXI_VSPD0W_BASE  0xFE967500
+#define MEDIA_AXI_VSPD1R_BASE  0xFE965540
+#define MEDIA_AXI_VSPD1W_BASE  0xFE967540
+#define MEDIA_AXI_DU0R_BASE    0xFE965580
+#define MEDIA_AXI_DU0W_BASE    0xFE967580
+#define MEDIA_AXI_DU1R_BASE    0xFE9655C0
+#define MEDIA_AXI_DU1W_BASE    0xFE9675C0
+#define MEDIA_AXI_VCP0CR_BASE  0xFE965900
+#define MEDIA_AXI_VCP0CW_BASE  0xFE967900
+#define MEDIA_AXI_VCP0VR_BASE  0xFE965940
+#define MEDIA_AXI_VCP0VW_BASE  0xFE967940
+#define MEDIA_AXI_VPC0R_BASE   0xFE965980
+#define MEDIA_AXI_VCP1CR_BASE  0xFE965D00
+#define MEDIA_AXI_VCP1CW_BASE  0xFE967D00
+#define MEDIA_AXI_VCP1VR_BASE  0xFE965D40
+#define MEDIA_AXI_VCP1VW_BASE  0xFE967D40
+#define MEDIA_AXI_VPC1R_BASE   0xFE965D80
+
+#define SYS_AXI_AVBDMSCR       0xFF802000
+#define SYS_AXI_SYX2DMSCR      0xFF802004
+#define SYS_AXI_CC50DMSCR      0xFF802008
+#define SYS_AXI_CC51DMSCR      0xFF80200C
+#define SYS_AXI_CCIDMSCR       0xFF802010
+#define SYS_AXI_CSDMSCR                0xFF802014
+#define SYS_AXI_DDMDMSCR       0xFF802018
+#define SYS_AXI_ETHDMSCR       0xFF80201C
+#define SYS_AXI_G2DDMSCR       0xFF802020
+#define SYS_AXI_IMP0DMSCR      0xFF802024
+#define SYS_AXI_IMP1DMSCR      0xFF802028
+#define SYS_AXI_LBSDMSCR       0xFF80202C
+#define SYS_AXI_MMUDSDMSCR     0xFF802030
+#define SYS_AXI_MMUMXDMSCR     0xFF802034
+#define SYS_AXI_MMURDDMSCR     0xFF802038
+#define SYS_AXI_MMUS0DMSCR     0xFF80203C
+#define SYS_AXI_MMUS1DMSCR     0xFF802040
+#define SYS_AXI_MPXDMSCR       0xFF802044
+#define SYS_AXI_MTSB0DMSCR     0xFF802048
+#define SYS_AXI_MTSB1DMSCR     0xFF80204C
+#define SYS_AXI_PCIDMSCR       0xFF802050
+#define SYS_AXI_RTXDMSCR       0xFF802054
+#define SYS_AXI_SAT0DMSCR      0xFF802058
+#define SYS_AXI_SAT1DMSCR      0xFF80205C
+#define SYS_AXI_SDM0DMSCR      0xFF802060
+#define SYS_AXI_SDM1DMSCR      0xFF802064
+#define SYS_AXI_SDS0DMSCR      0xFF802068
+#define SYS_AXI_SDS1DMSCR      0xFF80206C
+#define SYS_AXI_ETRABDMSCR     0xFF802070
+#define SYS_AXI_ETRKFDMSCR     0xFF802074
+#define SYS_AXI_UDM0DMSCR      0xFF802078
+#define SYS_AXI_UDM1DMSCR      0xFF80207C
+#define SYS_AXI_USB20DMSCR     0xFF802080
+#define SYS_AXI_USB21DMSCR     0xFF802084
+#define SYS_AXI_USB22DMSCR     0xFF802088
+#define SYS_AXI_USB30DMSCR     0xFF80208C
+#define SYS_AXI_X128TO64SLVDMSCR       0xFF802100
+#define SYS_AXI_X64TO128SLVDMSCR       0xFF802104
+#define SYS_AXI_AVBSLVDMSCR    0xFF802108
+#define SYS_AXI_SYX2SLVDMSCR   0xFF80210C
+#define SYS_AXI_ETHSLVDMSCR    0xFF802110
+#define SYS_AXI_GICSLVDMSCR    0xFF802114
+#define SYS_AXI_IMPSLVDMSCR    0xFF802118
+#define SYS_AXI_IMX0SLVDMSCR   0xFF80211C
+#define SYS_AXI_IMX1SLVDMSCR   0xFF802120
+#define SYS_AXI_IMX2SLVDMSCR   0xFF802124
+#define SYS_AXI_LBSSLVDMSCR    0xFF802128
+#define SYS_AXI_MMC0SLVDMSCR   0xFF80212C
+#define SYS_AXI_MMC1SLVDMSCR   0xFF802130
+#define SYS_AXI_MPXSLVDMSCR    0xFF802134
+#define SYS_AXI_MTSB0SLVDMSCR  0xFF802138
+#define SYS_AXI_MTSB1SLVDMSCR  0xFF80213C
+#define SYS_AXI_MXTSLVDMSCR    0xFF802140
+#define SYS_AXI_PCISLVDMSCR    0xFF802144
+#define SYS_AXI_SYAPBSLVDMSCR  0xFF802148
+#define SYS_AXI_QSAPBSLVDMSCR  0xFF80214C
+#define SYS_AXI_RTXSLVDMSCR    0xFF802150
+#define SYS_AXI_SAT0SLVDMSCR   0xFF802168
+#define SYS_AXI_SAT1SLVDMSCR   0xFF80216C
+#define SYS_AXI_SDAP0SLVDMSCR  0xFF802170
+#define SYS_AXI_SDAP1SLVDMSCR  0xFF802174
+#define SYS_AXI_SDAP2SLVDMSCR  0xFF802178
+#define SYS_AXI_SDAP3SLVDMSCR  0xFF80217C
+#define SYS_AXI_SGXSLVDMSCR    0xFF802180
+#define SYS_AXI_STBSLVDMSCR    0xFF802188
+#define SYS_AXI_STMSLVDMSCR    0xFF80218C
+#define SYS_AXI_TSPL0SLVDMSCR  0xFF802194
+#define SYS_AXI_TSPL1SLVDMSCR  0xFF802198
+#define SYS_AXI_TSPL2SLVDMSCR  0xFF80219C
+#define SYS_AXI_USB20SLVDMSCR  0xFF8021A0
+#define SYS_AXI_USB21SLVDMSCR  0xFF8021A4
+#define SYS_AXI_USB22SLVDMSCR  0xFF8021A8
+#define SYS_AXI_USB30SLVDMSCR  0xFF8021AC
+
+#define RT_AXI_CBMDMSCR                0xFF812000
+#define RT_AXI_DBDMSCR         0xFF812004
+#define RT_AXI_RDMDMSCR                0xFF812008
+#define RT_AXI_RDSDMSCR                0xFF81200C
+#define RT_AXI_STRDMSCR                0xFF812010
+#define RT_AXI_SY2RTDMSCR      0xFF812014
+#define RT_AXI_CBSSLVDMSCR     0xFF812100
+#define RT_AXI_DBSSLVDMSCR     0xFF812104
+#define RT_AXI_RTAP1SLVDMSCR   0xFF812108
+#define RT_AXI_RTAP2SLVDMSCR   0xFF81210C
+#define RT_AXI_RTAP3SLVDMSCR   0xFF812110
+#define RT_AXI_RT2SYSLVDMSCR   0xFF812114
+#define RT_AXI_A128TO64SLVDMSCR        0xFF812118
+#define RT_AXI_A64TO128SLVDMSCR        0xFF81211C
+#define RT_AXI_A64TO128CSLVDMSCR       0xFF812120
+#define RT_AXI_UTLBRSLVDMSCR   0xFF812128
+
+#define MP_AXI_ADSPDMSCR       0xFF822000
+#define MP_AXI_ASDM0DMSCR      0xFF822004
+#define MP_AXI_ASDM1DMSCR      0xFF822008
+#define MP_AXI_ASDS0DMSCR      0xFF82200C
+#define MP_AXI_ASDS1DMSCR      0xFF822010
+#define MP_AXI_MLPDMSCR                0xFF822014
+#define MP_AXI_MMUMPDMSCR      0xFF822018
+#define MP_AXI_SPUDMSCR                0xFF82201C
+#define MP_AXI_SPUCDMSCR       0xFF822020
+#define MP_AXI_SY2MPDMSCR      0xFF822024
+#define MP_AXI_ADSPSLVDMSCR    0xFF822100
+#define MP_AXI_MLMSLVDMSCR     0xFF822104
+#define MP_AXI_MPAP4SLVDMSCR   0xFF822108
+#define MP_AXI_MPAP5SLVDMSCR   0xFF82210C
+#define MP_AXI_MPAP6SLVDMSCR   0xFF822110
+#define MP_AXI_MPAP7SLVDMSCR   0xFF822114
+#define MP_AXI_MP2SYSLVDMSCR   0xFF822118
+#define MP_AXI_MP2SY2SLVDMSCR  0xFF82211C
+#define MP_AXI_MPXAPSLVDMSCR   0xFF822124
+#define MP_AXI_SPUSLVDMSCR     0xFF822128
+#define MP_AXI_UTLBMPSLVDMSCR  0xFF82212C
+
+#define ADM_AXI_ASDM0DMSCR     0xFF842000
+#define ADM_AXI_ASDM1DMSCR     0xFF842004
+#define ADM_AXI_MPAP1SLVDMSCR  0xFF842104
+#define ADM_AXI_MPAP2SLVDMSCR  0xFF842108
+#define ADM_AXI_MPAP3SLVDMSCR  0xFF84210C
+
+#define DM_AXI_RDMDMSCR                0xFF852000
+#define DM_AXI_SDM0DMSCR       0xFF852004
+#define DM_AXI_SDM1DMSCR       0xFF852008
+#define DM_AXI_MMAP0SLVDMSCR   0xFF852100
+#define DM_AXI_MMAP1SLVDMSCR   0xFF852104
+#define DM_AXI_QSPAPSLVDMSCR   0xFF852108
+#define DM_AXI_RAP4SLVDMSCR    0xFF85210C
+#define DM_AXI_RAP5SLVDMSCR    0xFF852110
+#define DM_AXI_SAP4SLVDMSCR    0xFF852114
+#define DM_AXI_SAP5SLVDMSCR    0xFF852118
+#define DM_AXI_SAP6SLVDMSCR    0xFF85211C
+#define DM_AXI_SAP65SLVDMSCR   0xFF852120
+#define DM_AXI_SDAP0SLVDMSCR   0xFF852124
+#define DM_AXI_SDAP1SLVDMSCR   0xFF852128
+#define DM_AXI_SDAP2SLVDMSCR   0xFF85212C
+#define DM_AXI_SDAP3SLVDMSCR   0xFF852130
+
+#define SYS_AXI256_SYXDMSCR    0xFF862000
+#define SYS_AXI256_MPXDMSCR    0xFF862004
+#define SYS_AXI256_MXIDMSCR    0xFF862008
+#define SYS_AXI256_X128TO256SLVDMSCR   0xFF862100
+#define SYS_AXI256_X256TO128SLVDMSCR   0xFF862104
+#define SYS_AXI256_SYXSLVDMSCR 0xFF862108
+#define SYS_AXI256_CCXSLVDMSCR 0xFF86210C
+#define SYS_AXI256_S3CSLVDMSCR 0xFF862110
+
+#define MXT_SYXDMSCR           0xFF872000
+#define MXT_CMM0SLVDMSCR       0xFF872100
+#define MXT_CMM1SLVDMSCR       0xFF872104
+#define MXT_CMM2SLVDMSCR       0xFF872108
+#define MXT_FDPSLVDMSCR                0xFF87210C
+#define MXT_IMRSLVDMSCR                0xFF872110
+#define MXT_VINSLVDMSCR                0xFF872114
+#define MXT_VPC0SLVDMSCR       0xFF872118
+#define MXT_VPC1SLVDMSCR       0xFF87211C
+#define MXT_VSP0SLVDMSCR       0xFF872120
+#define MXT_VSP1SLVDMSCR       0xFF872124
+#define MXT_VSPD0SLVDMSCR      0xFF872128
+#define MXT_VSPD1SLVDMSCR      0xFF87212C
+#define MXT_MAP1SLVDMSCR       0xFF872130
+#define MXT_MAP2SLVDMSCR       0xFF872134
+
+#define CCI_AXI_MMUS0DMSCR     0xFF882000
+#define CCI_AXI_SYX2DMSCR      0xFF882004
+#define CCI_AXI_MMURDMSCR      0xFF882008
+#define CCI_AXI_MMUDSDMSCR     0xFF88200C
+#define CCI_AXI_MMUMDMSCR      0xFF882010
+#define CCI_AXI_MXIDMSCR       0xFF882014
+#define CCI_AXI_MMUS1DMSCR     0xFF882018
+#define CCI_AXI_MMUMPDMSCR     0xFF88201C
+#define CCI_AXI_DVMDMSCR       0xFF882020
+#define CCI_AXI_CCISLVDMSCR    0xFF882100
+
+#define CCI_AXI_IPMMUIDVMCR    0xFF880400
+#define CCI_AXI_IPMMURDVMCR    0xFF880404
+#define CCI_AXI_IPMMUS0DVMCR   0xFF880408
+#define CCI_AXI_IPMMUS1DVMCR   0xFF88040C
+#define CCI_AXI_IPMMUMPDVMCR   0xFF880410
+#define CCI_AXI_IPMMUDSDVMCR   0xFF880414
+#define CCI_AXI_AX2ADDRMASK    0xFF88041C
+
+#define PLL0CR                 0xE61500D8
+#define PLL0_STC_MASK          0x7F000000
+#define PLL0_STC_BIT           24
+
+#ifndef __ASSEMBLY__
+#include <asm/types.h>
+
+/* RWDT */
+struct rcar_rwdt {
+       u32 rwtcnt;     /* 0x00 */
+       u32 rwtcsra;    /* 0x04 */
+       u16 rwtcsrb;    /* 0x08 */
+};
+
+/* SWDT */
+struct rcar_swdt {
+       u32 swtcnt;     /* 0x00 */
+       u32 swtcsra;    /* 0x04 */
+       u16 swtcsrb;    /* 0x08 */
+};
+
+/* LBSC */
+struct rcar_lbsc {
+       u32 cs0ctrl;
+       u32 cs1ctrl;
+       u32 ecs0ctrl;
+       u32 ecs1ctrl;
+       u32 ecs2ctrl;
+       u32 ecs3ctrl;
+       u32 ecs4ctrl;
+       u32 ecs5ctrl;
+       u32 dummy0[4];  /* 0x20 .. 0x2C */
+       u32 cswcr0;
+       u32 cswcr1;
+       u32 ecswcr0;
+       u32 ecswcr1;
+       u32 ecswcr2;
+       u32 ecswcr3;
+       u32 ecswcr4;
+       u32 ecswcr5;
+       u32 exdmawcr0;
+       u32 exdmawcr1;
+       u32 exdmawcr2;
+       u32 dummy1[9];  /* 0x5C .. 0x7C */
+       u32 cspwcr0;
+       u32 cspwcr1;
+       u32 ecspwcr0;
+       u32 ecspwcr1;
+       u32 ecspwcr2;
+       u32 ecspwcr3;
+       u32 ecspwcr4;
+       u32 ecspwcr5;
+       u32 exwtsync;
+       u32 dummy2[3];  /* 0xA4 .. 0xAC */
+       u32 cs0bstctl;
+       u32 cs0btph;
+       u32 dummy3[2];  /* 0xB8 .. 0xBC */
+       u32 cs1gdst;
+       u32 ecs0gdst;
+       u32 ecs1gdst;
+       u32 ecs2gdst;
+       u32 ecs3gdst;
+       u32 ecs4gdst;
+       u32 ecs5gdst;
+       u32 dummy4[5];  /* 0xDC .. 0xEC */
+       u32 exdmaset0;
+       u32 exdmaset1;
+       u32 exdmaset2;
+       u32 dummy5[5];  /* 0xFC .. 0x10C */
+       u32 exdmcr0;
+       u32 exdmcr1;
+       u32 exdmcr2;
+       u32 dummy6[5];  /* 0x11C .. 0x12C */
+       u32 bcintsr;
+       u32 bcintcr;
+       u32 bcintmr;
+       u32 dummy7;     /* 0x13C */
+       u32 exbatlv;
+       u32 exwtsts;
+       u32 dummy8[14]; /* 0x148 .. 0x17C */
+       u32 atacsctrl;
+       u32 dummy9[15]; /* 0x184 .. 0x1BC */
+       u32 exbct;
+       u32 extct;
+};
+
+/* DBSC3 */
+struct rcar_dbsc3 {
+       u32 dummy0[3];  /* 0x00 .. 0x08 */
+       u32 dbstate1;
+       u32 dbacen;
+       u32 dbrfen;
+       u32 dbcmd;
+       u32 dbwait;
+       u32 dbkind;
+       u32 dbconf0;
+       u32 dummy1[2];  /* 0x28 .. 0x2C */
+       u32 dbphytype;
+       u32 dummy2[3];  /* 0x34 .. 0x3C */
+       u32 dbtr0;
+       u32 dbtr1;
+       u32 dbtr2;
+       u32 dummy3;     /* 0x4C */
+       u32 dbtr3;
+       u32 dbtr4;
+       u32 dbtr5;
+       u32 dbtr6;
+       u32 dbtr7;
+       u32 dbtr8;
+       u32 dbtr9;
+       u32 dbtr10;
+       u32 dbtr11;
+       u32 dbtr12;
+       u32 dbtr13;
+       u32 dbtr14;
+       u32 dbtr15;
+       u32 dbtr16;
+       u32 dbtr17;
+       u32 dbtr18;
+       u32 dbtr19;
+       u32 dummy4[7];  /* 0x94 .. 0xAC */
+       u32 dbbl;
+       u32 dummy5[3];  /* 0xB4 .. 0xBC */
+       u32 dbadj0;
+       u32 dummy6;     /* 0xC4 */
+       u32 dbadj2;
+       u32 dummy7[5];  /* 0xCC .. 0xDC */
+       u32 dbrfcnf0;
+       u32 dbrfcnf1;
+       u32 dbrfcnf2;
+       u32 dummy8[2];  /* 0xEC .. 0xF0 */
+       u32 dbcalcnf;
+       u32 dbcaltr;
+       u32 dummy9;     /* 0xFC */
+       u32 dbrnk0;
+       u32 dummy10[31];        /* 0x104 .. 0x17C */
+       u32 dbpdncnf;
+       u32 dummy11[47];        /* 0x184 ..0x23C */
+       u32 dbdfistat;
+       u32 dbdficnt;
+       u32 dummy12[14];        /* 0x248 .. 0x27C */
+       u32 dbpdlck;
+       u32 dummy13[3]; /* 0x284 .. 0x28C */
+       u32 dbpdrga;
+       u32 dummy14[3]; /* 0x294 .. 0x29C */
+       u32 dbpdrgd;
+       u32 dummy15[24];        /* 0x2A4 .. 0x300 */
+       u32 dbbs0cnt1;
+       u32 dummy16[30];        /* 0x308 .. 0x37C */
+       u32 dbwt0cnf0;
+       u32 dbwt0cnf1;
+       u32 dbwt0cnf2;
+       u32 dbwt0cnf3;
+       u32 dbwt0cnf4;
+};
+
+/* GPIO */
+struct rcar_gpio {
+       u32 iointsel;
+       u32 inoutsel;
+       u32 outdt;
+       u32 indt;
+       u32 intdt;
+       u32 intclr;
+       u32 intmsk;
+       u32 posneg;
+       u32 edglevel;
+       u32 filonoff;
+       u32 intmsks;
+       u32 mskclrs;
+       u32 outdtsel;
+       u32 outdth;
+       u32 outdtl;
+       u32 bothedge;
+};
+
+/* S3C(QoS) */
+struct rcar_s3c {
+       u32 s3cexcladdmsk;
+       u32 s3cexclidmsk;
+       u32 s3cadsplcr;
+       u32 s3cmaar;
+       u32 s3carcr11;
+       u32 s3crorr;
+       u32 s3cworr;
+       u32 s3carcr22;
+       u32 dummy1[2];  /* 0x20 .. 0x24 */
+       u32 s3cmctr;
+       u32 dummy2;     /* 0x2C */
+       u32 cconf0;
+       u32 cconf1;
+       u32 cconf2;
+       u32 cconf3;
+};
+
+struct rcar_s3c_qos {
+       u32 s3cqos0;
+       u32 s3cqos1;
+       u32 s3cqos2;
+       u32 s3cqos3;
+       u32 s3cqos4;
+       u32 s3cqos5;
+       u32 s3cqos6;
+       u32 s3cqos7;
+       u32 s3cqos8;
+};
+
+/* DBSC(QoS) */
+struct rcar_dbsc3_qos {
+       u32 dblgcnt;
+       u32 dbtmval0;
+       u32 dbtmval1;
+       u32 dbtmval2;
+       u32 dbtmval3;
+       u32 dbrqctr;
+       u32 dbthres0;
+       u32 dbthres1;
+       u32 dbthres2;
+       u32 dummy0;     /* 0x24 */
+       u32 dblgqon;
+};
+
+/* MXI(QoS) */
+struct rcar_mxi {
+       u32 mxsaar0;
+       u32 mxsaar1;
+       u32 dummy0[7];  /* 0x08 .. 0x20 */
+       u32 mxaxiracr;  /* R8a7790 only */
+       u32 mxs3cracr;
+       u32 dummy1[2];  /* 0x2C .. 0x30 */
+       u32 mxaxiwacr;  /* R8a7790 only */
+       u32 mxs3cwacr;
+       u32 dummy2;     /* 0x3C */
+       u32 mxrtcr;
+       u32 mxwtcr;
+};
+
+struct rcar_mxi_qos {
+       u32 vspdu0;
+       u32 vspdu1;
+       u32 du0;
+       u32 du1;
+};
+
+/* AXI(QoS) */
+struct rcar_axi_qos {
+       u32 qosconf;
+       u32 qosctset0;
+       u32 qosctset1;
+       u32 qosctset2;
+       u32 qosctset3;
+       u32 qosreqctr;
+       u32 qosthres0;
+       u32 qosthres1;
+       u32 qosthres2;
+       u32 qosqon;
+};
+
+#endif
+
+#endif /* __ASM_ARCH_RCAR_BASE_H */
index 2382565023e7b2a3ea2fc7b59f5e520a341918dc..ebddd7a8fe29233147d613f525171d506655337d 100644 (file)
 #endif
 #endif /* CONFIG_RMOBILE */
 
+#ifndef __ASSEMBLY__
+u32 rmobile_get_cpu_type(void);
+u32 rmobile_get_cpu_rev_integer(void);
+u32 rmobile_get_cpu_rev_fraction(void);
+#endif /* __ASSEMBLY__ */
+
 #endif /* __ASM_ARCH_RMOBILE_H */
diff --git a/arch/arm/include/asm/arch-sunxi/clock.h b/arch/arm/include/asm/arch-sunxi/clock.h
new file mode 100644 (file)
index 0000000..5669f39
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_CLOCK_H
+#define _SUNXI_CLOCK_H
+
+#include <linux/types.h>
+
+#define CLK_GATE_OPEN                  0x1
+#define CLK_GATE_CLOSE                 0x0
+
+/* clock control module regs definition */
+#include <asm/arch/clock_sun4i.h>
+
+#ifndef __ASSEMBLY__
+int clock_init(void);
+int clock_twi_onoff(int port, int state);
+void clock_set_pll1(unsigned int hz);
+unsigned int clock_get_pll6(void);
+void clock_init_safe(void);
+void clock_init_uart(void);
+#endif
+
+#endif /* _SUNXI_CLOCK_H */
diff --git a/arch/arm/include/asm/arch-sunxi/clock_sun4i.h b/arch/arm/include/asm/arch-sunxi/clock_sun4i.h
new file mode 100644 (file)
index 0000000..928f3f2
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * sun4i, sun5i and sun7i clock register definitions
+ *
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_CLOCK_SUN4I_H
+#define _SUNXI_CLOCK_SUN4I_H
+
+struct sunxi_ccm_reg {
+       u32 pll1_cfg;           /* 0x00 pll1 control */
+       u32 pll1_tun;           /* 0x04 pll1 tuning */
+       u32 pll2_cfg;           /* 0x08 pll2 control */
+       u32 pll2_tun;           /* 0x0c pll2 tuning */
+       u32 pll3_cfg;           /* 0x10 pll3 control */
+       u8 res0[0x4];
+       u32 pll4_cfg;           /* 0x18 pll4 control */
+       u8 res1[0x4];
+       u32 pll5_cfg;           /* 0x20 pll5 control */
+       u32 pll5_tun;           /* 0x24 pll5 tuning */
+       u32 pll6_cfg;           /* 0x28 pll6 control */
+       u32 pll6_tun;           /* 0x2c pll6 tuning */
+       u32 pll7_cfg;           /* 0x30 pll7 control */
+       u32 pll1_tun2;          /* 0x34 pll5 tuning2 */
+       u8 res2[0x4];
+       u32 pll5_tun2;          /* 0x3c pll5 tuning2 */
+       u8 res3[0xc];
+       u32 pll_lock_dbg;       /* 0x4c pll lock time debug */
+       u32 osc24m_cfg;         /* 0x50 osc24m control */
+       u32 cpu_ahb_apb0_cfg;   /* 0x54 cpu,ahb and apb0 divide ratio */
+       u32 apb1_clk_div_cfg;   /* 0x58 apb1 clock dividor */
+       u32 axi_gate;           /* 0x5c axi module clock gating */
+       u32 ahb_gate0;          /* 0x60 ahb module clock gating 0 */
+       u32 ahb_gate1;          /* 0x64 ahb module clock gating 1 */
+       u32 apb0_gate;          /* 0x68 apb0 module clock gating */
+       u32 apb1_gate;          /* 0x6c apb1 module clock gating */
+       u8 res4[0x10];
+       u32 nand_sclk_cfg;      /* 0x80 nand sub clock control */
+       u32 ms_sclk_cfg;        /* 0x84 memory stick sub clock control */
+       u32 sd0_clk_cfg;        /* 0x88 sd0 clock control */
+       u32 sd1_clk_cfg;        /* 0x8c sd1 clock control */
+       u32 sd2_clk_cfg;        /* 0x90 sd2 clock control */
+       u32 sd3_clk_cfg;        /* 0x94 sd3 clock control */
+       u32 ts_clk_cfg;         /* 0x98 transport stream clock control */
+       u32 ss_clk_cfg;         /* 0x9c */
+       u32 spi0_clk_cfg;       /* 0xa0 */
+       u32 spi1_clk_cfg;       /* 0xa4 */
+       u32 spi2_clk_cfg;       /* 0xa8 */
+       u32 pata_clk_cfg;       /* 0xac */
+       u32 ir0_clk_cfg;        /* 0xb0 */
+       u32 ir1_clk_cfg;        /* 0xb4 */
+       u32 iis_clk_cfg;        /* 0xb8 */
+       u32 ac97_clk_cfg;       /* 0xbc */
+       u32 spdif_clk_cfg;      /* 0xc0 */
+       u32 keypad_clk_cfg;     /* 0xc4 */
+       u32 sata_clk_cfg;       /* 0xc8 */
+       u32 usb_clk_cfg;        /* 0xcc */
+       u32 gps_clk_cfg;        /* 0xd0 */
+       u32 spi3_clk_cfg;       /* 0xd4 */
+       u8 res5[0x28];
+       u32 dram_clk_cfg;       /* 0x100 */
+       u32 be0_clk_cfg;        /* 0x104 */
+       u32 be1_clk_cfg;        /* 0x108 */
+       u32 fe0_clk_cfg;        /* 0x10c */
+       u32 fe1_clk_cfg;        /* 0x110 */
+       u32 mp_clk_cfg;         /* 0x114 */
+       u32 lcd0_ch0_clk_cfg;   /* 0x118 */
+       u32 lcd1_ch0_clk_cfg;   /* 0x11c */
+       u32 csi_isp_clk_cfg;    /* 0x120 */
+       u8 res6[0x4];
+       u32 tvd_clk_reg;        /* 0x128 */
+       u32 lcd0_ch1_clk_cfg;   /* 0x12c */
+       u32 lcd1_ch1_clk_cfg;   /* 0x130 */
+       u32 csi0_clk_cfg;       /* 0x134 */
+       u32 csi1_clk_cfg;       /* 0x138 */
+       u32 ve_clk_cfg;         /* 0x13c */
+       u32 audio_codec_clk_cfg;        /* 0x140 */
+       u32 avs_clk_cfg;        /* 0x144 */
+       u32 ace_clk_cfg;        /* 0x148 */
+       u32 lvds_clk_cfg;       /* 0x14c */
+       u32 hdmi_clk_cfg;       /* 0x150 */
+       u32 mali_clk_cfg;       /* 0x154 */
+       u8 res7[0x4];
+       u32 mbus_clk_cfg;       /* 0x15c */
+       u8 res8[0x4];
+       u32 gmac_clk_cfg;       /* 0x164 */
+};
+
+/* apb1 bit field */
+#define APB1_CLK_SRC_OSC24M            (0x0 << 24)
+#define APB1_CLK_SRC_PLL6              (0x1 << 24)
+#define APB1_CLK_SRC_LOSC              (0x2 << 24)
+#define APB1_CLK_SRC_MASK              (0x3 << 24)
+#define APB1_CLK_RATE_N_1              (0x0 << 16)
+#define APB1_CLK_RATE_N_2              (0x1 << 16)
+#define APB1_CLK_RATE_N_4              (0x2 << 16)
+#define APB1_CLK_RATE_N_8              (0x3 << 16)
+#define APB1_CLK_RATE_N_MASK           (3 << 16)
+#define APB1_CLK_RATE_M(m)             (((m)-1) << 0)
+#define APB1_CLK_RATE_M_MASK            (0x1f << 0)
+
+/* apb1 gate field */
+#define APB1_GATE_UART_SHIFT   (16)
+#define APB1_GATE_UART_MASK            (0xff << APB1_GATE_UART_SHIFT)
+#define APB1_GATE_TWI_SHIFT    (0)
+#define APB1_GATE_TWI_MASK             (0xf << APB1_GATE_TWI_SHIFT)
+
+/* clock divide */
+#define AXI_DIV_SHIFT          (0)
+#define AXI_DIV_1                      0
+#define AXI_DIV_2                      1
+#define AXI_DIV_3                      2
+#define AXI_DIV_4                      3
+#define AHB_DIV_SHIFT          (4)
+#define AHB_DIV_1                      0
+#define AHB_DIV_2                      1
+#define AHB_DIV_4                      2
+#define AHB_DIV_8                      3
+#define APB0_DIV_SHIFT         (8)
+#define APB0_DIV_1                     0
+#define APB0_DIV_2                     1
+#define APB0_DIV_4                     2
+#define APB0_DIV_8                     3
+#define CPU_CLK_SRC_SHIFT      (16)
+#define CPU_CLK_SRC_OSC24M             1
+#define CPU_CLK_SRC_PLL1               2
+
+#define CCM_PLL1_CFG_ENABLE_SHIFT              31
+#define CCM_PLL1_CFG_VCO_RST_SHIFT             30
+#define CCM_PLL1_CFG_VCO_BIAS_SHIFT            26
+#define CCM_PLL1_CFG_PLL4_EXCH_SHIFT           25
+#define CCM_PLL1_CFG_BIAS_CUR_SHIFT            20
+#define CCM_PLL1_CFG_DIVP_SHIFT                        16
+#define CCM_PLL1_CFG_LCK_TMR_SHIFT             13
+#define CCM_PLL1_CFG_FACTOR_N_SHIFT            8
+#define CCM_PLL1_CFG_FACTOR_K_SHIFT            4
+#define CCM_PLL1_CFG_SIG_DELT_PAT_IN_SHIFT     3
+#define CCM_PLL1_CFG_SIG_DELT_PAT_EN_SHIFT     2
+#define CCM_PLL1_CFG_FACTOR_M_SHIFT            0
+
+#define PLL1_CFG_DEFAULT       0xa1005000
+
+#define PLL6_CFG_DEFAULT       0xa1009911
+
+/* nand clock */
+#define NAND_CLK_SRC_OSC24             0
+#define NAND_CLK_DIV_N                 0
+#define NAND_CLK_DIV_M                 0
+
+/* gps clock */
+#define GPS_SCLK_GATING_OFF            0
+#define GPS_RESET                      0
+
+/* ahb clock gate bit offset */
+#define AHB_GATE_OFFSET_GPS            26
+#define AHB_GATE_OFFSET_SATA           25
+#define AHB_GATE_OFFSET_PATA           24
+#define AHB_GATE_OFFSET_SPI3           23
+#define AHB_GATE_OFFSET_SPI2           22
+#define AHB_GATE_OFFSET_SPI1           21
+#define AHB_GATE_OFFSET_SPI0           20
+#define AHB_GATE_OFFSET_TS0            18
+#define AHB_GATE_OFFSET_EMAC           17
+#define AHB_GATE_OFFSET_ACE            16
+#define AHB_GATE_OFFSET_DLL            15
+#define AHB_GATE_OFFSET_SDRAM          14
+#define AHB_GATE_OFFSET_NAND           13
+#define AHB_GATE_OFFSET_MS             12
+#define AHB_GATE_OFFSET_MMC3           11
+#define AHB_GATE_OFFSET_MMC2           10
+#define AHB_GATE_OFFSET_MMC1           9
+#define AHB_GATE_OFFSET_MMC0           8
+#define AHB_GATE_OFFSET_MMC(n)         (AHB_GATE_OFFSET_MMC0 + (n))
+#define AHB_GATE_OFFSET_BIST           7
+#define AHB_GATE_OFFSET_DMA            6
+#define AHB_GATE_OFFSET_SS             5
+#define AHB_GATE_OFFSET_USB_OHCI1      4
+#define AHB_GATE_OFFSET_USB_EHCI1      3
+#define AHB_GATE_OFFSET_USB_OHCI0      2
+#define AHB_GATE_OFFSET_USB_EHCI0      1
+#define AHB_GATE_OFFSET_USB            0
+
+/* ahb clock gate bit offset (second register) */
+#define AHB_GATE_OFFSET_GMAC           17
+
+#define CCM_AHB_GATE_GPS (0x1 << 26)
+#define CCM_AHB_GATE_SDRAM (0x1 << 14)
+#define CCM_AHB_GATE_DLL (0x1 << 15)
+#define CCM_AHB_GATE_ACE (0x1 << 16)
+
+#define CCM_PLL5_CTRL_M(n) (((n) & 0x3) << 0)
+#define CCM_PLL5_CTRL_M_MASK CCM_PLL5_CTRL_M(0x3)
+#define CCM_PLL5_CTRL_M_X(n) ((n) - 1)
+#define CCM_PLL5_CTRL_M1(n) (((n) & 0x3) << 2)
+#define CCM_PLL5_CTRL_M1_MASK CCM_PLL5_CTRL_M1(0x3)
+#define CCM_PLL5_CTRL_M1_X(n) ((n) - 1)
+#define CCM_PLL5_CTRL_K(n) (((n) & 0x3) << 4)
+#define CCM_PLL5_CTRL_K_MASK CCM_PLL5_CTRL_K(0x3)
+#define CCM_PLL5_CTRL_K_X(n) ((n) - 1)
+#define CCM_PLL5_CTRL_LDO (0x1 << 7)
+#define CCM_PLL5_CTRL_N(n) (((n) & 0x1f) << 8)
+#define CCM_PLL5_CTRL_N_MASK CCM_PLL5_CTRL_N(0x1f)
+#define CCM_PLL5_CTRL_N_X(n) (n)
+#define CCM_PLL5_CTRL_P(n) (((n) & 0x3) << 16)
+#define CCM_PLL5_CTRL_P_MASK CCM_PLL5_CTRL_P(0x3)
+#define CCM_PLL5_CTRL_P_X(n) ((n) - 1)
+#define CCM_PLL5_CTRL_BW (0x1 << 18)
+#define CCM_PLL5_CTRL_VCO_GAIN (0x1 << 19)
+#define CCM_PLL5_CTRL_BIAS(n) (((n) & 0x1f) << 20)
+#define CCM_PLL5_CTRL_BIAS_MASK CCM_PLL5_CTRL_BIAS(0x1f)
+#define CCM_PLL5_CTRL_BIAS_X(n) ((n) - 1)
+#define CCM_PLL5_CTRL_VCO_BIAS (0x1 << 25)
+#define CCM_PLL5_CTRL_DDR_CLK (0x1 << 29)
+#define CCM_PLL5_CTRL_BYPASS (0x1 << 30)
+#define CCM_PLL5_CTRL_EN (0x1 << 31)
+
+#define CCM_PLL6_CTRL_N_SHIFT  8
+#define CCM_PLL6_CTRL_N_MASK   (0x1f << CCM_PLL6_CTRL_N_SHIFT)
+#define CCM_PLL6_CTRL_K_SHIFT  4
+#define CCM_PLL6_CTRL_K_MASK   (0x3 << CCM_PLL6_CTRL_K_SHIFT)
+
+#define CCM_GPS_CTRL_RESET (0x1 << 0)
+#define CCM_GPS_CTRL_GATE (0x1 << 1)
+
+#define CCM_DRAM_CTRL_DCLK_OUT (0x1 << 15)
+
+#define CCM_MBUS_CTRL_M(n) (((n) & 0xf) << 0)
+#define CCM_MBUS_CTRL_M_MASK CCM_MBUS_CTRL_M(0xf)
+#define CCM_MBUS_CTRL_M_X(n) ((n) - 1)
+#define CCM_MBUS_CTRL_N(n) (((n) & 0xf) << 16)
+#define CCM_MBUS_CTRL_N_MASK CCM_MBUS_CTRL_N(0xf)
+#define CCM_MBUS_CTRL_N_X(n) (((n) >> 3) ? 3 : (((n) >> 2) ? 2 : (((n) >> 1) ? 1 : 0)))
+#define CCM_MBUS_CTRL_CLK_SRC(n) (((n) & 0x3) << 24)
+#define CCM_MBUS_CTRL_CLK_SRC_MASK CCM_MBUS_CTRL_CLK_SRC(0x3)
+#define CCM_MBUS_CTRL_CLK_SRC_HOSC 0x0
+#define CCM_MBUS_CTRL_CLK_SRC_PLL6 0x1
+#define CCM_MBUS_CTRL_CLK_SRC_PLL5 0x2
+#define CCM_MBUS_CTRL_GATE (0x1 << 31)
+
+#define CCM_MMC_CTRL_OSCM24 (0x0 << 24)
+#define CCM_MMC_CTRL_PLL6   (0x1 << 24)
+#define CCM_MMC_CTRL_PLL5   (0x2 << 24)
+
+#define CCM_MMC_CTRL_ENABLE (0x1 << 31)
+
+#define CCM_GMAC_CTRL_TX_CLK_SRC_MII 0x0
+#define CCM_GMAC_CTRL_TX_CLK_SRC_EXT_RGMII 0x1
+#define CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII 0x2
+#define CCM_GMAC_CTRL_GPIT_MII (0x0 << 2)
+#define CCM_GMAC_CTRL_GPIT_RGMII (0x1 << 2)
+
+#endif /* _SUNXI_CLOCK_SUN4I_H */
diff --git a/arch/arm/include/asm/arch-sunxi/cpu.h b/arch/arm/include/asm/arch-sunxi/cpu.h
new file mode 100644 (file)
index 0000000..a987e51
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_CPU_H
+#define _SUNXI_CPU_H
+
+#define SUNXI_SRAM_A1_BASE             0x00000000
+#define SUNXI_SRAM_A1_SIZE             (16 * 1024)     /* 16 kiB */
+
+#define SUNXI_SRAM_A2_BASE             0x00004000      /* 16 kiB */
+#define SUNXI_SRAM_A3_BASE             0x00008000      /* 13 kiB */
+#define SUNXI_SRAM_A4_BASE             0x0000b400      /* 3 kiB */
+#define SUNXI_SRAM_D_BASE              0x00010000      /* 4 kiB */
+#define SUNXI_SRAM_B_BASE              0x00020000      /* 64 kiB (secure) */
+
+#define SUNXI_SRAMC_BASE               0x01c00000
+#define SUNXI_DRAMC_BASE               0x01c01000
+#define SUNXI_DMA_BASE                 0x01c02000
+#define SUNXI_NFC_BASE                 0x01c03000
+#define SUNXI_TS_BASE                  0x01c04000
+#define SUNXI_SPI0_BASE                        0x01c05000
+#define SUNXI_SPI1_BASE                        0x01c06000
+#define SUNXI_MS_BASE                  0x01c07000
+#define SUNXI_TVD_BASE                 0x01c08000
+#define SUNXI_CSI0_BASE                        0x01c09000
+#define SUNXI_TVE0_BASE                        0x01c0a000
+#define SUNXI_EMAC_BASE                        0x01c0b000
+#define SUNXI_LCD0_BASE                        0x01c0C000
+#define SUNXI_LCD1_BASE                        0x01c0d000
+#define SUNXI_VE_BASE                  0x01c0e000
+#define SUNXI_MMC0_BASE                        0x01c0f000
+#define SUNXI_MMC1_BASE                        0x01c10000
+#define SUNXI_MMC2_BASE                        0x01c11000
+#define SUNXI_MMC3_BASE                        0x01c12000
+#define SUNXI_USB0_BASE                        0x01c13000
+#define SUNXI_USB1_BASE                        0x01c14000
+#define SUNXI_SS_BASE                  0x01c15000
+#define SUNXI_HDMI_BASE                        0x01c16000
+#define SUNXI_SPI2_BASE                        0x01c17000
+#define SUNXI_SATA_BASE                        0x01c18000
+#define SUNXI_PATA_BASE                        0x01c19000
+#define SUNXI_ACE_BASE                 0x01c1a000
+#define SUNXI_TVE1_BASE                        0x01c1b000
+#define SUNXI_USB2_BASE                        0x01c1c000
+#define SUNXI_CSI1_BASE                        0x01c1d000
+#define SUNXI_TZASC_BASE               0x01c1e000
+#define SUNXI_SPI3_BASE                        0x01c1f000
+
+#define SUNXI_CCM_BASE                 0x01c20000
+#define SUNXI_INTC_BASE                        0x01c20400
+#define SUNXI_PIO_BASE                 0x01c20800
+#define SUNXI_TIMER_BASE               0x01c20c00
+#define SUNXI_SPDIF_BASE               0x01c21000
+#define SUNXI_AC97_BASE                        0x01c21400
+#define SUNXI_IR0_BASE                 0x01c21800
+#define SUNXI_IR1_BASE                 0x01c21c00
+
+#define SUNXI_IIS_BASE                 0x01c22400
+#define SUNXI_LRADC_BASE               0x01c22800
+#define SUNXI_AD_DA_BASE               0x01c22c00
+#define SUNXI_KEYPAD_BASE              0x01c23000
+#define SUNXI_TZPC_BASE                        0x01c23400
+#define SUNXI_SID_BASE                 0x01c23800
+#define SUNXI_SJTAG_BASE               0x01c23c00
+
+#define SUNXI_TP_BASE                  0x01c25000
+#define SUNXI_PMU_BASE                 0x01c25400
+#define SUNXI_CPUCFG_BASE              0x01c25c00
+
+#define SUNXI_UART0_BASE               0x01c28000
+#define SUNXI_UART1_BASE               0x01c28400
+#define SUNXI_UART2_BASE               0x01c28800
+#define SUNXI_UART3_BASE               0x01c28c00
+#define SUNXI_UART4_BASE               0x01c29000
+#define SUNXI_UART5_BASE               0x01c29400
+#define SUNXI_UART6_BASE               0x01c29800
+#define SUNXI_UART7_BASE               0x01c29c00
+#define SUNXI_PS2_0_BASE               0x01c2a000
+#define SUNXI_PS2_1_BASE               0x01c2a400
+
+#define SUNXI_TWI0_BASE                        0x01c2ac00
+#define SUNXI_TWI1_BASE                        0x01c2b000
+#define SUNXI_TWI2_BASE                        0x01c2b400
+
+#define SUNXI_CAN_BASE                 0x01c2bc00
+
+#define SUNXI_SCR_BASE                 0x01c2c400
+
+#define SUNXI_GPS_BASE                 0x01c30000
+#define SUNXI_MALI400_BASE             0x01c40000
+#define SUNXI_GMAC_BASE                        0x01c50000
+
+/* module sram */
+#define SUNXI_SRAM_C_BASE              0x01d00000
+
+#define SUNXI_DE_FE0_BASE              0x01e00000
+#define SUNXI_DE_FE1_BASE              0x01e20000
+#define SUNXI_DE_BE0_BASE              0x01e60000
+#define SUNXI_DE_BE1_BASE              0x01e40000
+#define SUNXI_MP_BASE                  0x01e80000
+#define SUNXI_AVG_BASE                 0x01ea0000
+
+/* CoreSight Debug Module */
+#define SUNXI_CSDM_BASE                        0x3f500000
+
+#define SUNXI_DDRII_DDRIII_BASE                0x40000000      /* 2 GiB */
+
+#define SUNXI_BROM_BASE                        0xffff0000      /* 32 kiB */
+
+#define SUNXI_CPU_CFG                  (SUNXI_TIMER_BASE + 0x13c)
+
+#ifndef __ASSEMBLY__
+void sunxi_board_init(void);
+void sunxi_reset(void);
+#endif /* __ASSEMBLY__ */
+
+#endif /* _CPU_H */
diff --git a/arch/arm/include/asm/arch-sunxi/dram.h b/arch/arm/include/asm/arch-sunxi/dram.h
new file mode 100644 (file)
index 0000000..67fbfad
--- /dev/null
@@ -0,0 +1,179 @@
+/*
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Berg Xing <bergxing@allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Sunxi platform dram register definition.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_DRAM_H
+#define _SUNXI_DRAM_H
+
+#include <linux/types.h>
+
+struct sunxi_dram_reg {
+       u32 ccr;                /* 0x00 controller configuration register */
+       u32 dcr;                /* 0x04 dram configuration register */
+       u32 iocr;               /* 0x08 i/o configuration register */
+       u32 csr;                /* 0x0c controller status register */
+       u32 drr;                /* 0x10 dram refresh register */
+       u32 tpr0;               /* 0x14 dram timing parameters register 0 */
+       u32 tpr1;               /* 0x18 dram timing parameters register 1 */
+       u32 tpr2;               /* 0x1c dram timing parameters register 2 */
+       u32 gdllcr;             /* 0x20 global dll control register */
+       u8 res0[0x28];
+       u32 rslr0;              /* 0x4c rank system latency register */
+       u32 rslr1;              /* 0x50 rank system latency register */
+       u8 res1[0x8];
+       u32 rdgr0;              /* 0x5c rank dqs gating register */
+       u32 rdgr1;              /* 0x60 rank dqs gating register */
+       u8 res2[0x34];
+       u32 odtcr;              /* 0x98 odt configuration register */
+       u32 dtr0;               /* 0x9c data training register 0 */
+       u32 dtr1;               /* 0xa0 data training register 1 */
+       u32 dtar;               /* 0xa4 data training address register */
+       u32 zqcr0;              /* 0xa8 zq control register 0 */
+       u32 zqcr1;              /* 0xac zq control register 1 */
+       u32 zqsr;               /* 0xb0 zq status register */
+       u32 idcr;               /* 0xb4 initializaton delay configure reg */
+       u8 res3[0x138];
+       u32 mr;                 /* 0x1f0 mode register */
+       u32 emr;                /* 0x1f4 extended mode register */
+       u32 emr2;               /* 0x1f8 extended mode register */
+       u32 emr3;               /* 0x1fc extended mode register */
+       u32 dllctr;             /* 0x200 dll control register */
+       u32 dllcr[5];           /* 0x204 dll control register 0(byte 0) */
+       /* 0x208 dll control register 1(byte 1) */
+       /* 0x20c dll control register 2(byte 2) */
+       /* 0x210 dll control register 3(byte 3) */
+       /* 0x214 dll control register 4(byte 4) */
+       u32 dqtr0;              /* 0x218 dq timing register */
+       u32 dqtr1;              /* 0x21c dq timing register */
+       u32 dqtr2;              /* 0x220 dq timing register */
+       u32 dqtr3;              /* 0x224 dq timing register */
+       u32 dqstr;              /* 0x228 dqs timing register */
+       u32 dqsbtr;             /* 0x22c dqsb timing register */
+       u32 mcr;                /* 0x230 mode configure register */
+       u8 res[0x8];
+       u32 ppwrsctl;           /* 0x23c pad power save control */
+       u32 apr;                /* 0x240 arbiter period register */
+       u32 pldtr;              /* 0x244 priority level data threshold reg */
+       u8 res5[0x8];
+       u32 hpcr[32];           /* 0x250 host port configure register */
+       u8 res6[0x10];
+       u32 csel;               /* 0x2e0 controller select register */
+};
+
+struct dram_para {
+       u32 clock;
+       u32 type;
+       u32 rank_num;
+       u32 density;
+       u32 io_width;
+       u32 bus_width;
+       u32 cas;
+       u32 zq;
+       u32 odt_en;
+       u32 size;
+       u32 tpr0;
+       u32 tpr1;
+       u32 tpr2;
+       u32 tpr3;
+       u32 tpr4;
+       u32 tpr5;
+       u32 emr1;
+       u32 emr2;
+       u32 emr3;
+};
+
+#define DRAM_CCR_COMMAND_RATE_1T (0x1 << 5)
+#define DRAM_CCR_DQS_GATE (0x1 << 14)
+#define DRAM_CCR_DQS_DRIFT_COMP (0x1 << 17)
+#define DRAM_CCR_ITM_OFF (0x1 << 28)
+#define DRAM_CCR_DATA_TRAINING (0x1 << 30)
+#define DRAM_CCR_INIT (0x1 << 31)
+
+#define DRAM_MEMORY_TYPE_DDR1 1
+#define DRAM_MEMORY_TYPE_DDR2 2
+#define DRAM_MEMORY_TYPE_DDR3 3
+#define DRAM_MEMORY_TYPE_LPDDR2 4
+#define DRAM_MEMORY_TYPE_LPDDR 5
+#define DRAM_DCR_TYPE (0x1 << 0)
+#define DRAM_DCR_TYPE_DDR2 0x0
+#define DRAM_DCR_TYPE_DDR3 0x1
+#define DRAM_DCR_IO_WIDTH(n) (((n) & 0x3) << 1)
+#define DRAM_DCR_IO_WIDTH_MASK DRAM_DCR_IO_WIDTH(0x3)
+#define DRAM_DCR_IO_WIDTH_8BIT 0x0
+#define DRAM_DCR_IO_WIDTH_16BIT 0x1
+#define DRAM_DCR_CHIP_DENSITY(n) (((n) & 0x7) << 3)
+#define DRAM_DCR_CHIP_DENSITY_MASK DRAM_DCR_CHIP_DENSITY(0x7)
+#define DRAM_DCR_CHIP_DENSITY_256M 0x0
+#define DRAM_DCR_CHIP_DENSITY_512M 0x1
+#define DRAM_DCR_CHIP_DENSITY_1024M 0x2
+#define DRAM_DCR_CHIP_DENSITY_2048M 0x3
+#define DRAM_DCR_CHIP_DENSITY_4096M 0x4
+#define DRAM_DCR_CHIP_DENSITY_8192M 0x5
+#define DRAM_DCR_BUS_WIDTH(n) (((n) & 0x7) << 6)
+#define DRAM_DCR_BUS_WIDTH_MASK DRAM_DCR_BUS_WIDTH(0x7)
+#define DRAM_DCR_BUS_WIDTH_32BIT 0x3
+#define DRAM_DCR_BUS_WIDTH_16BIT 0x1
+#define DRAM_DCR_BUS_WIDTH_8BIT 0x0
+#define DRAM_DCR_NR_DLLCR_32BIT 5
+#define DRAM_DCR_NR_DLLCR_16BIT 3
+#define DRAM_DCR_NR_DLLCR_8BIT 2
+#define DRAM_DCR_RANK_SEL(n) (((n) & 0x3) << 10)
+#define DRAM_DCR_RANK_SEL_MASK DRAM_DCR_CMD_RANK(0x3)
+#define DRAM_DCR_CMD_RANK_ALL (0x1 << 12)
+#define DRAM_DCR_MODE(n) (((n) & 0x3) << 13)
+#define DRAM_DCR_MODE_MASK DRAM_DCR_MODE(0x3)
+#define DRAM_DCR_MODE_SEQ 0x0
+#define DRAM_DCR_MODE_INTERLEAVE 0x1
+
+#define DRAM_CSR_FAILED (0x1 << 20)
+
+#define DRAM_DRR_TRFC(n) ((n) & 0xff)
+#define DRAM_DRR_TREFI(n) (((n) & 0xffff) << 8)
+#define DRAM_DRR_BURST(n) ((((n) - 1) & 0xf) << 24)
+
+#define DRAM_MCR_MODE_NORM(n) (((n) & 0x3) << 0)
+#define DRAM_MCR_MODE_NORM_MASK DRAM_MCR_MOD_NORM(0x3)
+#define DRAM_MCR_MODE_DQ_OUT(n) (((n) & 0x3) << 2)
+#define DRAM_MCR_MODE_DQ_OUT_MASK DRAM_MCR_MODE_DQ_OUT(0x3)
+#define DRAM_MCR_MODE_ADDR_OUT(n) (((n) & 0x3) << 4)
+#define DRAM_MCR_MODE_ADDR_OUT_MASK DRAM_MCR_MODE_ADDR_OUT(0x3)
+#define DRAM_MCR_MODE_DQ_IN_OUT(n) (((n) & 0x3) << 6)
+#define DRAM_MCR_MODE_DQ_IN_OUT_MASK DRAM_MCR_MODE_DQ_IN_OUT(0x3)
+#define DRAM_MCR_MODE_DQ_TURNON_DELAY(n) (((n) & 0x7) << 8)
+#define DRAM_MCR_MODE_DQ_TURNON_DELAY_MASK DRAM_MCR_MODE_DQ_TURNON_DELAY(0x7)
+#define DRAM_MCR_MODE_ADDR_IN (0x1 << 11)
+#define DRAM_MCR_RESET (0x1 << 12)
+#define DRAM_MCR_MODE_EN(n) (((n) & 0x3) << 13)
+#define DRAM_MCR_MODE_EN_MASK DRAM_MCR_MOD_EN(0x3)
+#define DRAM_MCR_DCLK_OUT (0x1 << 16)
+
+#define DRAM_DLLCR_NRESET (0x1 << 30)
+#define DRAM_DLLCR_DISABLE (0x1 << 31)
+
+#define DRAM_ZQCR0_IMP_DIV(n) (((n) & 0xff) << 20)
+#define DRAM_ZQCR0_IMP_DIV_MASK DRAM_ZQCR0_IMP_DIV(0xff)
+
+#define DRAM_IOCR_ODT_EN(n) ((((n) & 0x3) << 30) | ((n) & 0x3) << 0)
+#define DRAM_IOCR_ODT_EN_MASK DRAM_IOCR_ODT_EN(0x3)
+
+#define DRAM_MR_BURST_LENGTH(n) (((n) & 0x7) << 0)
+#define DRAM_MR_BURST_LENGTH_MASK DRAM_MR_BURST_LENGTH(0x7)
+#define DRAM_MR_CAS_LAT(n) (((n) & 0x7) << 4)
+#define DRAM_MR_CAS_LAT_MASK DRAM_MR_CAS_LAT(0x7)
+#define DRAM_MR_WRITE_RECOVERY(n) (((n) & 0x7) << 9)
+#define DRAM_MR_WRITE_RECOVERY_MASK DRAM_MR_WRITE_RECOVERY(0x7)
+#define DRAM_MR_POWER_DOWN (0x1 << 12)
+
+#define DRAM_CSEL_MAGIC 0x16237495
+
+unsigned long sunxi_dram_init(void);
+unsigned long dramc_init(struct dram_para *para);
+
+#endif /* _SUNXI_DRAM_H */
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
new file mode 100644 (file)
index 0000000..892479c
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_GPIO_H
+#define _SUNXI_GPIO_H
+
+#include <linux/types.h>
+
+/*
+ * sunxi has 9 banks of gpio, they are:
+ * PA0 - PA17 | PB0 - PB23 | PC0 - PC24
+ * PD0 - PD27 | PE0 - PE31 | PF0 - PF5
+ * PG0 - PG9  | PH0 - PH27 | PI0 - PI12
+ */
+
+#define SUNXI_GPIO_A   0
+#define SUNXI_GPIO_B   1
+#define SUNXI_GPIO_C   2
+#define SUNXI_GPIO_D   3
+#define SUNXI_GPIO_E   4
+#define SUNXI_GPIO_F   5
+#define SUNXI_GPIO_G   6
+#define SUNXI_GPIO_H   7
+#define SUNXI_GPIO_I   8
+#define SUNXI_GPIO_BANKS 9
+
+struct sunxi_gpio {
+       u32 cfg[4];
+       u32 dat;
+       u32 drv[2];
+       u32 pull[2];
+};
+
+/* gpio interrupt control */
+struct sunxi_gpio_int {
+       u32 cfg[3];
+       u32 ctl;
+       u32 sta;
+       u32 deb;                /* interrupt debounce */
+};
+
+struct sunxi_gpio_reg {
+       struct sunxi_gpio gpio_bank[SUNXI_GPIO_BANKS];
+       u8 res[0xbc];
+       struct sunxi_gpio_int gpio_int;
+};
+
+#define BANK_TO_GPIO(bank) \
+       &((struct sunxi_gpio_reg *)SUNXI_PIO_BASE)->gpio_bank[bank]
+
+#define GPIO_BANK(pin)         ((pin) >> 5)
+#define GPIO_NUM(pin)          ((pin) & 0x1f)
+
+#define GPIO_CFG_INDEX(pin)    (((pin) & 0x1f) >> 3)
+#define GPIO_CFG_OFFSET(pin)   ((((pin) & 0x1f) & 0x7) << 2)
+
+#define GPIO_DRV_INDEX(pin)   (((pin) & 0x1f) >> 4)
+#define GPIO_DRV_OFFSET(pin)   ((((pin) & 0x1f) & 0xf) << 1)
+
+#define GPIO_PULL_INDEX(pin)   (((pin) & 0x1f) >> 4)
+#define GPIO_PULL_OFFSET(pin)  ((((pin) & 0x1f) & 0xf) << 1)
+
+/* GPIO bank sizes */
+#define SUNXI_GPIO_A_NR                32
+#define SUNXI_GPIO_B_NR                32
+#define SUNXI_GPIO_C_NR                32
+#define SUNXI_GPIO_D_NR                32
+#define SUNXI_GPIO_E_NR                32
+#define SUNXI_GPIO_F_NR                32
+#define SUNXI_GPIO_G_NR                32
+#define SUNXI_GPIO_H_NR                32
+#define SUNXI_GPIO_I_NR                32
+
+#define SUNXI_GPIO_NEXT(__gpio) \
+       ((__gpio##_START) + (__gpio##_NR) + 0)
+
+enum sunxi_gpio_number {
+       SUNXI_GPIO_A_START = 0,
+       SUNXI_GPIO_B_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_A),
+       SUNXI_GPIO_C_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_B),
+       SUNXI_GPIO_D_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_C),
+       SUNXI_GPIO_E_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_D),
+       SUNXI_GPIO_F_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_E),
+       SUNXI_GPIO_G_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_F),
+       SUNXI_GPIO_H_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_G),
+       SUNXI_GPIO_I_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_H),
+};
+
+/* SUNXI GPIO number definitions */
+#define SUNXI_GPA(_nr) (SUNXI_GPIO_A_START + (_nr))
+#define SUNXI_GPB(_nr) (SUNXI_GPIO_B_START + (_nr))
+#define SUNXI_GPC(_nr) (SUNXI_GPIO_C_START + (_nr))
+#define SUNXI_GPD(_nr) (SUNXI_GPIO_D_START + (_nr))
+#define SUNXI_GPE(_nr) (SUNXI_GPIO_E_START + (_nr))
+#define SUNXI_GPF(_nr) (SUNXI_GPIO_F_START + (_nr))
+#define SUNXI_GPG(_nr) (SUNXI_GPIO_G_START + (_nr))
+#define SUNXI_GPH(_nr) (SUNXI_GPIO_H_START + (_nr))
+#define SUNXI_GPI(_nr) (SUNXI_GPIO_I_START + (_nr))
+
+/* GPIO pin function config */
+#define SUNXI_GPIO_INPUT       0
+#define SUNXI_GPIO_OUTPUT      1
+
+#define SUNXI_GPA0_EMAC                2
+#define SUN7I_GPA0_GMAC                5
+
+#define SUNXI_GPB0_TWI0                2
+
+#define SUN4I_GPB22_UART0_TX   2
+#define SUN4I_GPB23_UART0_RX   2
+
+#define SUN5I_GPB19_UART0_TX   2
+#define SUN5I_GPB20_UART0_RX   2
+
+#define SUN5I_GPG3_UART1_TX    4
+#define SUN5I_GPG4_UART1_RX    4
+
+#define SUNXI_GPC6_SDC2                3
+
+#define SUNXI_GPF0_SDC0                2
+
+#define SUNXI_GPF2_SDC0                2
+#define SUNXI_GPF2_UART0_TX    4
+#define SUNXI_GPF4_UART0_RX    4
+
+#define SUN4I_GPG0_SDC1                4
+
+#define SUN4I_GPH22_SDC1       5
+
+#define SUN4I_GPI4_SDC3                2
+
+/* GPIO pin pull-up/down config */
+#define SUNXI_GPIO_PULL_DISABLE        0
+#define SUNXI_GPIO_PULL_UP     1
+#define SUNXI_GPIO_PULL_DOWN   2
+
+int sunxi_gpio_set_cfgpin(u32 pin, u32 val);
+int sunxi_gpio_get_cfgpin(u32 pin);
+int sunxi_gpio_set_drv(u32 pin, u32 val);
+int sunxi_gpio_set_pull(u32 pin, u32 val);
+
+#endif /* _SUNXI_GPIO_H */
diff --git a/arch/arm/include/asm/arch-sunxi/mmc.h b/arch/arm/include/asm/arch-sunxi/mmc.h
new file mode 100644 (file)
index 0000000..53196e3
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Aaron <leafy.myeh@allwinnertech.com>
+ *
+ * MMC register definition for allwinner sunxi platform.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_MMC_H
+#define _SUNXI_MMC_H
+
+#include <linux/types.h>
+
+struct sunxi_mmc {
+       u32 gctrl;              /* 0x00 global control */
+       u32 clkcr;              /* 0x04 clock control */
+       u32 timeout;            /* 0x08 time out */
+       u32 width;              /* 0x0c bus width */
+       u32 blksz;              /* 0x10 block size */
+       u32 bytecnt;            /* 0x14 byte count */
+       u32 cmd;                /* 0x18 command */
+       u32 arg;                /* 0x1c argument */
+       u32 resp0;              /* 0x20 response 0 */
+       u32 resp1;              /* 0x24 response 1 */
+       u32 resp2;              /* 0x28 response 2 */
+       u32 resp3;              /* 0x2c response 3 */
+       u32 imask;              /* 0x30 interrupt mask */
+       u32 mint;               /* 0x34 masked interrupt status */
+       u32 rint;               /* 0x38 raw interrupt status */
+       u32 status;             /* 0x3c status */
+       u32 ftrglevel;          /* 0x40 FIFO threshold watermark*/
+       u32 funcsel;            /* 0x44 function select */
+       u32 cbcr;               /* 0x48 CIU byte count */
+       u32 bbcr;               /* 0x4c BIU byte count */
+       u32 dbgc;               /* 0x50 debug enable */
+       u32 res0[11];
+       u32 dmac;               /* 0x80 internal DMA control */
+       u32 dlba;               /* 0x84 internal DMA descr list base address */
+       u32 idst;               /* 0x88 internal DMA status */
+       u32 idie;               /* 0x8c internal DMA interrupt enable */
+       u32 chda;               /* 0x90 */
+       u32 cbda;               /* 0x94 */
+       u32 res1[26];
+       u32 fifo;               /* 0x100 FIFO access address */
+};
+
+#define SUNXI_MMC_CLK_POWERSAVE                (0x1 << 17)
+#define SUNXI_MMC_CLK_ENABLE           (0x1 << 16)
+#define SUNXI_MMC_CLK_DIVIDER_MASK     (0xff)
+
+#define SUNXI_MMC_GCTRL_SOFT_RESET     (0x1 << 0)
+#define SUNXI_MMC_GCTRL_FIFO_RESET     (0x1 << 1)
+#define SUNXI_MMC_GCTRL_DMA_RESET      (0x1 << 2)
+#define SUNXI_MMC_GCTRL_RESET          (SUNXI_MMC_GCTRL_SOFT_RESET|\
+                                        SUNXI_MMC_GCTRL_FIFO_RESET|\
+                                        SUNXI_MMC_GCTRL_DMA_RESET)
+#define SUNXI_MMC_GCTRL_DMA_ENABLE     (0x1 << 5)
+#define SUNXI_MMC_GCTRL_ACCESS_BY_AHB   (0x1 << 31)
+
+#define SUNXI_MMC_CMD_RESP_EXPIRE      (0x1 << 6)
+#define SUNXI_MMC_CMD_LONG_RESPONSE    (0x1 << 7)
+#define SUNXI_MMC_CMD_CHK_RESPONSE_CRC (0x1 << 8)
+#define SUNXI_MMC_CMD_DATA_EXPIRE      (0x1 << 9)
+#define SUNXI_MMC_CMD_WRITE            (0x1 << 10)
+#define SUNXI_MMC_CMD_AUTO_STOP                (0x1 << 12)
+#define SUNXI_MMC_CMD_WAIT_PRE_OVER    (0x1 << 13)
+#define SUNXI_MMC_CMD_SEND_INIT_SEQ    (0x1 << 15)
+#define SUNXI_MMC_CMD_UPCLK_ONLY       (0x1 << 21)
+#define SUNXI_MMC_CMD_START            (0x1 << 31)
+
+#define SUNXI_MMC_RINT_RESP_ERROR              (0x1 << 1)
+#define SUNXI_MMC_RINT_COMMAND_DONE            (0x1 << 2)
+#define SUNXI_MMC_RINT_DATA_OVER               (0x1 << 3)
+#define SUNXI_MMC_RINT_TX_DATA_REQUEST         (0x1 << 4)
+#define SUNXI_MMC_RINT_RX_DATA_REQUEST         (0x1 << 5)
+#define SUNXI_MMC_RINT_RESP_CRC_ERROR          (0x1 << 6)
+#define SUNXI_MMC_RINT_DATA_CRC_ERROR          (0x1 << 7)
+#define SUNXI_MMC_RINT_RESP_TIMEOUT            (0x1 << 8)
+#define SUNXI_MMC_RINT_DATA_TIMEOUT            (0x1 << 9)
+#define SUNXI_MMC_RINT_VOLTAGE_CHANGE_DONE     (0x1 << 10)
+#define SUNXI_MMC_RINT_FIFO_RUN_ERROR          (0x1 << 11)
+#define SUNXI_MMC_RINT_HARD_WARE_LOCKED                (0x1 << 12)
+#define SUNXI_MMC_RINT_START_BIT_ERROR         (0x1 << 13)
+#define SUNXI_MMC_RINT_AUTO_COMMAND_DONE       (0x1 << 14)
+#define SUNXI_MMC_RINT_END_BIT_ERROR           (0x1 << 15)
+#define SUNXI_MMC_RINT_SDIO_INTERRUPT          (0x1 << 16)
+#define SUNXI_MMC_RINT_CARD_INSERT             (0x1 << 30)
+#define SUNXI_MMC_RINT_CARD_REMOVE             (0x1 << 31)
+#define SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT      \
+       (SUNXI_MMC_RINT_RESP_ERROR |            \
+        SUNXI_MMC_RINT_RESP_CRC_ERROR |        \
+        SUNXI_MMC_RINT_DATA_CRC_ERROR |        \
+        SUNXI_MMC_RINT_RESP_TIMEOUT |          \
+        SUNXI_MMC_RINT_DATA_TIMEOUT |          \
+        SUNXI_MMC_RINT_VOLTAGE_CHANGE_DONE |   \
+        SUNXI_MMC_RINT_FIFO_RUN_ERROR |        \
+        SUNXI_MMC_RINT_HARD_WARE_LOCKED |      \
+        SUNXI_MMC_RINT_START_BIT_ERROR |       \
+        SUNXI_MMC_RINT_END_BIT_ERROR) /* 0xbfc2 */
+#define SUNXI_MMC_RINT_INTERRUPT_DONE_BIT      \
+       (SUNXI_MMC_RINT_AUTO_COMMAND_DONE |     \
+        SUNXI_MMC_RINT_DATA_OVER |             \
+        SUNXI_MMC_RINT_COMMAND_DONE |          \
+        SUNXI_MMC_RINT_VOLTAGE_CHANGE_DONE)
+
+#define SUNXI_MMC_STATUS_RXWL_FLAG             (0x1 << 0)
+#define SUNXI_MMC_STATUS_TXWL_FLAG             (0x1 << 1)
+#define SUNXI_MMC_STATUS_FIFO_EMPTY            (0x1 << 2)
+#define SUNXI_MMC_STATUS_FIFO_FULL             (0x1 << 3)
+#define SUNXI_MMC_STATUS_CARD_PRESENT          (0x1 << 8)
+#define SUNXI_MMC_STATUS_CARD_DATA_BUSY                (0x1 << 9)
+#define SUNXI_MMC_STATUS_DATA_FSM_BUSY         (0x1 << 10)
+
+#define SUNXI_MMC_IDMAC_RESET          (0x1 << 0)
+#define SUNXI_MMC_IDMAC_FIXBURST       (0x1 << 1)
+#define SUNXI_MMC_IDMAC_ENABLE         (0x1 << 7)
+
+#define SUNXI_MMC_IDIE_TXIRQ           (0x1 << 0)
+#define SUNXI_MMC_IDIE_RXIRQ           (0x1 << 1)
+
+int sunxi_mmc_init(int sdc_no);
+#endif /* _SUNXI_MMC_H */
diff --git a/arch/arm/include/asm/arch-sunxi/spl.h b/arch/arm/include/asm/arch-sunxi/spl.h
new file mode 100644 (file)
index 0000000..ff871bc
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * This is a copy of omap3/spl.h:
+ *
+ * (C) Copyright 2012
+ * Texas Instruments, <www.ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef        _ASM_ARCH_SPL_H_
+#define        _ASM_SPL_H_
+
+#define BOOT_DEVICE_NONE       0
+#define BOOT_DEVICE_XIP                1
+#define BOOT_DEVICE_NAND       2
+#define BOOT_DEVICE_ONE_NAND   3
+#define BOOT_DEVICE_MMC2       5 /*emmc*/
+#define BOOT_DEVICE_MMC1       6
+#define BOOT_DEVICE_XIPWAIT    7
+#define BOOT_DEVICE_MMC2_2      0xff
+#endif
diff --git a/arch/arm/include/asm/arch-sunxi/sys_proto.h b/arch/arm/include/asm/arch-sunxi/sys_proto.h
new file mode 100644 (file)
index 0000000..c3e636e
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * (C) Copyright 2007-2012
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SYS_PROTO_H_
+#define _SYS_PROTO_H_
+
+#include <linux/types.h>
+
+void sdelay(unsigned long);
+
+#endif
diff --git a/arch/arm/include/asm/arch-sunxi/timer.h b/arch/arm/include/asm/arch-sunxi/timer.h
new file mode 100644 (file)
index 0000000..6aacfd7
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Configuration settings for the Allwinner A10-evb board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_TIMER_H_
+#define _SUNXI_TIMER_H_
+
+#ifndef __ASSEMBLY__
+
+#include <linux/types.h>
+
+/* General purpose timer */
+struct sunxi_timer {
+       u32 ctl;
+       u32 inter;
+       u32 val;
+       u8 res[4];
+};
+
+/* Audio video sync*/
+struct sunxi_avs {
+       u32 ctl;                /* 0x80 */
+       u32 cnt0;               /* 0x84 */
+       u32 cnt1;               /* 0x88 */
+       u32 div;                /* 0x8c */
+};
+
+/* 64 bit counter */
+struct sunxi_64cnt {
+       u32 ctl;                /* 0xa0 */
+       u32 lo;                 /* 0xa4 */
+       u32 hi;                 /* 0xa8 */
+};
+
+/* Watchdog */
+struct sunxi_wdog {
+       u32 ctl;                /* 0x90 */
+       u32 mode;               /* 0x94 */
+};
+
+/* Rtc */
+struct sunxi_rtc {
+       u32 ctl;                /* 0x100 */
+       u32 yymmdd;             /* 0x104 */
+       u32 hhmmss;             /* 0x108 */
+};
+
+/* Alarm */
+struct sunxi_alarm {
+       u32 ddhhmmss;           /* 0x10c */
+       u32 hhmmss;             /* 0x110 */
+       u32 en;                 /* 0x114 */
+       u32 irqen;              /* 0x118 */
+       u32 irqsta;             /* 0x11c */
+};
+
+/* Timer general purpose register */
+struct sunxi_tgp {
+       u32 tgpd;
+};
+
+struct sunxi_timer_reg {
+       u32 tirqen;             /* 0x00 */
+       u32 tirqsta;            /* 0x04 */
+       u8 res1[8];
+       struct sunxi_timer timer[6];    /* We have 6 timers */
+       u8 res2[16];
+       struct sunxi_avs avs;
+       struct sunxi_wdog wdog;
+       u8 res3[8];
+       struct sunxi_64cnt cnt64;
+       u8 res4[0x58];
+       struct sunxi_rtc rtc;
+       struct sunxi_alarm alarm;
+       struct sunxi_tgp tgp[4];
+       u8 res5[8];
+       u32 cpu_cfg;
+};
+
+#endif /* __ASSEMBLY__ */
+
+#endif
index ceb7bcd9cfb9431bd3e9cd848b8574b3ce42ee1b..c817088fa57e30a81902f333fae35b362a8fb44d 100644 (file)
@@ -349,6 +349,8 @@ struct usb_ctlr {
 
 /* USB3_IF_USB_PHY_VBUS_SENSORS_0 */
 #define VBUS_VLD_STS                   (1 << 26)
+#define VBUS_B_SESS_VLD_SW_VALUE       (1 << 12)
+#define VBUS_B_SESS_VLD_SW_EN          (1 << 11)
 
 /* Setup USB on the board */
 int usb_process_devicetree(const void *blob);
index c2f976184664872567f7f8f019a7f43ccb1ccc11..0c28e1b8403a4f52a89c1e26117ea5a558323b23 100644 (file)
 #define DDRMC_CR139_PHY_WRLV_EN(v)                     ((v) & 0xff)
 #define DDRMC_CR154_PAD_ZQ_EARLY_CMP_EN_TIMER(v)       (((v) & 0x1f) << 27)
 #define DDRMC_CR154_PAD_ZQ_MODE(v)                     (((v) & 0x3) << 21)
+#define DDRMC_CR154_DDR_SEL_PAD_CONTR(v)               (((v) & 0x3) << 18)
 #define DDRMC_CR155_AXI0_AWCACHE                       (1 << 10)
 #define DDRMC_CR155_PAD_ODT_BYTE1(v)                   ((v) & 0x7)
 #define DDRMC_CR158_TWR(v)                             ((v) & 0x3f)
index 39184da40ea02530bcced9d9223f961512b92537..2aede0c552c62a4956028afd36a03ce411d5d55b 100644 (file)
 #define ZYNQ_SPI_BASEADDR0             0xE0006000
 #define ZYNQ_SPI_BASEADDR1             0xE0007000
 #define ZYNQ_DDRC_BASEADDR             0xF8006000
+#define ZYNQ_EFUSE_BASEADDR            0xF800D000
+#define ZYNQ_USB_BASEADDR0             0xE0002000
+#define ZYNQ_USB_BASEADDR1             0xE0003000
 
 /* Bootmode setting values */
-#define ZYNQ_BM_MASK           0xF
+#define ZYNQ_BM_MASK           0x7
 #define ZYNQ_BM_NOR            0x2
 #define ZYNQ_BM_SD             0x5
 #define ZYNQ_BM_JTAG           0x0
@@ -130,4 +133,12 @@ struct ddrc_regs {
 };
 #define ddrc_base ((struct ddrc_regs *)ZYNQ_DDRC_BASEADDR)
 
+struct efuse_reg {
+       u32 reserved1[4];
+       u32 status;
+       u32 reserved2[3];
+};
+
+#define efuse_base ((struct efuse_reg *)ZYNQ_EFUSE_BASEADDR)
+
 #endif /* _ASM_ARCH_HARDWARE_H */
index a68e1b3d231878d6a7d5129003ec4f688137b1ca..53c30ec6cf3a3b3b92c62d0150a3019dc0428751 100644 (file)
@@ -15,7 +15,9 @@ extern void zynq_slcr_devcfg_disable(void);
 extern void zynq_slcr_devcfg_enable(void);
 extern u32 zynq_slcr_get_boot_mode(void);
 extern u32 zynq_slcr_get_idcode(void);
+extern int zynq_slcr_get_mio_pin_status(const char *periph);
 extern void zynq_ddrc_init(void);
+extern unsigned int zynq_get_silicon_version(void);
 
 /* Driver extern functions */
 extern int zynq_sdhci_init(u32 regbase);
index abf79e5c9ed230c6cb64bfb3d7a8e705253ad115..2a20a770bcd38102f3b94d91f318162eaa24683b 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
+
 #define CONFIG_LMB
 #define CONFIG_SYS_BOOT_RAMDISK_HIGH
 
index dec11a133044bd54bf54a92a876ca3c0cc04cfa3..cca920b28ecfd1e527ec66a66ce729bf4741ec1f 100644 (file)
@@ -111,6 +111,11 @@ typedef u64 iomux_v3_cfg_t;
 #define PAD_CTL_DSE_40ohm      (6 << 3)
 #define PAD_CTL_DSE_34ohm      (7 << 3)
 
+#if defined CONFIG_MX6SL
+#define PAD_CTL_LVE            (1 << 1)
+#define PAD_CTL_LVE_BIT                (1 << 22)
+#endif
+
 #elif defined(CONFIG_VF610)
 
 #define PAD_MUX_MODE_SHIFT     20
diff --git a/arch/arm/include/asm/imx-common/video.h b/arch/arm/include/asm/imx-common/video.h
new file mode 100644 (file)
index 0000000..2d94850
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __IMX_VIDEO_H_
+#define __IMX_VIDEO_H_
+
+#include <linux/fb.h>
+#include <ipu_pixfmt.h>
+
+struct display_info_t {
+       int     bus;
+       int     addr;
+       int     pixfmt;
+       int     (*detect)(struct display_info_t const *dev);
+       void    (*enable)(struct display_info_t const *dev);
+       struct  fb_videomode mode;
+};
+
+#ifdef CONFIG_IMX_HDMI
+extern int detect_hdmi(struct display_info_t const *dev);
+#endif
+
+#endif
index 729723afefec8dc0460777cba60465c70458403d..d1344ee94c337847434556b83260704a811730f5 100644 (file)
@@ -576,12 +576,6 @@ s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb);
 
 void usb_fake_mac_from_die_id(u32 *id);
 
-/* HW Init Context */
-#define OMAP_INIT_CONTEXT_SPL                  0
-#define OMAP_INIT_CONTEXT_UBOOT_FROM_NOR       1
-#define OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL      2
-#define OMAP_INIT_CONTEXT_UBOOT_AFTER_CH       3
-
 /* ABB */
 #define OMAP_ABB_NOMINAL_OPP           0
 #define OMAP_ABB_FAST_OPP              1
@@ -645,6 +639,7 @@ static inline u8 is_dra7xx(void)
 /* DRA7XX */
 #define DRA752_ES1_0   0x07520100
 #define DRA752_ES1_1   0x07520110
+#define DRA722_ES1_0   0x07220100
 
 /*
  * SRAM scratch space entries
diff --git a/arch/arm/include/asm/ti-common/sys_proto.h b/arch/arm/include/asm/ti-common/sys_proto.h
new file mode 100644 (file)
index 0000000..d3ab75f
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * (C) Copyright 2014
+ * Texas Instruments, <www.ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef _TI_COMMON_SYS_PROTO_H_
+#define _TI_COMMON_SYS_PROTO_H_
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_OMAP_COMMON
+#define TI_ARMV7_DRAM_ADDR_SPACE_START 0x80000000
+#define TI_ARMV7_DRAM_ADDR_SPACE_END   0xFFFFFFFF
+
+#define OMAP_INIT_CONTEXT_SPL                  0
+#define OMAP_INIT_CONTEXT_UBOOT_FROM_NOR       1
+#define OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL      2
+#define OMAP_INIT_CONTEXT_UBOOT_AFTER_CH       3
+
+static inline u32 running_from_sdram(void)
+{
+       u32 pc;
+       asm volatile ("mov %0, pc" : "=r" (pc));
+       return ((pc >= TI_ARMV7_DRAM_ADDR_SPACE_START) &&
+           (pc < TI_ARMV7_DRAM_ADDR_SPACE_END));
+}
+
+static inline u8 uboot_loaded_by_spl(void)
+{
+       /*
+        * u-boot can be running from sdram either because of configuration
+        * Header or by SPL. If because of CH, then the romcode sets the
+        * CHSETTINGS executed bit to true in the boot parameter structure that
+        * it passes to the bootloader.This parameter is stored in the ch_flags
+        * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
+        * mandatory section if CH is present.
+        */
+       if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
+               return 0;
+       else
+               return running_from_sdram();
+}
+
+/*
+ * The basic hardware init of OMAP(s_init()) can happen in 4
+ * different contexts:
+ *  1. SPL running from SRAM
+ *  2. U-Boot running from FLASH
+ *  3. Non-XIP U-Boot loaded to SDRAM by SPL
+ *  4. Non-XIP U-Boot loaded to SDRAM by ROM code using the
+ *     Configuration Header feature
+ *
+ * This function finds this context.
+ * Defining as inline may help in compiling out unused functions in SPL
+ */
+static inline u32 omap_hw_init_context(void)
+{
+#ifdef CONFIG_SPL_BUILD
+       return OMAP_INIT_CONTEXT_SPL;
+#else
+       if (uboot_loaded_by_spl())
+               return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL;
+       else if (running_from_sdram())
+               return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH;
+       else
+               return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR;
+#endif
+}
+#endif
+
+#endif
index cb81232b8324fb31a2e6b7f130bf0de727f959f1..43cc49468382301da46fb98520bd0eedf0ff4628 100644 (file)
@@ -27,7 +27,6 @@
 
 #ifndef __ASSEMBLY__
 typedef struct bd_info {
-       unsigned int    bi_baudrate;    /* serial console baudrate */
     ulong              bi_arch_number; /* unique id for this board */
     ulong              bi_boot_params; /* where this board expects params */
        unsigned long   bi_arm_freq; /* arm frequency */
index 92e85c4db5152cf1f4d68671b1e76d68dcba1bcd..9b473b5eaba250d95c11d6f8a3a18e6ee251a4c4 100644 (file)
@@ -445,7 +445,6 @@ void board_init_f(ulong bootflag)
        post_run(NULL, POST_ROM | post_bootmode_get(0));
 #endif
 
-       gd->bd->bi_baudrate = gd->baudrate;
        /* Ram ist board specific, so move it to board code ... */
        dram_init_banksize();
        display_dram_config();  /* and display it */
index bff17d5ed2633515bd24bfc095525b55f2e2fe00..6aef8087490a2d9ab031062ea193eeb270082d61 100644 (file)
@@ -7,7 +7,6 @@
 #define __ASM_U_BOOT_H__ 1
 
 typedef struct bd_info {
-       unsigned int            bi_baudrate;
        unsigned char           bi_phy_id[4];
        unsigned long           bi_board_number;
        void                    *bi_boot_params;
index 28c2ec09efdf705ad241e6fefc74a189aabdb622..7680102f523f2f8ba5ea090d08d7fad4235a0bd1 100644 (file)
@@ -220,7 +220,6 @@ void board_init_f(ulong board_type)
         */
        bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
        bd->bi_dram[0].size = sdram_size;
-       bd->bi_baudrate = gd->baudrate;
 
        memcpy(new_gd, gd, sizeof(gd_t));
 
diff --git a/arch/blackfin/include/asm/net.h b/arch/blackfin/include/asm/net.h
deleted file mode 100644 (file)
index 97cb466..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * net.h - misc Blackfin network helpers
- *
- * Copyright (c) 2008-2009 Analog Devices Inc.
- *
- * Licensed under the GPL-2 or later.
- */
-
-#ifndef __ASM_BFIN_RAND_MAC__
-#define __ASM_BFIN_RAND_MAC__
-
-/* If the board does not have a real MAC assigned to it, then generate a
- * locally administrated pseudo-random one based on CYCLES and compile date.
- */
-static inline void bfin_gen_rand_mac(uchar *mac_addr)
-{
-       /* make something up */
-       const char s[] = __DATE__;
-       size_t i;
-       u32 cycles;
-       for (i = 0; i < 6; ++i) {
-               asm("%0 = CYCLES;" : "=r" (cycles));
-               mac_addr[i] = cycles ^ s[i];
-       }
-       mac_addr[0] = (mac_addr[0] | 0x02) & ~0x01; /* make it local unicast */
-}
-
-#endif
index fc36ced519e55ef64aee1ef6c3eae8b5bfd7e416..acaeee9053e45e2129fab87058b57f63d71b7160 100644 (file)
@@ -13,7 +13,6 @@
 #define _U_BOOT_H_     1
 
 typedef struct bd_info {
-       unsigned int bi_baudrate;       /* serial console baudrate */
        unsigned long bi_boot_params;   /* where this board expects params */
        unsigned long bi_memstart;      /* start of DRAM memory */
        phys_size_t bi_memsize;         /* size  of DRAM memory in bytes */
index 62342014a4703570e2d190d1219e5942218ff3e7..87842557dfd3872d02ae6b6d5bb80d19c5b898a7 100644 (file)
@@ -69,7 +69,6 @@ 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;
 }
 
@@ -92,7 +91,6 @@ static void display_global_data(void)
        printf(" |-env_valid: %lx\n", gd->env_valid);
        printf(" |-jt(%p): %p\n", gd->jt, *(gd->jt));
        printf(" \\-bd: %p\n", gd->bd);
-       printf("   |-bi_baudrate: %x\n", bd->bi_baudrate);
        printf("   |-bi_boot_params: %lx\n", bd->bi_boot_params);
        printf("   |-bi_memstart: %lx\n", bd->bi_memstart);
        printf("   |-bi_memsize: %lx\n", bd->bi_memsize);
index 99de31aff5f51d60b78bfc72f255d6afafa918cc..983cb2d9671c8aebc37fbe1ed6a7577ae4b15373 100644 (file)
@@ -44,7 +44,6 @@ typedef struct bd_info {
        unsigned long bi_vcofreq;       /* vco Freq in MHz */
        unsigned long bi_flbfreq;       /* Flexbus Freq in MHz */
 #endif
-       unsigned int bi_baudrate;       /* Console Baudrate */
 } bd_t;
 
 #endif                         /* __ASSEMBLY__ */
index e75b6a98dd5cb615d8d592504574b275ed2899a2..318ca01ea7f6df0ed39f04bb6152454b61d96d21 100644 (file)
@@ -342,7 +342,6 @@ board_init_f (ulong bootflag)
        bd->bi_vcofreq = gd->arch.vco_clk;              /* vco Freq in Hz */
        bd->bi_flbfreq = gd->arch.flb_clk;              /* flexbus Freq in Hz */
 #endif
-       bd->bi_baudrate = gd->baudrate; /* Console Baudrate     */
 
 #ifdef CONFIG_SYS_EXTBDINFO
        strncpy (bd->bi_s_version, "1.2", sizeof (bd->bi_s_version));
index ab3f23202d67e326b4922074f3e29eece37fa908..54d415ebb5bd22320f63f5cac66da3a06b708d9b 100644 (file)
@@ -24,7 +24,6 @@ typedef struct bd_info {
        unsigned long   bi_flashoffset; /* reserved area for startup monitor */
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
-       unsigned int    bi_baudrate;    /* Console Baudrate */
        ulong           bi_boot_params; /* where this board expects params */
 } bd_t;
 
index fafeeaebd6395acd9353bf92a4c1c3eaae0492ee..600c80ab7666092a2a1f6af254b4385254a008f1 100644 (file)
@@ -78,7 +78,6 @@ void board_init_f(ulong not_used)
        memset((void *)bd, 0, GENERATED_BD_INFO_SIZE);
        gd->bd = bd;
        gd->baudrate = CONFIG_BAUDRATE;
-       bd->bi_baudrate = CONFIG_BAUDRATE;
        bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
        bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
        gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */
index 3a891ba62727511706291cf292b0fb23b7ec2a02..1c8a42bd2f6ea8233e019100ea4560be5ef17984 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
+
 #define CONFIG_LMB
 #define CONFIG_SYS_BOOT_RAMDISK_HIGH
 
index 0eb170ded8e1fc62fdabf51c35c91dd6b2019f20..4909a2a5c4bfed2ee5916c2a30a70db6e5f1e618 100644 (file)
@@ -23,7 +23,6 @@
 #else /* !CONFIG_SYS_GENERIC_BOARD */
 
 typedef struct bd_info {
-       unsigned int    bi_baudrate;    /* serial console baudrate */
        unsigned long   bi_arch_number; /* unique id for this board */
        unsigned long   bi_boot_params; /* where this board expects params */
        unsigned long   bi_memstart;    /* start of DRAM memory */
index 3200d87e30ae623267541949336118081885ab52..3feb02071209b1e959d8ca1706e03be7928f7caf 100644 (file)
@@ -204,7 +204,6 @@ void board_init_f(ulong bootflag)
         */
        bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;        /* start of DRAM */
        bd->bi_memsize  = gd->ram_size;         /* size of DRAM in bytes */
-       bd->bi_baudrate = gd->baudrate;         /* Console Baudrate */
 
        memcpy(id, (void *)gd, sizeof(gd_t));
 
index 8170d28f7c2d4dc450583c7e9034d5a0ed6e199e..44e72d414b9de9ad94504305700de7bca1cd47ee 100644 (file)
@@ -23,7 +23,6 @@
 #include <environment.h>
 
 typedef struct bd_info {
-       unsigned int    bi_baudrate;    /* serial console baudrate */
        unsigned long   bi_arch_number; /* unique id for this board */
        unsigned long   bi_boot_params; /* where this board expects params */
        unsigned long   bi_memstart;    /* start of DRAM memory */
index 2d4c6231a3774114366bed986631bb7a59e98587..4c06a4866b1e28307bbc30b26edf6b299bae4339 100644 (file)
@@ -255,7 +255,6 @@ void board_init_f(ulong bootflag)
        addr_sp &= ~0x07;
        debug("New Stack Pointer is: %08lx\n", addr_sp);
 
-       gd->bd->bi_baudrate = gd->baudrate;
        /* Ram isn't board specific, so move it to board code ... */
        dram_init_banksize();
        display_dram_config();  /* and display it */
index 6849b4ae9f2c65e0617a25aae443a4817772d1c0..51f6c30ef76e2d3b4217a58bf9959e309deb7842 100644 (file)
@@ -23,7 +23,6 @@ typedef struct bd_info {
        unsigned long   bi_flashoffset; /* reserved area for startup monitor */
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
-       unsigned int    bi_baudrate;    /* Console Baudrate */
 } bd_t;
 
 /* For image.h:image_check_target_arch() */
index bb1a8a7340724bf232f7ecbfc833451df8f1bbfc..f24218ff1c1f269fcba0cc8f63d24ca196b155f5 100644 (file)
@@ -92,7 +92,6 @@ void board_init(void)
        bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;
        bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;
 #endif
-       bd->bi_baudrate = CONFIG_BAUDRATE;
 
        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
                WATCHDOG_RESET();
index 5c288a85ffcd01f4ab98c633a7f6f201c2ce14a3..cdb8ff996ed68f887e42132cb046de15f1f14805 100644 (file)
@@ -16,7 +16,6 @@
 #define _U_BOOT_H_
 
 typedef struct bd_info {
-       unsigned int    bi_baudrate;    /* serial console baudrate */
        unsigned long   bi_arch_number; /* unique id for this board */
        unsigned long   bi_boot_params; /* where this board expects params */
        unsigned long   bi_memstart;    /* start of DRAM memory */
index 391d1e19c514de03b79f22516c7d75e142e9a41d..234668538ca0814f580437a3beb1d1594c758586 100644 (file)
@@ -84,7 +84,6 @@ void board_init(void)
        bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;
        bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;
 #endif
-       bd->bi_baudrate = CONFIG_BAUDRATE;
 
        for (i = 0; i < ARRAY_SIZE(init_sequence); i++) {
                WATCHDOG_RESET();
index 409478539ec1a7eb16750f19baa0635faed2e51b..ad26b432f1832ea356907c7bf0923dd23dec0abb 100644 (file)
@@ -44,6 +44,7 @@ obj-$(CONFIG_PPC_P5020) += p5020_ids.o
 obj-$(CONFIG_PPC_P5040) += p5040_ids.o
 obj-$(CONFIG_PPC_T4240) += t4240_ids.o
 obj-$(CONFIG_PPC_T4160) += t4240_ids.o
+obj-$(CONFIG_PPC_T4080) += t4240_ids.o
 obj-$(CONFIG_PPC_B4420) += b4860_ids.o
 obj-$(CONFIG_PPC_B4860) += b4860_ids.o
 obj-$(CONFIG_PPC_T1040) += t1040_ids.o
@@ -88,6 +89,7 @@ obj-$(CONFIG_PPC_P5020) += p5020_serdes.o
 obj-$(CONFIG_PPC_P5040) += p5040_serdes.o
 obj-$(CONFIG_PPC_T4240) += t4240_serdes.o
 obj-$(CONFIG_PPC_T4160) += t4240_serdes.o
+obj-$(CONFIG_PPC_T4080) += t4240_serdes.o
 obj-$(CONFIG_PPC_B4420) += b4860_serdes.o
 obj-$(CONFIG_PPC_B4860) += b4860_serdes.o
 obj-$(CONFIG_BSC9132) += bsc9132_serdes.o
index 9d8acd0aa173ff29fa89b6aac8cef02e70e2393a..3d37a7614f9cb232938fea5cb02e2d044098737f 100644 (file)
@@ -299,6 +299,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #ifdef CONFIG_SYS_FSL_ERRATUM_A007212
        check_erratum_a007212();
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005434
+       puts("Work-around for Erratum A-005434 enabled\n");
+#endif
 
        return 0;
 }
index 12e8e10d483cacc7493c55b24f57fce2f88240cd..684d4007e48a9f9be845c12f533fc9a0d0b873ef 100644 (file)
@@ -77,6 +77,30 @@ int checkcpu (void)
        major = SVR_MAJ(svr);
        minor = SVR_MIN(svr);
 
+#if defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2) && defined(CONFIG_E6500)
+       if (SVR_SOC_VER(svr) == SVR_T4080) {
+               ccsr_rcpm_t *rcpm =
+                       (void __iomem *)(CONFIG_SYS_FSL_CORENET_RCPM_ADDR);
+
+               setbits_be32(&gur->devdisr2, FSL_CORENET_DEVDISR2_DTSEC1_6 ||
+                            FSL_CORENET_DEVDISR2_DTSEC1_9);
+               setbits_be32(&gur->devdisr3, FSL_CORENET_DEVDISR3_PCIE3);
+               setbits_be32(&gur->devdisr5, FSL_CORENET_DEVDISR5_DDR3);
+
+               /* It needs SW to disable core4~7 as HW design sake on T4080 */
+               for (i = 4; i < 8; i++)
+                       cpu_disable(i);
+
+               /* request core4~7 into PH20 state, prior to entering PCL10
+                * state, all cores in cluster should be placed in PH20 state.
+                */
+               setbits_be32(&rcpm->pcph20setr, 0xf0);
+
+               /* put the 2nd cluster into PCL10 state */
+               setbits_be32(&rcpm->clpcl10setr, 1 << 1);
+       }
+#endif
+
        if (cpu_numcores() > 1) {
 #ifndef CONFIG_MP
                puts("Unicore software on multiprocessor system!!\n"
index 36ef23232ed044db5cf3316067b445d213c0f87a..d6cf88555a11d23056caef9d62a58a9b436a2986 100644 (file)
@@ -368,12 +368,12 @@ void fsl_erratum_a007212_workaround(void)
 }
 #endif
 
-void cpu_init_f (void)
+ulong cpu_init_f(void)
 {
+       ulong flag = 0;
        extern void m8560_cpm_reset (void);
 #ifdef CONFIG_SYS_DCSRBAR_PHYS
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
-       gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
 #endif
 #if defined(CONFIG_SECURE_BOOT)
        struct law_entry law;
@@ -442,13 +442,14 @@ void cpu_init_f (void)
 #ifdef CONFIG_DEEP_SLEEP
        /* disable the console if boot from deep sleep */
        if (in_be32(&gur->scrtsr[0]) & (1 << 3))
-               gd->flags |= GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
+               flag = GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE;
 #endif
 #endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_A007212
        fsl_erratum_a007212_workaround();
 #endif
 
+       return flag;
 }
 
 /* Implement a dummy function for those platforms w/o SERDES */
@@ -462,10 +463,17 @@ __attribute__((weak, alias("__fsl_serdes__init"))) void fsl_serdes_init(void);
 int enable_cluster_l2(void)
 {
        int i = 0;
-       u32 cluster;
+       u32 cluster, svr = get_svr();
        ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
        struct ccsr_cluster_l2 __iomem *l2cache;
 
+       /* only the L2 of first cluster should be enabled as expected on T4080,
+        * but there is no EOC in the first cluster as HW sake, so return here
+        * to skip enabling L2 cache of the 2nd cluster.
+        */
+       if (SVR_SOC_VER(svr) == SVR_T4080)
+               return 0;
+
        cluster = in_be32(&gur->tp_cluster[i].lower);
        if (cluster & TP_CLUSTER_EOC)
                return 0;
@@ -888,6 +896,7 @@ skip_l2:
        }
 #endif
 
+       init_used_tlb_cams();
 
        return 0;
 }
index 998781b706bc22667313053c3b055e773975f8a3..47b712d56b5595a89d797cb9b868506606ede539 100644 (file)
@@ -102,11 +102,13 @@ void cpu_init_early_f(void *fdt)
        for (i = 0; i < sizeof(gd_t); i++)
                ((char *)gd)[i] = 0;
 
+#ifdef CONFIG_QEMU_E500
        /*
         * CONFIG_SYS_CCSRBAR_PHYS below may use gd->fdt_blob on ePAPR systems,
         * so we need to populate it before it accesses it.
         */
        gd->fdt_blob = fdt;
+#endif
 
        mas0 = MAS0_TLBSEL(1) | MAS0_ESEL(13);
        mas1 = MAS1_VALID | MAS1_TID(0) | MAS1_TS | MAS1_TSIZE(BOOKE_PAGESZ_1M);
index 0cc21c7f680916d0a58dcedb162f90e7f0469f91..ed80a841804425f07c6064c216fd629ee0c3b010 100644 (file)
@@ -674,7 +674,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 
 #ifdef CONFIG_CPM2
        do_fixup_by_compat_u32(blob, "fsl,cpm2-scc-uart",
-               "current-speed", bd->bi_baudrate, 1);
+               "current-speed", gd->baudrate, 1);
 
        do_fixup_by_compat_u32(blob, "fsl,cpm2-brg",
                "clock-frequency", bd->bi_brgfreq, 1);
index d516d4e4a627aa669281824815db01defb3c97d6..3236f6a5da6b577af94441996a89127e1ddeac81 100644 (file)
@@ -123,7 +123,8 @@ void get_sys_info(sys_info_t *sys_info)
         * T4240/T4160 Rev1.0. eg. It's 12 in Rev1.0, however, for Rev2.0
         * it uses 6.
         */
-#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
+#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
+       defined(CONFIG_PPC_T4080)
        if (SVR_MAJ(get_svr()) >= 2)
                mem_pll_rat *= 2;
 #endif
index 9e4c6c9078817dca12650b1548ea3b422469bf31..cc45f715e84bbe4c7164c5faf6eddf096fc87a12 100644 (file)
@@ -12,7 +12,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void cpu_init_f(void)
+ulong cpu_init_f(void)
 {
 #ifdef CONFIG_SYS_INIT_L2_ADDR
        ccsr_l2cache_t *l2cache = (void *)CONFIG_SYS_MPC85xx_L2_ADDR;
@@ -27,6 +27,8 @@ void cpu_init_f(void)
        out_be32(&l2cache->l2ctl,
                (MPC85xx_L2CTL_L2E | MPC85xx_L2CTL_L2SRAM_ENTIRE));
 #endif
+
+       return 0;
 }
 
 #ifndef CONFIG_SYS_FSL_TBCLK_DIV
index 0e3c86a0f8f211e1f667af53280121c29c6294e1..d8c9fb6b2875c7d514bdca389066fb3a8aa6a7b5 100644 (file)
@@ -314,7 +314,7 @@ l2_disabled:
 #endif
        mtspr   HID0,r0
 
-#ifndef CONFIG_E500MC
+#if !defined(CONFIG_E500MC) && !defined(CONFIG_QEMU_E500)
        li      r0,(HID1_ASTME|HID1_ABE)@l      /* Addr streaming & broadcast */
        mfspr   r3,PVR
        andi.   r3,r3, 0xff
@@ -1158,7 +1158,7 @@ _start_cont:
        mtmsr   r3
        isync
 
-       bl      cpu_init_f
+       bl      cpu_init_f      /* return boot_flag for calling board_init_f */
        bl      board_init_f
        isync
 
index f18131513468cf5ff925ab4da5d00d5651927e85..1a3cb33987426878d718b24cd1f15bf9fd499dc9 100644 (file)
@@ -64,11 +64,13 @@ struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {
 };
 #endif
 
+#ifdef CONFIG_SYS_SRIO
 struct srio_liodn_id_table srio_liodn_tbl[] = {
        SET_SRIO_LIODN_BASE(1, 307),
        SET_SRIO_LIODN_BASE(2, 387),
 };
 int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl);
+#endif
 
 struct liodn_id_table liodn_tbl[] = {
 #ifdef CONFIG_SYS_DPAA_QBMAN
index ff55e3c357c3371b9f078d3da40550b3710a7cd4..1f99a0a8978f11d847ea59318220d88453a4cec1 100644 (file)
@@ -172,7 +172,7 @@ static const struct serdes_config serdes4_cfg_tbl[] = {
        {18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}},
        {}
 };
-#elif defined(CONFIG_PPC_T4160)
+#elif defined(CONFIG_PPC_T4160) || defined(CONFIG_PPC_T4080)
 static const struct serdes_config serdes1_cfg_tbl[] = {
        /* SerDes 1 */
        {1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9,
index d77a6dc62d8ac97fb9988cc9143b6021f87202b4..f933b219449411b2b68fc1ccb93ab8b2a310925a 100644 (file)
@@ -4,7 +4,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include "config.h"    /* CONFIG_BOARDDIR */
+#include "config.h"
 
 #ifndef CONFIG_SYS_MONITOR_LEN
 #define CONFIG_SYS_MONITOR_LEN 0x80000
index 844f7e94f13eb1dd852a4fa9eafd0642ded102f0..b83c55388cf2f49f8cdfc24ce5469e20d43487f0 100644 (file)
@@ -7,7 +7,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include "config.h"    /* CONFIG_BOARDDIR */
+#include "config.h"
 
 OUTPUT_ARCH(powerpc)
 SECTIONS
index 8453f3a3fe8901f8a768be3a2dce33412a100ebe..5ae7b3eedbc989b9d5636b27b70360ada39a70c3 100644 (file)
@@ -7,7 +7,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include "config.h"    /* CONFIG_BOARDDIR */
+#include "config.h"
 
 OUTPUT_ARCH(powerpc)
 #ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
index 0b9086dfd09befe23d47bb76e424e34ac9463d9d..2cf0b2595251ee755b47389eb48624062f3a766f 100644 (file)
@@ -4,7 +4,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include "config.h"    /* CONFIG_BOARDDIR */
+#include "config.h"
 
 #ifdef CONFIG_RESET_VECTOR_ADDRESS
 #define RESET_VECTOR_ADDRESS   CONFIG_RESET_VECTOR_ADDRESS
index e33672a3a01a7cad17da38bb52ec19957812b06c..ec5f4a756af13f89e96258557ce4321d0378bc64 100644 (file)
@@ -273,6 +273,7 @@ diag_done:
 /*     bl      l2cache_enable */
 
        /* run 1st part of board init code (from Flash)   */
+       li      r3, 0           /* clear boot_flag for calling board_init_f */
        bl      board_init_f
        sync
 
index 35795c4fbe7a12896c7afad150c1986414bfad55..15561a15331d5c341125107bef2dc9d2bf1c5a04 100644 (file)
@@ -62,10 +62,12 @@ static struct cpu_type cpu_type_list[] = {
        CPU_TYPE_ENTRY(T4240, T4240, 0),
        CPU_TYPE_ENTRY(T4120, T4120, 0),
        CPU_TYPE_ENTRY(T4160, T4160, 0),
+       CPU_TYPE_ENTRY(T4080, T4080, 4),
        CPU_TYPE_ENTRY(B4860, B4860, 0),
        CPU_TYPE_ENTRY(G4860, G4860, 0),
        CPU_TYPE_ENTRY(G4060, G4060, 0),
        CPU_TYPE_ENTRY(B4440, B4440, 0),
+       CPU_TYPE_ENTRY(B4460, B4460, 0),
        CPU_TYPE_ENTRY(G4440, G4440, 0),
        CPU_TYPE_ENTRY(B4420, B4420, 0),
        CPU_TYPE_ENTRY(B4220, B4220, 0),
@@ -176,7 +178,7 @@ struct cpu_type *identify_cpu(u32 ver)
 /*
  * Return a 32-bit mask indicating which cores are present on this SOC.
  */
-u32 cpu_mask(void)
+__weak u32 cpu_mask(void)
 {
        ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
        struct cpu_type *cpu = gd->arch.cpu;
@@ -195,7 +197,7 @@ u32 cpu_mask(void)
 /*
  * Return the number of cores on this SOC.
  */
-int cpu_numcores(void)
+__weak int cpu_numcores(void)
 {
        struct cpu_type *cpu = gd->arch.cpu;
 
index 864e74c0c761d8240f26fa0576928f0bfdd1d248..34fc8fb5347f3a47217f414b50dbbb6b49710f0a 100644 (file)
 #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
 #define CONFIG_SYS_FSL_ERRATUM_A005125
+#ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#endif
 
 #elif defined(CONFIG_P1021)
 #define CONFIG_MAX_CPUS                        2
 #define CONFIG_SYS_FSL_ESDHC_P1010_BROKEN_SDCLK
 #define CONFIG_SYS_FSL_PCIE_COMPAT     "fsl,qoriq-pcie-v2.2"
 #define CONFIG_SYS_FSL_ERRATUM_A005125
+#define CONFIG_SYS_FSL_ERRATUM_A005434
 #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
 #define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
 #define CONFIG_ESDHC_HC_BLK_ADDR
 
-#elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
+#elif defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
+       defined(CONFIG_PPC_T4080)
 #define CONFIG_E6500
 #define CONFIG_SYS_PPC64               /* 64-bit core */
 #define CONFIG_FSL_CORENET             /* Freescale CoreNet platform */
 #define CONFIG_SYS_NUM_FM2_10GEC       2
 #define CONFIG_NUM_DDR_CONTROLLERS     3
 #else
-#define CONFIG_MAX_CPUS                        8
-#define CONFIG_SYS_FSL_CLUSTER_CLOCKS   { 1, 1 }
-#define CONFIG_SYS_NUM_FM1_DTSEC       7
+#define CONFIG_SYS_NUM_FM1_DTSEC       6
 #define CONFIG_SYS_NUM_FM1_10GEC       1
-#define CONFIG_SYS_NUM_FM2_DTSEC       7
+#define CONFIG_SYS_NUM_FM2_DTSEC       8
 #define CONFIG_SYS_NUM_FM2_10GEC       1
 #define CONFIG_NUM_DDR_CONTROLLERS     2
+#if defined(CONFIG_PPC_T4160)
+#define CONFIG_MAX_CPUS                        8
+#define CONFIG_SYS_FSL_CLUSTER_CLOCKS  { 1, 1 }
+#elif defined(CONFIG_PPC_T4080)
+#define CONFIG_MAX_CPUS                        4
+#define CONFIG_SYS_FSL_CLUSTER_CLOCKS  { 1 }
+#endif
 #endif
 #define CONFIG_SYS_FSL_NUM_CC_PLLS     5
 #define CONFIG_SYS_FSL_NUM_LAWS                32
@@ -798,6 +807,9 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define CONFIG_SYS_FSL_SFP_VER_3_0
 #define CONFIG_SYS_FSL_ISBC_VER                2
 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
+#define CONFIG_SYS_FSL_ERRATUM_A006261
+#define CONFIG_SYS_FSL_ERRATUM_A006593
+#define CONFIG_SYS_FSL_ERRATUM_A006379
 #define ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE
 
 
index 4eba85cc3475b9fabca873981e9b1a81eafd95f3..64da4bb3bae185ae180908332f5033b2b2b701ea 100644 (file)
@@ -16,6 +16,7 @@ static inline bool has_erratum_a006379(void)
        u32 svr = get_svr();
        if (((SVR_SOC_VER(svr) == SVR_T4240) && SVR_MAJ(svr) <= 1) ||
            ((SVR_SOC_VER(svr) == SVR_T4160) && SVR_MAJ(svr) <= 1) ||
+           ((SVR_SOC_VER(svr) == SVR_T4080) && SVR_MAJ(svr) <= 1) ||
            ((SVR_SOC_VER(svr) == SVR_B4860) && SVR_MAJ(svr) <= 2) ||
            ((SVR_SOC_VER(svr) == SVR_B4420) && SVR_MAJ(svr) <= 2) ||
            ((SVR_SOC_VER(svr) == SVR_T2080) && SVR_MAJ(svr) <= 1) ||
@@ -49,9 +50,13 @@ static inline bool has_erratum_a006261(void)
                return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
        case SVR_T4240:
        case SVR_T4160:
+       case SVR_T4080:
                return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
        case SVR_T1040:
                return IS_SVR_REV(svr, 1, 0);
+       case SVR_T2080:
+       case SVR_T2081:
+               return IS_SVR_REV(svr, 1, 0);
        case SVR_P5040:
                return IS_SVR_REV(svr, 1, 0);
        }
index 29bef910ed67f71fb23c709f0a0a50b2662c53d4..74c5d8f2d9233e4534ff05e60b44d4bc5e8cf7dd 100644 (file)
@@ -20,8 +20,9 @@
 #if defined(CONFIG_B4860QDS) || \
        defined(CONFIG_T4240QDS) || \
        defined(CONFIG_T2080QDS) || \
+       defined(CONFIG_T2080RDB) || \
        defined(CONFIG_T1040QDS) || \
-       defined(CONFIG_T1040RDB)
+       defined(CONFIG_T104xRDB)
 #define CONFIG_SYS_CPC_REINIT_F
 #undef CONFIG_SYS_INIT_L3_ADDR
 #define CONFIG_SYS_INIT_L3_ADDR                        0xbff00000
index 741b8618d11fbd25ffd99e6658b95e122f5e72cf..eff573b5aded3c83b75dc83083aa46bc60897b98 100644 (file)
@@ -1748,7 +1748,8 @@ typedef struct ccsr_gur {
 /* use reserved bits 18~23 as scratch space to host DDR PLL ratio */
 #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_RESV_SHIFT      8
 #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK    0x3f
-#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
+#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
+       defined(CONFIG_PPC_T4080)
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL                0xfc000000
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT  26
 #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL                0x00fe0000
@@ -1848,7 +1849,8 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)
 #define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC5_MII          0x00100000
 #define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC5_NONE         0x00180000
 #endif
-#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
+#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160) || \
+       defined(CONFIG_PPC_T4080)
 #define FSL_CORENET_RCWSR13_EC1                        0x60000000 /* bits 417..418 */
 #define FSL_CORENET_RCWSR13_EC1_FM2_DTSEC5_RGMII       0x00000000
 #define FSL_CORENET_RCWSR13_EC1_FM2_GPIO               0x40000000
index 72f30feee6260c514e1c662f8f65eee38d385dbb..edd7375c18bc139f0dc58405e8425c5aa8294cde 100644 (file)
 #define SVR_T4240      0x824000
 #define SVR_T4120      0x824001
 #define SVR_T4160      0x824100
+#define SVR_T4080      0x824102
 #define SVR_C291       0x850000
 #define SVR_C292       0x850020
 #define SVR_C293       0x850030
 #define SVR_B4860      0X868000
 #define SVR_G4860      0x868001
+#define SVR_B4460      0x868003
 #define SVR_G4060      0x868003
 #define SVR_B4440      0x868100
 #define SVR_G4440      0x868101
index f4d4a6b30033327e74e6c12f5bc7656321e4d3e8..e1b566fa568b1fcab53634e388b64d834efa061e 100644 (file)
@@ -64,7 +64,6 @@ typedef struct bd_info {
        unsigned long   bi_ipbfreq;     /* IPB Bus Freq, in MHz */
        unsigned long   bi_pcifreq;     /* PCI Bus Freq, in MHz */
 #endif
-       unsigned int    bi_baudrate;    /* Console Baudrate */
 #if defined(CONFIG_405)   || \
     defined(CONFIG_405GP) || \
     defined(CONFIG_405EP) || \
index 8b03d3aa07b1f4b383b58fe2eb0165157026423d..57b4a09b04e320aed88fad76b80c49c04fee2f04 100644 (file)
@@ -547,7 +547,6 @@ void board_init_f(ulong bootflag)
        bd->bi_ipbfreq = gd->arch.ipb_clk;
        bd->bi_pcifreq = gd->pci_clk;
 #endif /* CONFIG_MPC5xxx */
-       bd->bi_baudrate = gd->baudrate; /* Console Baudrate     */
 
 #ifdef CONFIG_SYS_EXTBDINFO
        strncpy((char *) bd->bi_s_version, "1.2", sizeof(bd->bi_s_version));
index e094ae2d053f331e40475d46852303c79fa3274a..c3f889fb1cb1fcc1e6d8df22bd9ab652c46b9a7c 100644 (file)
@@ -18,3 +18,9 @@ cmd_u-boot__ = $(CC) -o $@ -T u-boot.lds \
        $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map
 
 CONFIG_ARCH_DEVICE_TREE := sandbox
+
+# Define this to avoid linking with SDL, which requires SDL libraries
+# This can solve 'sdl-config: Command not found' errors
+ifneq ($(NO_SDL),)
+PLATFORM_CPPFLAGS += -DSANDBOX_NO_SDL
+endif
diff --git a/arch/sandbox/dts/.gitignore b/arch/sandbox/dts/.gitignore
new file mode 100644 (file)
index 0000000..b60ed20
--- /dev/null
@@ -0,0 +1 @@
+*.dtb
index ec7729eb4ccbf44a5d74e0c220c22e46897208ae..6c1bff99c2bf3ced2ae666c8023f70e6cdc0adc3 100644 (file)
@@ -7,6 +7,7 @@
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
 #define CONFIG_SANDBOX_ARCH
 
 /* Used by drivers/spi/sandbox_spi.c and arch/sandbox/include/asm/state.h */
index 81d51612824e0257cf3bfb26a337deb88d183cd3..ea37c2449704ecb4f415a43193cd2b0ef21fe27f 100644 (file)
@@ -20,7 +20,6 @@ typedef struct bd_info {
        unsigned long   bi_flashoffset; /* reserved area for startup monitor */
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
-       unsigned int    bi_baudrate;    /* Console Baudrate */
        unsigned long   bi_boot_params; /* where this board expects params */
 } bd_t;
 
index 8498153d4ea3ec26ad4d8e77744cd9453be5e7f2..1eb7afb89e5ab7d57b14380781ecb4ad63357a90 100644 (file)
@@ -155,7 +155,6 @@ void sh_generic_init(void)
        bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;
        bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;
 #endif
-       bd->bi_baudrate = CONFIG_BAUDRATE;
 
        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
                WATCHDOG_RESET();
index de310fbbbb727e6a39b7575d11b1e3727901bb87..6e07fe6bb40e6f086bf1fbf16ff934d1c392bafd 100644 (file)
@@ -13,6 +13,9 @@
 
 #include <config.h>
 
+#define TIMER_BASE_CLK 1000000
+#define US_PER_TICK (1000000 / CONFIG_SYS_HZ)
+
 DECLARE_GLOBAL_DATA_PTR;
 
 /* reset CPU (jump to 0, without reset) */
@@ -90,7 +93,7 @@ void cpu_wait_ticks(unsigned long ticks)
        while (get_timer(start) < ticks) ;
 }
 
-/* initiate and setup timer0 interrupt to 1MHz
+/* initiate and setup timer0 interrupt to configured HZ. Base clock is 1MHz.
  * Return irq number for timer int or a negative number for
  * dealing with self
  */
@@ -98,28 +101,31 @@ int timer_interrupt_init_cpu(void)
 {
        LEON2_regs *leon2 = (LEON2_regs *) LEON2_PREGS;
 
-       /* 1ms ticks */
+       /* SYS_HZ ticks per second */
        leon2->Timer_Counter_1 = 0;
-       leon2->Timer_Reload_1 = 999;    /* (((1000000 / 100) - 1)) */
+       leon2->Timer_Reload_1 = (TIMER_BASE_CLK / CONFIG_SYS_HZ) - 1;
        leon2->Timer_Control_1 =
            (LEON2_TIMER_CTRL_EN | LEON2_TIMER_CTRL_RS | LEON2_TIMER_CTRL_LD);
 
        return LEON2_TIMER1_IRQNO;
 }
 
+ulong get_tbclk(void)
+{
+       return TIMER_BASE_CLK;
+}
+
 /*
  * This function is intended for SHORT delays only.
  */
 unsigned long cpu_usec2ticks(unsigned long usec)
 {
-       /* timer set to 1kHz ==> 1 clk tick = 1 msec */
-       if (usec < 1000)
+       if (usec < US_PER_TICK)
                return 1;
-       return (usec / 1000);
+       return usec / US_PER_TICK;
 }
 
 unsigned long cpu_ticks2usec(unsigned long ticks)
 {
-       /* 1tick = 1usec */
-       return ticks * 1000;
+       return ticks * US_PER_TICK;
 }
index 4720f42a93f8b8cb7f2acaf22a7e0edeaf7f8309..2f41d8847bdc2749901a91afe7415a7e6f0d0893 100644 (file)
@@ -14,6 +14,9 @@
 
 #include <config.h>
 
+#define TIMER_BASE_CLK 1000000
+#define US_PER_TICK (1000000 / CONFIG_SYS_HZ)
+
 DECLARE_GLOBAL_DATA_PTR;
 
 /* reset CPU (jump to 0, without reset) */
@@ -203,15 +206,15 @@ void cpu_wait_ticks(unsigned long ticks)
        while (get_timer(start) < ticks) ;
 }
 
-/* initiate and setup timer0 interrupt to 1MHz
+/* initiate and setup timer0 interrupt to configured HZ. Base clock is 1MHz.
  * Return irq number for timer int or a negative number for
  * dealing with self
  */
 int timer_interrupt_init_cpu(void)
 {
-       /* 1ms ticks */
+       /* SYS_HZ ticks per second */
        gptimer->e[0].val = 0;
-       gptimer->e[0].rld = 999;        /* (((1000000 / 100) - 1)) */
+       gptimer->e[0].rld = (TIMER_BASE_CLK / CONFIG_SYS_HZ) - 1;
        gptimer->e[0].ctrl =
            (LEON3_GPTIMER_EN |
             LEON3_GPTIMER_RL | LEON3_GPTIMER_LD | LEON3_GPTIMER_IRQEN);
@@ -219,19 +222,22 @@ int timer_interrupt_init_cpu(void)
        return gptimer_irq;
 }
 
+ulong get_tbclk(void)
+{
+       return TIMER_BASE_CLK;
+}
+
 /*
  * This function is intended for SHORT delays only.
  */
 unsigned long cpu_usec2ticks(unsigned long usec)
 {
-       /* timer set to 1kHz ==> 1 clk tick = 1 msec */
-       if (usec < 1000)
+       if (usec < US_PER_TICK)
                return 1;
-       return (usec / 1000);
+       return usec / US_PER_TICK;
 }
 
 unsigned long cpu_ticks2usec(unsigned long ticks)
 {
-       /* 1tick = 1usec */
-       return ticks * 1000;
+       return ticks * US_PER_TICK;
 }
index 66cf4b023d6daa73cdf91a37a5a666315f21ab6d..5f12e581316b2a7316592e83e4e7341b46dd446f 100644 (file)
@@ -40,7 +40,6 @@ typedef struct bd_info {
        unsigned short bi_ethspeed;     /* Ethernet speed in Mbps */
        unsigned long bi_intfreq;       /* Internal Freq, in MHz */
        unsigned long bi_busfreq;       /* Bus Freq, in MHz */
-       unsigned int bi_baudrate;       /* Console Baudrate */
 } bd_t;
 
 #endif                         /* __ASSEMBLY__ */
index c778ba26e737745d1e848c7bc3e8afa4eae3b3d4..b311a946c05ec2e264b7c33e444fd999b5e91f2e 100644 (file)
@@ -173,7 +173,6 @@ void board_init_f(ulong bootflag)
        bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;
        bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;
 #endif
-       bd->bi_baudrate = CONFIG_BAUDRATE;
        bd->bi_bootflags = bootflag;    /* boot / reboot flag (for LynxOS)    */
 
        gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */
index 4c926ce700fef4673f8f25ed9965d21dc84d5da9..25cbe62b1f9bfab3abc761233c99e1ba6e2c831b 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/sys_proto.h>
+#include <asm/arch/mmc_host_def.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
 #include <i2c.h>
@@ -214,3 +215,9 @@ int board_eth_init(bd_t *bis)
        return rv;
 }
 #endif /* CONFIG_DRIVER_TI_CPSW */
+#if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
+int board_mmc_init(bd_t *bis)
+{
+       return omap_mmc_init(1, 0, 0, -1, -1);
+}
+#endif
index 9c6deeabcfd9b4b3f51c179ef34003244a29ae58..2eb18df5e78766f5fe0102ce24296db72384d1e6 100644 (file)
@@ -39,12 +39,10 @@ int board_early_init_f(void)
 {
        unsigned int reg;
 
-#if !defined(CONFIG_NAND_U_BOOT)
        /* don't reinit PLL when booting via I2C bootstrap option */
        mfsdr(SDR0_PINSTP, reg);
        if (reg != 0xf0000000)
                board_pll_init_f();
-#endif
 
        acadia_gpio_init();
 
diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds
deleted file mode 100644 (file)
index 9a331c5..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) Copyright 2007
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/ppc4xx/start.o    (.text*)
-
-    /* Align to next NAND block */
-    . = ALIGN(0x4000);
-    common/env_embedded.o  (.ppcenv)
-    /* Keep some space here for redundant env and potential bad env blocks */
-    . = ALIGN(0x10000);
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    KEEP(*(.got))
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds
deleted file mode 100644 (file)
index 5e84369..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2007
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/ppc4xx/start.o    (.text*)
-    board/amcc/bamboo/init.o           (.text*)
-
-    /* Align to next NAND block */
-    . = ALIGN(0x4000);
-    common/env_embedded.o  (.ppcenv)
-    /* Keep some space here for redundant env and potential bad env blocks */
-    . = ALIGN(0x10000);
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    KEEP(*(.got))
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds
deleted file mode 100644 (file)
index 31a2123..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2008
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/ppc4xx/start.o    (.text)
-    board/amcc/canyonlands/init.o      (.text*)
-
-    /* Align to next NAND block */
-    . = ALIGN(0x20000);
-    common/env_embedded.o  (.ppcenv)
-    /* Keep some space here for redundant env and potential bad env blocks */
-    . = ALIGN(0x80000);
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    KEEP(*(.got))
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds
deleted file mode 100644 (file)
index 9a331c5..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) Copyright 2007
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/ppc4xx/start.o    (.text*)
-
-    /* Align to next NAND block */
-    . = ALIGN(0x4000);
-    common/env_embedded.o  (.ppcenv)
-    /* Keep some space here for redundant env and potential bad env blocks */
-    . = ALIGN(0x10000);
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    KEEP(*(.got))
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds
deleted file mode 100644 (file)
index f4d752c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/ppc4xx/start.o    (.text)
-    board/amcc/sequoia/init.o  (.text*)
-
-    /* Align to next NAND block */
-    . = ALIGN(0x4000);
-    common/env_embedded.o  (.ppcenv)
-    /* Keep some space here for redundant env and potential bad env blocks */
-    . = ALIGN(0x10000);
-
-    *(.text*)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    KEEP(*(.got))
-    _GOT2_TABLE_ = .;
-    KEEP(*(.got2))
-    _FIXUP_TABLE_ = .;
-    KEEP(*(.fixup))
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data*)
-    *(.sdata*)
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  .u_boot_list : {
-       KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.bss*)
-   *(.sbss*)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index 0c08c0640ef2d3ca5bfb6474a943fef21967eee4..65a4812c35b89871930e77637e9ca04e9516a117 100644 (file)
@@ -26,7 +26,7 @@
  * Spartan2 code is used to download our Spartan 3 :) code is compatible.
  * Just take care about the file size
  */
-Xilinx_Spartan3_Slave_Parallel_fns fpga_fns = {
+xilinx_spartan3_slave_parallel_fns fpga_fns = {
        fpga_pre_fn,
        fpga_pgm_fn,
        fpga_init_fn,
@@ -42,12 +42,13 @@ Xilinx_Spartan3_Slave_Parallel_fns fpga_fns = {
        fpga_post_fn,
 };
 
-Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
-       {Xilinx_Spartan3,
+xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
+       {xilinx_spartan3,
         slave_parallel,
         1196128l/8,
         (void *)&fpga_fns,
         0,
+        &spartan3_op,
         "3s200aft256"}
 };
 
index c679ad7f65c6f9664549e98aa90f0b3198c49014..1d044d96a563ed67f2fe2ff2da2e2a0f4425fb2a 100644 (file)
@@ -203,7 +203,7 @@ int astro5373l_altera_load(void)
 }
 
 /* Set the FPGA's PROG_B line to the specified level */
-int xilinx_pgm_fn(int assert, int flush, int cookie)
+int xilinx_pgm_config_fn(int assert, int flush, int cookie)
 {
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
 
@@ -218,7 +218,7 @@ int xilinx_pgm_fn(int assert, int flush, int cookie)
  * Test the state of the active-low FPGA INIT line.  Return 1 on INIT
  * asserted (low).
  */
-int xilinx_init_fn(int cookie)
+int xilinx_init_config_fn(int cookie)
 {
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
 
@@ -226,7 +226,7 @@ int xilinx_init_fn(int cookie)
 }
 
 /* Test the state of the active-high FPGA DONE pin */
-int xilinx_done_fn(int cookie)
+int xilinx_done_config_fn(int cookie)
 {
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
 
@@ -234,7 +234,7 @@ int xilinx_done_fn(int cookie)
 }
 
 /* Abort an FPGA operation */
-int xilinx_abort_fn(int cookie)
+int xilinx_abort_config_fn(int cookie)
 {
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
        /* ensure all SPI peripherals and FPGAs are deselected */
@@ -300,7 +300,7 @@ int xilinx_post_config_fn(int cookie)
        return rc;
 }
 
-int xilinx_clk_fn(int assert_clk, int flush, int cookie)
+int xilinx_clk_config_fn(int assert_clk, int flush, int cookie)
 {
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
 
@@ -311,7 +311,7 @@ int xilinx_clk_fn(int assert_clk, int flush, int cookie)
        return assert_clk;
 }
 
-int xilinx_wr_fn(int assert_write, int flush, int cookie)
+int xilinx_wr_config_fn(int assert_write, int flush, int cookie)
 {
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
 
@@ -322,7 +322,7 @@ int xilinx_wr_fn(int assert_write, int flush, int cookie)
        return assert_write;
 }
 
-int xilinx_fastwr_fn(void *buf, size_t len, int flush, int cookie)
+int xilinx_fastwr_config_fn(void *buf, size_t len, int flush, int cookie)
 {
        size_t bytecount = 0;
        gpio_t *gpiop = (gpio_t *)MMAP_GPIO;
@@ -363,23 +363,24 @@ int xilinx_fastwr_fn(void *buf, size_t len, int flush, int cookie)
  * relocated at runtime.
  * FIXME: relocation not yet working for coldfire, see below!
  */
-Xilinx_Spartan3_Slave_Serial_fns xilinx_fns = {
+xilinx_spartan3_slave_serial_fns xilinx_fns = {
        xilinx_pre_config_fn,
-       xilinx_pgm_fn,
-       xilinx_clk_fn,
-       xilinx_init_fn,
-       xilinx_done_fn,
-       xilinx_wr_fn,
+       xilinx_pgm_config_fn,
+       xilinx_clk_config_fn,
+       xilinx_init_config_fn,
+       xilinx_done_config_fn,
+       xilinx_wr_config_fn,
        0,
-       xilinx_fastwr_fn
+       xilinx_fastwr_config_fn
 };
 
-Xilinx_desc xilinx_fpga[CONFIG_FPGA_COUNT] = {
-       {Xilinx_Spartan3,
+xilinx_desc xilinx_fpga[CONFIG_FPGA_COUNT] = {
+       {xilinx_spartan3,
         slave_serial,
         XILINX_XC3S4000_SIZE,
         (void *)&xilinx_fns,
-        0}
+        0,
+        &spartan3_op}
 };
 
 /* Initialize the fpga.  Return 1 on success, 0 on failure. */
@@ -395,12 +396,12 @@ int astro5373l_xilinx_load(void)
                 * so set stuff here instead of static initialisation:
                 */
                xilinx_fns.pre = xilinx_pre_config_fn;
-               xilinx_fns.pgm = xilinx_pgm_fn;
-               xilinx_fns.clk = xilinx_clk_fn;
-               xilinx_fns.init = xilinx_init_fn;
-               xilinx_fns.done = xilinx_done_fn;
-               xilinx_fns.wr = xilinx_wr_fn;
-               xilinx_fns.bwr = xilinx_fastwr_fn;
+               xilinx_fns.pgm = xilinx_pgm_config_fn;
+               xilinx_fns.clk = xilinx_clk_config_fn;
+               xilinx_fns.init = xilinx_init_config_fn;
+               xilinx_fns.done = xilinx_done_config_fn;
+               xilinx_fns.wr = xilinx_wr_config_fn;
+               xilinx_fns.bwr = xilinx_fastwr_config_fn;
                xilinx_fpga[i].iface_fns = (void *)&xilinx_fns;
                fpga_add(fpga_xilinx, &xilinx_fpga[i]);
        }
index b7e2efd2fce14bee705c3630ba9ee1a1347f1407..57881164c5a72682145df07e170128dfcefd41b4 100644 (file)
@@ -16,6 +16,7 @@
 #include <asm/arch/clk.h>
 #include <lcd.h>
 #include <atmel_lcdc.h>
+#include <atmel_mci.h>
 #if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB)
 #include <net.h>
 #endif
@@ -217,6 +218,15 @@ void lcd_show_board_info(void)
 #endif /* CONFIG_LCD_INFO */
 #endif
 
+#ifdef CONFIG_GENERIC_ATMEL_MCI
+int board_mmc_init(bd_t *bis)
+{
+       at91_mci_hw_init();
+
+       return atmel_mci_init((void *)ATMEL_BASE_MCI0);
+}
+#endif
+
 int board_early_init_f(void)
 {
        at91_seriald_hw_init();
index 39f2dc6475d13a98dfcd63707965602d4033ae4e..92ed4e81d3902ea5b8c53107e6ac833b5693c967 100644 (file)
@@ -17,6 +17,9 @@
 #include <atmel_mci.h>
 #include <net.h>
 #include <netdev.h>
+#include <spl.h>
+#include <asm/arch/atmel_mpddrc.h>
+#include <asm/arch/at91_wdt.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -128,3 +131,87 @@ int board_mmc_init(bd_t *bis)
        return 0;
 }
 #endif
+
+/* SPL */
+#ifdef CONFIG_SPL_BUILD
+void spl_board_init(void)
+{
+#ifdef CONFIG_SYS_USE_MMC
+       sama5d3_xplained_mci0_hw_init();
+#elif CONFIG_SYS_USE_NANDFLASH
+       sama5d3_xplained_nand_hw_init();
+#endif
+}
+
+static void ddr2_conf(struct atmel_mpddr *ddr2)
+{
+       ddr2->md = (ATMEL_MPDDRC_MD_DBW_32_BITS | ATMEL_MPDDRC_MD_DDR2_SDRAM);
+
+       ddr2->cr = (ATMEL_MPDDRC_CR_NC_COL_10 |
+                   ATMEL_MPDDRC_CR_NR_ROW_14 |
+                   ATMEL_MPDDRC_CR_CAS_DDR_CAS3 |
+                   ATMEL_MPDDRC_CR_ENRDM_ON |
+                   ATMEL_MPDDRC_CR_NB_8BANKS |
+                   ATMEL_MPDDRC_CR_NDQS_DISABLED |
+                   ATMEL_MPDDRC_CR_DECOD_INTERLEAVED |
+                   ATMEL_MPDDRC_CR_UNAL_SUPPORTED);
+       /*
+        * As the DDR2-SDRAm device requires a refresh time is 7.8125us
+        * when DDR run at 133MHz, so it needs (7.8125us * 133MHz / 10^9) clocks
+        */
+       ddr2->rtr = 0x411;
+
+       ddr2->tpr0 = (6 << ATMEL_MPDDRC_TPR0_TRAS_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR0_TRCD_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR0_TWR_OFFSET |
+                     8 << ATMEL_MPDDRC_TPR0_TRC_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR0_TRP_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR0_TRRD_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR0_TWTR_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR0_TMRD_OFFSET);
+
+       ddr2->tpr1 = (2 << ATMEL_MPDDRC_TPR1_TXP_OFFSET |
+                     200 << ATMEL_MPDDRC_TPR1_TXSRD_OFFSET |
+                     28 << ATMEL_MPDDRC_TPR1_TXSNR_OFFSET |
+                     26 << ATMEL_MPDDRC_TPR1_TRFC_OFFSET);
+
+       ddr2->tpr2 = (7 << ATMEL_MPDDRC_TPR2_TFAW_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR2_TRTP_OFFSET |
+                     2 << ATMEL_MPDDRC_TPR2_TRPA_OFFSET |
+                     7 << ATMEL_MPDDRC_TPR2_TXARDS_OFFSET |
+                     8 << ATMEL_MPDDRC_TPR2_TXARD_OFFSET);
+}
+
+void mem_init(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       struct atmel_mpddr ddr2;
+
+       ddr2_conf(&ddr2);
+
+       /* enable MPDDR clock */
+       at91_periph_clk_enable(ATMEL_ID_MPDDRC);
+       writel(0x4, &pmc->scer);
+
+       /* DDRAM2 Controller initialize */
+       ddr2_init(ATMEL_BASE_DDRCS, &ddr2);
+}
+
+void at91_pmc_init(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+       u32 tmp;
+
+       tmp = AT91_PMC_PLLAR_29 |
+             AT91_PMC_PLLXR_PLLCOUNT(0x3f) |
+             AT91_PMC_PLLXR_MUL(43) |
+             AT91_PMC_PLLXR_DIV(1);
+       at91_plla_init(tmp);
+
+       writel(0x3 << 8, &pmc->pllicpr);
+
+       tmp = AT91_PMC_MCKR_MDIV_4 |
+             AT91_PMC_MCKR_CSS_PLLA;
+       at91_mck_init(tmp);
+}
+#endif
index 04e0574658ac2cf4c35527c627c0aafd90b6a30d..aa108ca15390bf6628fb7ef520c0bd200520c2ea 100644 (file)
@@ -191,7 +191,7 @@ int fpga_cs_fn(int assert_clk, int flush, int cookie)
        return assert_clk;
 }
 
-Xilinx_Spartan3_Slave_Parallel_fns balloon3_fpga_fns = {
+xilinx_spartan3_slave_parallel_fns balloon3_fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_init_fn,
@@ -207,7 +207,7 @@ Xilinx_Spartan3_Slave_Parallel_fns balloon3_fpga_fns = {
        fpga_post_config_fn,
 };
 
-Xilinx_desc fpga = XILINX_XC3S1000_DESC(slave_parallel,
+xilinx_desc fpga = XILINX_XC3S1000_DESC(slave_parallel,
                        (void *)&balloon3_fpga_fns, 0);
 
 /* Initialize the FPGA */
index de5b9ff0e7594dadcbfa933243cb1aec7f57a4fa..6be9b180159e53a815087c937acfa00f393b6f8e 100644 (file)
@@ -12,7 +12,6 @@
 #include <asm/blackfin.h>
 #include <asm/portmux.h>
 #include <asm/gpio.h>
-#include <asm/net.h>
 #include <net.h>
 #include <netdev.h>
 #include <miiphy.h>
@@ -33,7 +32,7 @@ int checkboard(void)
 static void board_init_enetaddr(uchar *mac_addr)
 {
        puts("Warning: Generating 'random' MAC address\n");
-       bfin_gen_rand_mac(mac_addr);
+       eth_random_addr(mac_addr);
        eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
index 09a2353e7d93f26f730e5691507941ca62c22f93..3a94a572eb24f6f2909808e44ab03b93a7b8136e 100644 (file)
@@ -13,7 +13,6 @@
 #include <netdev.h>
 #include <spi.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include <asm/portmux.h>
 #include <asm/mach-common/bits/otp.h>
 #include <asm/sdh.h>
@@ -48,7 +47,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
index 4695b1161a0d2624c9e660be5ff017731590f853..368d6be25fb7193dbbbc6e33fd9c66c23b883947 100644 (file)
@@ -12,7 +12,6 @@
 #include <net.h>
 #include <netdev.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include <asm/mach-common/bits/otp.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -45,7 +44,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
index 211cf24ac303fc889b760ca02a91a897cc2304ae..88e18690e031aec12ef451a0f352972113844e12 100644 (file)
@@ -13,7 +13,6 @@
 #include <netdev.h>
 #include <asm/blackfin.h>
 #include <asm/gpio.h>
-#include <asm/net.h>
 #include <asm/mach-common/bits/otp.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -47,7 +46,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
index 920429c12e69fb88aba5ba5bfe1d87f635646c45..ca61ef97b860768065ac6ecf8a50621ea148b8bf 100644 (file)
@@ -12,7 +12,6 @@
 #include <netdev.h>
 #include <net.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -27,7 +26,7 @@ int checkboard(void)
 static void board_init_enetaddr(uchar *mac_addr)
 {
        puts("Warning: Generating 'random' MAC address\n");
-       bfin_gen_rand_mac(mac_addr);
+       eth_random_addr(mac_addr);
        eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
index c5125288cbddcac21ff45820df4daaa67eb6241c..df0011026a63a52926cf826a5dff33a4602adc82 100644 (file)
@@ -12,7 +12,6 @@
 #include <netdev.h>
 #include <net.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -27,7 +26,7 @@ int checkboard(void)
 static void board_init_enetaddr(uchar *mac_addr)
 {
        puts("Warning: Generating 'random' MAC address\n");
-       bfin_gen_rand_mac(mac_addr);
+       eth_random_addr(mac_addr);
        eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
index 04d38910b3f14cb8b75b6b1d90259b5fd3174989..725296a41636c6524570f4b378fa3bbd7d96b2d4 100644 (file)
@@ -12,7 +12,6 @@
 #include <netdev.h>
 #include <net.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -27,7 +26,7 @@ int checkboard(void)
 static void board_init_enetaddr(uchar *mac_addr)
 {
        puts("Warning: Generating 'random' MAC address\n");
-       bfin_gen_rand_mac(mac_addr);
+       eth_random_addr(mac_addr);
        eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
index 5fdf8379c08f02818e5356608fd145d5c4f36340..32045a9e47cb44651062a9041a6038d4a5c4aaca 100644 (file)
@@ -13,7 +13,6 @@
 #include <config.h>
 #include <command.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include <net.h>
 #include <asm/mach-common/bits/bootrom.h>
 #include <netdev.h>
@@ -48,7 +47,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
index d9c05b07bfae83466513735cbec95c7f949de7a5..84294db859fac0fe7bc09bb245d7a51938f6ce3a 100644 (file)
 #include <asm/imx-common/mxc_i2c.h>
 #include <asm/imx-common/sata.h>
 #include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <micrel.h>
 #include <miiphy.h>
 #include <netdev.h>
-#include <linux/fb.h>
-#include <ipu_pixfmt.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/arch/mxc_hdmi.h>
 #include <i2c.h>
@@ -331,7 +330,7 @@ int board_mmc_init(bd_t *bis)
 #ifdef CONFIG_MXC_SPI
 iomux_v3_cfg_t const ecspi1_pads[] = {
        /* SS1 */
-       MX6_PAD_EIM_D19__GPIO3_IO19   | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_EIM_D19__GPIO3_IO19  | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_EIM_D17__ECSPI1_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
        MX6_PAD_EIM_D18__ECSPI1_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
        MX6_PAD_EIM_D16__ECSPI1_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
@@ -446,22 +445,6 @@ static iomux_v3_cfg_t const rgb_pads[] = {
        MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23,
 };
 
-struct display_info_t {
-       int     bus;
-       int     addr;
-       int     pixfmt;
-       int     (*detect)(struct display_info_t const *dev);
-       void    (*enable)(struct display_info_t const *dev);
-       struct  fb_videomode mode;
-};
-
-
-static int detect_hdmi(struct display_info_t const *dev)
-{
-       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
-       return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
-}
-
 static void do_enable_hdmi(struct display_info_t const *dev)
 {
        imx_enable_hdmi_phy();
@@ -492,7 +475,7 @@ static void enable_rgb(struct display_info_t const *dev)
        gpio_direction_output(RGB_BACKLIGHT_GP, 1);
 }
 
-static struct display_info_t const displays[] = {{
+struct display_info_t const displays[] = {{
        .bus    = -1,
        .addr   = 0,
        .pixfmt = IPU_PIX_FMT_RGB24,
@@ -573,51 +556,7 @@ static struct display_info_t const displays[] = {{
                .sync           = 0,
                .vmode          = FB_VMODE_NONINTERLACED
 } } };
-
-int board_video_skip(void)
-{
-       int i;
-       int ret;
-       char const *panel = getenv("panel");
-       if (!panel) {
-               for (i = 0; i < ARRAY_SIZE(displays); i++) {
-                       struct display_info_t const *dev = displays+i;
-                       if (dev->detect(dev)) {
-                               panel = dev->mode.name;
-                               printf("auto-detected panel %s\n", panel);
-                               break;
-                       }
-               }
-               if (!panel) {
-                       panel = displays[0].mode.name;
-                       printf("No panel detected: default to %s\n", panel);
-                       i = 0;
-               }
-       } else {
-               for (i = 0; i < ARRAY_SIZE(displays); i++) {
-                       if (!strcmp(panel, displays[i].mode.name))
-                               break;
-               }
-       }
-       if (i < ARRAY_SIZE(displays)) {
-               ret = ipuv3_fb_init(&displays[i].mode, 0,
-                                   displays[i].pixfmt);
-               if (!ret) {
-                       displays[i].enable(displays+i);
-                       printf("Display: %s (%ux%u)\n",
-                              displays[i].mode.name,
-                              displays[i].mode.xres,
-                              displays[i].mode.yres);
-               } else {
-                       printf("LCD %s cannot be configured: %d\n",
-                              displays[i].mode.name, ret);
-               }
-       } else {
-               printf("unsupported panel %s\n", panel);
-               ret = -EINVAL;
-       }
-       return (0 != ret);
-}
+size_t display_count = ARRAY_SIZE(displays);
 
 static void setup_display(void)
 {
index eca1683a6fef2dd65ceb8ac576f1a5ea02322f54..659a124b22750fda1fb4b02df5d74defaf4012e6 100644 (file)
@@ -231,7 +231,7 @@ static void rescue_mode(void)
        printf("Entering rescue mode..\n");
 #ifdef CONFIG_RANDOM_MACADDR
        if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
-               eth_random_enetaddr(enetaddr);
+               eth_random_addr(enetaddr);
                if (eth_setenv_enetaddr("ethaddr", enetaddr)) {
                        printf("Failed to set ethernet address\n");
                                set_led(LED_ALARM_BLINKING);
index a5f70a4f8392f9a5ff9ee83df497619bc825645a..1533eb9c7a878378b7b4576726d1f178ce13b385 100644 (file)
@@ -11,7 +11,6 @@
 #include <net.h>
 #include <netdev.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include <asm/mach-common/bits/otp.h>
 #include "../cm-bf537e/gpio_cfi_flash.h"
 
@@ -46,7 +45,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
index 8daf3ad06e875fe64ecab3fa50fb01dfff7d6de0..e79f90f95bceeee4177f4f57436405da50a79653 100644 (file)
@@ -12,7 +12,6 @@
 #include <net.h>
 #include <netdev.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include "gpio_cfi_flash.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -32,7 +31,7 @@ static void board_init_enetaddr(char *var)
                return;
 
        printf("Warning: %s: generating 'random' MAC address\n", var);
-       bfin_gen_rand_mac(enetaddr);
+       eth_random_addr(enetaddr);
        eth_setenv_enetaddr(var, enetaddr);
 }
 
index 5941b5fcbe00a85a7b9df65ef0c10eab1f057d15..632cbda5c06f3c6706591dd5dc991df3cc1433ca 100644 (file)
@@ -12,7 +12,6 @@
 #include <net.h>
 #include <netdev.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include "../cm-bf537e/gpio_cfi_flash.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -32,7 +31,7 @@ static void board_init_enetaddr(char *var)
                return;
 
        printf("Warning: %s: generating 'random' MAC address\n", var);
-       bfin_gen_rand_mac(enetaddr);
+       eth_random_addr(enetaddr);
        eth_setenv_enetaddr(var, enetaddr);
 }
 
diff --git a/board/compulab/cm_t54/Makefile b/board/compulab/cm_t54/Makefile
new file mode 100644 (file)
index 0000000..298ddd2
--- /dev/null
@@ -0,0 +1,10 @@
+#
+# Copyright (C) 2014 Compulab Ltd - http://compulab.co.il/
+#
+# Author: Dmitry Lifshitz <lifshitz@compulab.co.il>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += cm_t54.o
+obj-$(CONFIG_SPL_BUILD) += mux.o spl.o
diff --git a/board/compulab/cm_t54/cm_t54.c b/board/compulab/cm_t54/cm_t54.c
new file mode 100644 (file)
index 0000000..fadfddc
--- /dev/null
@@ -0,0 +1,262 @@
+/*
+ * Board functions for Compulab CM-T54 board
+ *
+ * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
+ *
+ * Author: Dmitry Lifshitz <lifshitz@compulab.co.il>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <fdt_support.h>
+#include <usb.h>
+#include <mmc.h>
+#include <palmas.h>
+#include <spl.h>
+
+#include <asm/gpio.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/ehci.h>
+#include <asm/ehci-omap.h>
+
+#include "../common/eeprom.h"
+
+#define DIE_ID_REG_BASE                (OMAP54XX_L4_CORE_BASE + 0x2000)
+#define DIE_ID_REG_OFFSET      0x200
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#if !defined(CONFIG_SPL_BUILD)
+inline void set_muxconf_regs_essential(void){};
+#endif
+
+const struct omap_sysinfo sysinfo = {
+       "Board: CM-T54\n"
+};
+
+/*
+ * Routine: board_init
+ * Description: hardware init.
+ */
+int board_init(void)
+{
+       gd->bd->bi_boot_params = (CONFIG_SYS_SDRAM_BASE + 0x100); /* boot param addr */
+
+       return 0;
+}
+
+/*
+ * Routine: cm_t54_palmas_regulator_set
+ * Description:  select voltage and turn on/off Palmas PMIC regulator.
+ */
+static int cm_t54_palmas_regulator_set(u8 vreg, u8 vval, u8 creg, u8 cval)
+{
+       int err;
+
+       /* Setup voltage */
+       err = palmas_i2c_write_u8(TWL603X_CHIP_P1, vreg, vval);
+       if (err) {
+               printf("cm_t54: could not set regulator 0x%02x voltage : %d\n",
+                      vreg, err);
+               return err;
+       }
+
+       /* Turn on/off regulator */
+       err = palmas_i2c_write_u8(TWL603X_CHIP_P1, creg, cval);
+       if (err) {
+               printf("cm_t54: could not turn on/off regulator 0x%02x : %d\n",
+                      creg, err);
+               return err;
+       }
+
+       return 0;
+}
+
+/*
+ * Routine: mmc_get_env_part
+ * Description:  setup environment storage device partition.
+ */
+#ifdef CONFIG_SYS_MMC_ENV_PART
+uint mmc_get_env_part(struct mmc *mmc)
+{
+       u32 bootmode = gd->arch.omap_boot_params.omap_bootmode;
+       uint bootpart = CONFIG_SYS_MMC_ENV_PART;
+
+       /*
+        * If booted from eMMC boot partition then force eMMC
+        * FIRST boot partition to be env storage
+        */
+       if (bootmode == BOOT_DEVICE_MMC2_2)
+               bootpart = 1;
+
+       return bootpart;
+}
+#endif
+
+#if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
+#define SB_T54_CD_GPIO 228
+#define SB_T54_WP_GPIO 229
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       return !gpio_get_value(SB_T54_CD_GPIO);
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       int ret0, ret1;
+
+       ret0 = omap_mmc_init(0, 0, 0, -1, SB_T54_WP_GPIO);
+       if (ret0)
+               printf("cm_t54: failed to initialize mmc0\n");
+
+       ret1 = omap_mmc_init(1, 0, 0, -1, -1);
+       if (ret1)
+               printf("cm_t54: failed to initialize mmc1\n");
+
+       if (ret0 && ret1)
+               return -1;
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_USB_HOST_ETHER
+
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       uint8_t enetaddr[6];
+
+       /* MAC addr */
+       if (eth_getenv_enetaddr("usbethaddr", enetaddr)) {
+               fdt_find_and_setprop(blob, "/smsc95xx@0", "mac-address",
+                                    enetaddr, 6, 1);
+       }
+}
+
+static void generate_mac_addr(uint8_t *enetaddr)
+{
+       int reg;
+
+       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.
+        */
+       enetaddr[0] = 0x02;
+       enetaddr[1] = readl(reg + 0x10) & 0xff;
+       enetaddr[2] = readl(reg + 0xC) & 0xff;
+       enetaddr[3] = readl(reg + 0x8) & 0xff;
+       enetaddr[4] = readl(reg) & 0xff;
+       enetaddr[5] = (readl(reg) >> 8) & 0xff;
+}
+
+/*
+ * Routine: handle_mac_address
+ * Description: prepare MAC address for on-board Ethernet.
+ */
+static int handle_mac_address(void)
+{
+       uint8_t enetaddr[6];
+       int ret;
+
+       ret = eth_getenv_enetaddr("usbethaddr", enetaddr);
+       if (ret)
+               return 0;
+
+       ret = cl_eeprom_read_mac_addr(enetaddr);
+       if (!ret || !is_valid_ether_addr(enetaddr))
+               generate_mac_addr(enetaddr);
+
+       if (!is_valid_ether_addr(enetaddr))
+               return -1;
+
+       return eth_setenv_enetaddr("usbethaddr", enetaddr);
+}
+
+int board_eth_init(bd_t *bis)
+{
+       return handle_mac_address();
+}
+#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 setup_host_clocks(bool enable)
+{
+       int usbhost_clk = OPTFCLKEN_HSIC60M_P3_CLK |
+                         OPTFCLKEN_HSIC480M_P3_CLK |
+                         OPTFCLKEN_HSIC60M_P2_CLK |
+                         OPTFCLKEN_HSIC480M_P2_CLK |
+                         OPTFCLKEN_UTMI_P3_CLK |
+                         OPTFCLKEN_UTMI_P2_CLK;
+
+       int usbtll_clk = OPTFCLKEN_USB_CH1_CLK_ENABLE |
+                        OPTFCLKEN_USB_CH2_CLK_ENABLE;
+
+       int usbhub_clk = CKOBUFFER_CLK_ENABLE_MASK;
+
+       if (enable) {
+               /* Enable port 2 and 3 clocks*/
+               setbits_le32((*prcm)->cm_l3init_hsusbhost_clkctrl, usbhost_clk);
+               /* Enable port 2 and 3 usb host ports tll clocks*/
+               setbits_le32((*prcm)->cm_l3init_hsusbtll_clkctrl, usbtll_clk);
+               /* Request FREF_XTAL_CLK clock for HSIC USB Hub */
+               setbits_le32((*ctrl)->control_ckobuffer, usbhub_clk);
+       } else {
+               clrbits_le32((*ctrl)->control_ckobuffer, usbhub_clk);
+               clrbits_le32((*prcm)->cm_l3init_hsusbtll_clkctrl, usbtll_clk);
+               clrbits_le32((*prcm)->cm_l3init_hsusbhost_clkctrl, usbhost_clk);
+       }
+}
+
+int ehci_hcd_init(int index, enum usb_init_type init,
+               struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+{
+       int ret;
+
+       /* VCC_3V3_ETH */
+       cm_t54_palmas_regulator_set(SMPS9_VOLTAGE, SMPS_VOLT_3V3, SMPS9_CTRL,
+                                   SMPS_MODE_SLP_AUTO | SMPS_MODE_ACT_AUTO);
+
+       setup_host_clocks(true);
+
+       ret = omap_ehci_hcd_init(index, &usbhs_bdata, hccr, hcor);
+       if (ret < 0)
+               printf("cm_t54: Failed to initialize ehci : %d\n", ret);
+
+       return ret;
+}
+
+int ehci_hcd_stop(void)
+{
+       int ret = omap_ehci_hcd_stop();
+
+       setup_host_clocks(false);
+
+       cm_t54_palmas_regulator_set(SMPS9_VOLTAGE, SMPS_VOLT_OFF,
+                                   SMPS9_CTRL, SMPS_MODE_SLP_AUTO);
+
+       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
+
diff --git a/board/compulab/cm_t54/mux.c b/board/compulab/cm_t54/mux.c
new file mode 100644 (file)
index 0000000..da35383
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Pinmux configuration for Compulab CM-T54 board
+ *
+ * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
+ *
+ * Author: Dmitry Lifshitz <lifshitz@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _CM_T54_MUX_DATA_H
+#define _CM_T54_MUX_DATA_H
+
+#include <asm/arch/mux_omap5.h>
+#include <asm/arch/sys_proto.h>
+
+const struct pad_conf_entry core_padconf_array_essential[] = {
+       /* MMC1 - SD CARD */
+       {SDCARD_CLK, (PTU | IEN | M0)},                 /* SDCARD_CLK */
+       {SDCARD_CMD, (PTU | IEN | M0)},                 /* SDCARD_CMD */
+       {SDCARD_DATA0, (PTU | IEN | M0)},               /* SDCARD_DATA0 */
+       {SDCARD_DATA1, (PTU | IEN | M0)},               /* SDCARD_DATA1 */
+       {SDCARD_DATA2, (PTU | IEN | M0)},               /* SDCARD_DATA2 */
+       {SDCARD_DATA3, (PTU | IEN | M0)},               /* SDCARD_DATA3 */
+
+       /* SD CARD CD and WP GPIOs*/
+       {TIMER5_PWM_EVT, (PTU | IEN | M6)},             /* GPIO8_228 */
+       {TIMER6_PWM_EVT, (PTU | IEN | M6)},             /* GPIO8_229 */
+
+       /* MMC2 - eMMC */
+       {EMMC_CLK, (PTU | IEN | M0)},                   /* EMMC_CLK */
+       {EMMC_CMD, (PTU | IEN | M0)},                   /* EMMC_CMD */
+       {EMMC_DATA0, (PTU | IEN | M0)},                 /* EMMC_DATA0 */
+       {EMMC_DATA1, (PTU | IEN | M0)},                 /* EMMC_DATA1 */
+       {EMMC_DATA2, (PTU | IEN | M0)},                 /* EMMC_DATA2 */
+       {EMMC_DATA3, (PTU | IEN | M0)},                 /* EMMC_DATA3 */
+       {EMMC_DATA4, (PTU | IEN | M0)},                 /* EMMC_DATA4 */
+       {EMMC_DATA5, (PTU | IEN | M0)},                 /* EMMC_DATA5 */
+       {EMMC_DATA6, (PTU | IEN | M0)},                 /* EMMC_DATA6 */
+       {EMMC_DATA7, (PTU | IEN | M0)},                 /* EMMC_DATA7 */
+
+       /* UART4 */
+       {I2C5_SCL, (PTU | IEN | M2)},                   /* UART4_RX */
+       {I2C5_SDA, (M2)},                               /* UART4_TX */
+
+       /* Led */
+       {HSI2_CAFLAG, (PTU | M6)},                      /* GPIO3_80 */
+
+       /* I2C1 */
+       {I2C1_PMIC_SCL, (PTU | IEN | M0)},              /* I2C1_PMIC_SCL */
+       {I2C1_PMIC_SDA, (PTU | IEN | M0)},              /* I2C1_PMIC_SDA */
+
+       /* USBB2, USBB3 */
+       {USBB2_HSIC_STROBE, (PTU | IEN | M0)},          /* USBB2_HSIC_STROBE */
+       {USBB2_HSIC_DATA, (PTU | IEN | M0)},            /* USBB2_HSIC_DATA */
+       {USBB3_HSIC_STROBE, (PTU | IEN | M0)},          /* USBB3_HSIC_STROBE */
+       {USBB3_HSIC_DATA, (PTU | IEN | M0)},            /* USBB3_HSIC_DATA */
+
+       /* USB Hub and USB Eth reset GPIOs */
+       {HSI2_CAREADY, (PTD | M6)},                     /* GPIO3_76 */
+       {HSI2_ACDATA, (PTD | M6)},                      /* GPIO3_83 */
+
+       /* I2C4 */
+       {I2C4_SCL, (PTU | IEN | M0)},                   /* I2C4_SCL  */
+       {I2C4_SDA, (PTU | IEN | M0)},                   /* I2C4_SDA  */
+};
+
+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 */
+
+       /* USB Hub clock */
+       {FREF_CLK1_OUT, (PTD | IEN | M0)},              /* FREF_CLK1_OUT  */
+};
+
+/*
+ * Routine: set_muxconf_regs_essential
+ * Description: setup board pinmux configuration.
+ */
+void set_muxconf_regs_essential(void)
+{
+       do_set_mux((*ctrl)->control_padconf_core_base,
+                  core_padconf_array_essential,
+                  sizeof(core_padconf_array_essential) /
+                  sizeof(struct pad_conf_entry));
+
+       do_set_mux((*ctrl)->control_padconf_wkup_base,
+                  wkup_padconf_array_essential,
+                  sizeof(wkup_padconf_array_essential) /
+                  sizeof(struct pad_conf_entry));
+}
+
+#endif /* _CM_T54_MUX_DATA_H */
diff --git a/board/compulab/cm_t54/spl.c b/board/compulab/cm_t54/spl.c
new file mode 100644 (file)
index 0000000..5c7b2c8
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * SPL specific code for Compulab CM-T54 board
+ *
+ * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
+ *
+ * Author: Dmitry Lifshitz <lifshitz@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/emif.h>
+
+const struct emif_regs emif_regs_ddr3_532_mhz_cm_t54 = {
+#if defined(CONFIG_DRAM_1G) || defined(CONFIG_DRAM_512M)
+       .sdram_config_init              = 0x618522B2,
+       .sdram_config                   = 0x618522B2,
+#elif defined(CONFIG_DRAM_2G)
+       .sdram_config_init              = 0x618522BA,
+       .sdram_config                   = 0x618522BA,
+#endif
+       .sdram_config2                  = 0x0,
+       .ref_ctrl                       = 0x00001040,
+       .sdram_tim1                     = 0xEEEF36F3,
+       .sdram_tim2                     = 0x348F7FDA,
+       .sdram_tim3                     = 0x027F88A8,
+       .read_idle_ctrl                 = 0x00050000,
+       .zq_config                      = 0x1007190B,
+       .temp_alert_config              = 0x00000000,
+
+       .emif_ddr_phy_ctlr_1_init       = 0x0030400B,
+       .emif_ddr_phy_ctlr_1            = 0x0034400B,
+       .emif_ddr_ext_phy_ctrl_1        = 0x04040100,
+       .emif_ddr_ext_phy_ctrl_2        = 0x00000000,
+       .emif_ddr_ext_phy_ctrl_3        = 0x00000000,
+       .emif_ddr_ext_phy_ctrl_4        = 0x00000000,
+       .emif_ddr_ext_phy_ctrl_5        = 0x4350D435,
+       .emif_rd_wr_lvl_rmp_win         = 0x00000000,
+       .emif_rd_wr_lvl_rmp_ctl         = 0x80000000,
+       .emif_rd_wr_lvl_ctl             = 0x00000000,
+       .emif_rd_wr_exec_thresh         = 0x40000305,
+};
+
+const struct dmm_lisa_map_regs lisa_map_cm_t54 = {
+       .dmm_lisa_map_0 = 0x0,
+       .dmm_lisa_map_1 = 0x0,
+
+#ifdef CONFIG_DRAM_2G
+       .dmm_lisa_map_2 = 0x80740300,
+#elif defined(CONFIG_DRAM_1G)
+       .dmm_lisa_map_2 = 0x80640300,
+#elif defined(CONFIG_DRAM_512M)
+       .dmm_lisa_map_2 = 0x80500100,
+#endif
+       .dmm_lisa_map_3 = 0x00000000,
+       .is_ma_present  = 0x1,
+};
+
+void emif_get_reg_dump(u32 emif_nr, const struct emif_regs **regs)
+{
+       *regs = &emif_regs_ddr3_532_mhz_cm_t54;
+}
+
+void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
+{
+       *dmm_lisa_regs = &lisa_map_cm_t54;
+}
index 6d7d06815cdb8c8b770113c0e511f2597139b636..4044ac9d626185d584fc99726117d68aa3a1c0eb 100644 (file)
@@ -6,5 +6,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_SYS_I2C_OMAP34XX) += eeprom.o
+obj-$(CONFIG_SYS_I2C) += eeprom.o
 obj-$(CONFIG_LCD) += omap3_display.o
index 5aa3dbd295585bdd33d2b8871a58558023e43222..20fe3e19602dc427d0e550208e80815bd18d86b0 100644 (file)
 #include <common.h>
 #include <i2c.h>
 
+#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
+# define CONFIG_SYS_I2C_EEPROM_ADDR    0x50
+# define CONFIG_SYS_I2C_EEPROM_ADDR_LEN        1
+#endif
+
 #define EEPROM_LAYOUT_VER_OFFSET       44
 #define BOARD_SERIAL_OFFSET            20
 #define BOARD_SERIAL_OFFSET_LEGACY     8
index e87162930d8549a20c5c35ee87396f89dbd9eae0..85d5bf03d69171c81f57dcaee0e05f7af509399d 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef _EEPROM_
 #define _EEPROM_
 
-#ifdef CONFIG_SYS_I2C_OMAP34XX
+#ifdef CONFIG_SYS_I2C
 int cl_eeprom_read_mac_addr(uchar *buf);
 u32 cl_eeprom_get_board_rev(void);
 #else
index 5af55e95e4ea210756e053ae4b267d4f83e229c4..94b7076148c3a075fa22c11e6942e73de16e43d5 100644 (file)
@@ -4,7 +4,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include "config.h"    /* CONFIG_BOARDDIR */
+#include "config.h"
 
 #ifndef RESET_VECTOR_ADDRESS
 #define RESET_VECTOR_ADDRESS   0xfffffffc
index 4b3873bd4f36445e398d3ffc1213f39328375462..df721c9944aa8d8a871685c490c1c9b0634df3fb 100644 (file)
@@ -14,7 +14,6 @@
 #include <common.h>
 #include <config.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include <net.h>
 #include <netdev.h>
 #include <asm/gpio.h>
@@ -55,7 +54,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/embest/mx6boards/Makefile b/board/embest/mx6boards/Makefile
new file mode 100644 (file)
index 0000000..467fb50
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := mx6boards.o
diff --git a/board/embest/mx6boards/mx6boards.c b/board/embest/mx6boards/mx6boards.c
new file mode 100644 (file)
index 0000000..d06b57d
--- /dev/null
@@ -0,0 +1,601 @@
+/*
+ * Copyright (C) 2014 Eukréa Electromatique
+ * Author: Eric Bénard <eric@eukrea.com>
+ *         Fabio Estevam <fabio.estevam@freescale.com>
+ *         Jon Nettleton <jon.nettleton@gmail.com>
+ *
+ * based on sabresd.c which is :
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ * and on hummingboard.c which is :
+ * Copyright (C) 2013 SolidRun ltd.
+ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mx6-pins.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/mxc_i2c.h>
+#include <asm/imx-common/video.h>
+#include <i2c.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/arch/crm_regs.h>
+#include <linux/fb.h>
+#include <ipu_pixfmt.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm |                 \
+       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP |                   \
+       PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |                 \
+       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CLK_CTRL (PAD_CTL_SPEED_LOW |                \
+       PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST |                  \
+       PAD_CTL_HYS)
+
+#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
+
+#define ENET_PAD_CTRL_PD  (PAD_CTL_PUS_100K_DOWN |             \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
+
+#define ENET_PAD_CTRL_CLK  ((PAD_CTL_PUS_100K_UP & ~PAD_CTL_PKE) | \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
+
+#define I2C_PAD_CTRL   (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
+       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+
+#define SPI_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_SPEED_MED | \
+                     PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
+
+static int board_type = -1;
+#define BOARD_IS_MARSBOARD     0
+#define BOARD_IS_RIOTBOARD     1
+
+int dram_init(void)
+{
+       gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
+
+       return 0;
+}
+
+static iomux_v3_cfg_t const uart2_pads[] = {
+       MX6_PAD_EIM_D26__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_EIM_D27__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static void setup_iomux_uart(void)
+{
+       imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));
+}
+
+iomux_v3_cfg_t const enet_pads[] = {
+       MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       /* GPIO16 -> AR8035 25MHz */
+       MX6_PAD_GPIO_16__ENET_REF_CLK | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */
+       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL_CLK),
+       MX6_PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       /* AR8035 PHY Reset */
+       MX6_PAD_EIM_D31__GPIO3_IO31 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       /* AR8035 PHY Interrupt */
+       MX6_PAD_ENET_TX_EN__GPIO1_IO28 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+};
+
+static void setup_iomux_enet(void)
+{
+       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
+
+       /* Reset AR8035 PHY */
+       gpio_direction_output(IMX_GPIO_NR(3, 31) , 0);
+       mdelay(2);
+       gpio_set_value(IMX_GPIO_NR(3, 31), 1);
+}
+
+int mx6_rgmii_rework(struct phy_device *phydev)
+{
+       /* from linux/arch/arm/mach-imx/mach-imx6q.c :
+        * Ar803x phy SmartEEE feature cause link status generates glitch,
+        * which cause ethernet link down/up issue, so disable SmartEEE
+        */
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x805d);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4003);
+
+       return 0;
+}
+
+int board_phy_config(struct phy_device *phydev)
+{
+       mx6_rgmii_rework(phydev);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+
+       return 0;
+}
+
+iomux_v3_cfg_t const usdhc2_pads[] = {
+       MX6_PAD_SD2_CLK__SD2_CLK | MUX_PAD_CTRL(USDHC_PAD_CLK_CTRL),
+       MX6_PAD_SD2_CMD__SD2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT0__SD2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT1__SD2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT2__SD2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD2_DAT3__SD2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_GPIO_2__GPIO1_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL), /* WP */
+       MX6_PAD_GPIO_4__GPIO1_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+iomux_v3_cfg_t const usdhc3_pads[] = {
+       MX6_PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CLK_CTRL),
+       MX6_PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+iomux_v3_cfg_t const riotboard_usdhc3_pads[] = {
+       MX6_PAD_SD3_DAT4__GPIO7_IO01 | MUX_PAD_CTRL(NO_PAD_CTRL), /* WP */
+       MX6_PAD_SD3_DAT5__GPIO7_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+iomux_v3_cfg_t const usdhc4_pads[] = {
+       MX6_PAD_SD4_CLK__SD4_CLK | MUX_PAD_CTRL(USDHC_PAD_CLK_CTRL),
+       MX6_PAD_SD4_CMD__SD4_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT0__SD4_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT1__SD4_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT2__SD4_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD4_DAT3__SD4_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       /* eMMC RST */
+       MX6_PAD_NANDF_ALE__GPIO6_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg usdhc_cfg[3] = {
+       {USDHC2_BASE_ADDR},
+       {USDHC3_BASE_ADDR},
+       {USDHC4_BASE_ADDR},
+};
+
+#define USDHC2_CD_GPIO IMX_GPIO_NR(1, 4)
+#define USDHC3_CD_GPIO IMX_GPIO_NR(7, 0)
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       int ret = 0;
+
+       switch (cfg->esdhc_base) {
+       case USDHC2_BASE_ADDR:
+               ret = !gpio_get_value(USDHC2_CD_GPIO);
+               break;
+       case USDHC3_BASE_ADDR:
+               if (board_type == BOARD_IS_RIOTBOARD)
+                       ret = !gpio_get_value(USDHC3_CD_GPIO);
+               else if (board_type == BOARD_IS_MARSBOARD)
+                       ret = 1; /* eMMC/uSDHC3 is always present */
+               break;
+       case USDHC4_BASE_ADDR:
+               ret = 1; /* eMMC/uSDHC4 is always present */
+               break;
+       }
+
+       return ret;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       s32 status = 0;
+       int i;
+
+       /*
+        * According to the board_mmc_init() the following map is done:
+        * (U-boot device node)    (Physical Port)
+        * ** RiOTboard :
+        * mmc0                    SDCard slot (bottom)
+        * mmc1                    uSDCard slot (top)
+        * mmc2                    eMMC
+        * ** MarSBoard :
+        * mmc0                    uSDCard slot (bottom)
+        * mmc1                    eMMC
+        */
+       for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
+               switch (i) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+                       gpio_direction_input(USDHC2_CD_GPIO);
+                       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+                       usdhc_cfg[0].max_bus_width = 4;
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       if (board_type == BOARD_IS_RIOTBOARD) {
+                               imx_iomux_v3_setup_multiple_pads(
+                                       riotboard_usdhc3_pads,
+                                       ARRAY_SIZE(riotboard_usdhc3_pads));
+                               gpio_direction_input(USDHC3_CD_GPIO);
+                               gpio_direction_output(IMX_GPIO_NR(7, 8) , 0);
+                               udelay(250);
+                               gpio_set_value(IMX_GPIO_NR(7, 8), 1);
+                       }
+                       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+                       usdhc_cfg[1].max_bus_width = 4;
+                       break;
+               case 2:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+                       usdhc_cfg[2].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+                       usdhc_cfg[2].max_bus_width = 4;
+                       gpio_direction_output(IMX_GPIO_NR(6, 8) , 0);
+                       udelay(250);
+                       gpio_set_value(IMX_GPIO_NR(6, 8), 1);
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                              "(%d) then supported by the board (%d)\n",
+                              i + 1, CONFIG_SYS_FSL_USDHC_NUM);
+                       return status;
+               }
+
+               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+       }
+
+       return status;
+}
+#endif
+
+#ifdef CONFIG_MXC_SPI
+iomux_v3_cfg_t const ecspi1_pads[] = {
+       MX6_PAD_EIM_D16__ECSPI1_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_EIM_D17__ECSPI1_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_EIM_D18__ECSPI1_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_EIM_EB2__GPIO2_IO30 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void setup_spi(void)
+{
+       imx_iomux_v3_setup_multiple_pads(ecspi1_pads, ARRAY_SIZE(ecspi1_pads));
+}
+#endif
+
+struct i2c_pads_info i2c_pad_info1 = {
+       .scl = {
+               .i2c_mode = MX6_PAD_CSI0_DAT9__I2C1_SCL
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_CSI0_DAT9__GPIO5_IO27
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(5, 27)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_CSI0_DAT8__I2C1_SDA
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_CSI0_DAT8__GPIO5_IO26
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(5, 26)
+       }
+};
+
+struct i2c_pads_info i2c_pad_info2 = {
+       .scl = {
+               .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_KEY_COL3__GPIO4_IO12
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(4, 12)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(4, 13)
+       }
+};
+
+struct i2c_pads_info i2c_pad_info3 = {
+       .scl = {
+               .i2c_mode = MX6_PAD_GPIO_5__I2C3_SCL
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_GPIO_5__GPIO1_IO05
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(1, 5)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_GPIO_6__I2C3_SDA
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_GPIO_6__GPIO1_IO06
+                               | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(1, 6)
+       }
+};
+
+iomux_v3_cfg_t const tft_pads_riot[] = {
+       /* LCD_PWR_EN */
+       MX6_PAD_ENET_TXD1__GPIO1_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* TOUCH_INT */
+       MX6_PAD_NANDF_CS1__GPIO6_IO14 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* LED_PWR_EN */
+       MX6_PAD_NANDF_CS2__GPIO6_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* BL LEVEL */
+       MX6_PAD_SD1_CMD__GPIO1_IO18 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+iomux_v3_cfg_t const tft_pads_mars[] = {
+       /* LCD_PWR_EN */
+       MX6_PAD_ENET_TXD1__GPIO1_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* TOUCH_INT */
+       MX6_PAD_NANDF_CS1__GPIO6_IO14 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* LED_PWR_EN */
+       MX6_PAD_NANDF_CS2__GPIO6_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* BL LEVEL (PWM4) */
+       MX6_PAD_SD4_DAT2__GPIO2_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+#if defined(CONFIG_VIDEO_IPUV3)
+
+static void enable_lvds(struct display_info_t const *dev)
+{
+       struct iomuxc *iomux = (struct iomuxc *)
+                               IOMUXC_BASE_ADDR;
+       setbits_le32(&iomux->gpr[2],
+                    IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT);
+       /* set backlight level to ON */
+       if (board_type == BOARD_IS_RIOTBOARD)
+               gpio_direction_output(IMX_GPIO_NR(1, 18) , 1);
+       else if (board_type == BOARD_IS_MARSBOARD)
+               gpio_direction_output(IMX_GPIO_NR(2, 10) , 1);
+}
+
+static void disable_lvds(struct display_info_t const *dev)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       /* set backlight level to OFF */
+       if (board_type == BOARD_IS_RIOTBOARD)
+               gpio_direction_output(IMX_GPIO_NR(1, 18) , 0);
+       else if (board_type == BOARD_IS_MARSBOARD)
+               gpio_direction_output(IMX_GPIO_NR(2, 10) , 0);
+
+       clrbits_le32(&iomux->gpr[2],
+                    IOMUXC_GPR2_LVDS_CH0_MODE_MASK);
+}
+
+static void do_enable_hdmi(struct display_info_t const *dev)
+{
+       disable_lvds(dev);
+       imx_enable_hdmi_phy();
+}
+
+static int detect_i2c(struct display_info_t const *dev)
+{
+       return (0 == i2c_set_bus_num(dev->bus)) &&
+               (0 == i2c_probe(dev->addr));
+}
+
+struct display_info_t const displays[] = {{
+       .bus    = -1,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB24,
+       .detect = detect_hdmi,
+       .enable = do_enable_hdmi,
+       .mode   = {
+               .name           = "HDMI",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 220,
+               .right_margin   = 40,
+               .upper_margin   = 21,
+               .lower_margin   = 7,
+               .hsync_len      = 60,
+               .vsync_len      = 10,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} }, {
+       .bus    = 2,
+       .addr   = 0x1,
+       .pixfmt = IPU_PIX_FMT_LVDS666,
+       .detect = detect_i2c,
+       .enable = enable_lvds,
+       .mode   = {
+               .name           = "LCD8000-97C",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 100,
+               .right_margin   = 200,
+               .upper_margin   = 10,
+               .lower_margin   = 20,
+               .hsync_len      = 20,
+               .vsync_len      = 8,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} } };
+size_t display_count = ARRAY_SIZE(displays);
+
+static void setup_display(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       int reg;
+
+       enable_ipu_clock();
+       imx_setup_hdmi();
+
+       /* Turn on LDB0, IPU,IPU DI0 clocks */
+       setbits_le32(&mxc_ccm->CCGR3,
+                    MXC_CCM_CCGR3_LDB_DI0_MASK);
+
+       /* set LDB0 clk select to 011/011 */
+       clrsetbits_le32(&mxc_ccm->cs2cdr,
+                       MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK,
+                       (3 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
+
+       setbits_le32(&mxc_ccm->cscmr2,
+                    MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV);
+
+       setbits_le32(&mxc_ccm->chsccdr,
+                    (CHSCCDR_CLK_SEL_LDB_DI0
+                    << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET));
+
+       reg = IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES
+            | IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW
+            | IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG
+            | IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT
+            | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
+            | IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT
+            | IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED
+            | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
+       writel(reg, &iomux->gpr[2]);
+
+       clrsetbits_le32(&iomux->gpr[3],
+                       IOMUXC_GPR3_LVDS0_MUX_CTL_MASK |
+                       IOMUXC_GPR3_HDMI_MUX_CTL_MASK,
+                       IOMUXC_GPR3_MUX_SRC_IPU1_DI0
+                       << IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
+}
+#endif /* CONFIG_VIDEO_IPUV3 */
+
+/*
+ * Do not overwrite the console
+ * Use always serial for U-Boot console
+ */
+int overwrite_console(void)
+{
+       return 1;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       setup_iomux_enet();
+
+       return cpu_eth_init(bis);
+}
+
+int board_early_init_f(void)
+{
+       u32 cputype = cpu_type(get_cpu_rev());
+
+       switch (cputype) {
+       case MXC_CPU_MX6SOLO:
+               board_type = BOARD_IS_RIOTBOARD;
+               break;
+       case MXC_CPU_MX6D:
+               board_type = BOARD_IS_MARSBOARD;
+               break;
+       }
+
+       setup_iomux_uart();
+
+       if (board_type == BOARD_IS_RIOTBOARD)
+               imx_iomux_v3_setup_multiple_pads(
+                       tft_pads_riot, ARRAY_SIZE(tft_pads_riot));
+       else if (board_type == BOARD_IS_MARSBOARD)
+               imx_iomux_v3_setup_multiple_pads(
+                       tft_pads_mars, ARRAY_SIZE(tft_pads_mars));
+#if defined(CONFIG_VIDEO_IPUV3)
+       /* power ON LCD */
+       gpio_direction_output(IMX_GPIO_NR(1, 29) , 1);
+       /* touch interrupt is an input */
+       gpio_direction_input(IMX_GPIO_NR(6, 14));
+       /* power ON backlight */
+       gpio_direction_output(IMX_GPIO_NR(6, 15) , 1);
+       /* set backlight level to off */
+       if (board_type == BOARD_IS_RIOTBOARD)
+               gpio_direction_output(IMX_GPIO_NR(1, 18) , 0);
+       else if (board_type == BOARD_IS_MARSBOARD)
+               gpio_direction_output(IMX_GPIO_NR(2, 10) , 0);
+       setup_display();
+#endif
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+       /* i2c1 : PMIC, Audio codec on RiOT, Expansion connector on MarS */
+       setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
+       /* i2c2 : HDMI EDID */
+       setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
+       /* i2c3 : LVDS, Expansion connector */
+       setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info3);
+#ifdef CONFIG_MXC_SPI
+       setup_spi();
+#endif
+       return 0;
+}
+
+#ifdef CONFIG_CMD_BMODE
+static const struct boot_mode riotboard_boot_modes[] = {
+       {"sd2",  MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
+       {"sd3",  MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
+       {"emmc", MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00)},
+       {NULL,   0},
+};
+static const struct boot_mode marsboard_boot_modes[] = {
+       {"sd2",  MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
+       {"emmc", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
+       {NULL,   0},
+};
+#endif
+
+int board_late_init(void)
+{
+#ifdef CONFIG_CMD_BMODE
+       if (board_type == BOARD_IS_RIOTBOARD)
+               add_board_boot_modes(riotboard_boot_modes);
+       else if (board_type == BOARD_IS_RIOTBOARD)
+               add_board_boot_modes(marsboard_boot_modes);
+#endif
+
+       return 0;
+}
+
+int checkboard(void)
+{
+       puts("Board: ");
+       if (board_type == BOARD_IS_MARSBOARD)
+               puts("MarSBoard\n");
+       else if (board_type == BOARD_IS_RIOTBOARD)
+               puts("RIoTboard\n");
+       else
+               printf("unknown - cputype : %02x\n", cpu_type(get_cpu_rev()));
+
+       return 0;
+}
index b7b62dd94dbbb1f1cff84a70ce18fc8d5ad46a9d..f876da855b130025d6ab7040c66d8de5e8e4547a 100644 (file)
@@ -20,7 +20,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define USE_SP_CODE
 
 #ifdef USE_SP_CODE
-Xilinx_Spartan3_Slave_Parallel_fns pmc440_fpga_fns = {
+xilinx_spartan3_slave_parallel_fns pmc440_fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_init_fn,
@@ -36,7 +36,7 @@ Xilinx_Spartan3_Slave_Parallel_fns pmc440_fpga_fns = {
        fpga_post_config_fn,
 };
 #else
-Xilinx_Spartan3_Slave_Serial_fns pmc440_fpga_fns = {
+xilinx_spartan3_slave_serial_fns pmc440_fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_clk_fn,
@@ -47,7 +47,7 @@ Xilinx_Spartan3_Slave_Serial_fns pmc440_fpga_fns = {
 };
 #endif
 
-Xilinx_Spartan2_Slave_Serial_fns ngcc_fpga_fns = {
+xilinx_spartan2_slave_serial_fns ngcc_fpga_fns = {
        ngcc_fpga_pre_config_fn,
        ngcc_fpga_pgm_fn,
        ngcc_fpga_clk_fn,
@@ -57,7 +57,7 @@ Xilinx_Spartan2_Slave_Serial_fns ngcc_fpga_fns = {
        ngcc_fpga_post_config_fn
 };
 
-Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
+xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
        XILINX_XC3S1200E_DESC(
 #ifdef USE_SP_CODE
                slave_parallel,
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds
deleted file mode 100644 (file)
index bd801cc..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * (C) Copyright 2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
-  /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  }
-  .plt : { *(.plt) }
-  .text      :
-  {
-    /* WARNING - the following is hand-optimized to fit within */
-    /* the sector layout of our flash chips!   XXX FIXME XXX   */
-
-    arch/powerpc/cpu/ppc4xx/start.o    (.text)
-
-    /* Align to next NAND block */
-    . = ALIGN(0x4000);
-    common/env_embedded.o  (.ppcenv)
-    /* Keep some space here for redundant env and potential bad env blocks */
-    . = ALIGN(0x10000);
-
-    *(.text)
-    *(.got1)
-  }
-  _etext = .;
-  PROVIDE (etext = .);
-  .rodata    :
-  {
-    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
-  }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
-
-  /* Read-write section, merged into data segment: */
-  . = (. + 0x00FF) & 0xFFFFFF00;
-  _erotext = .;
-  PROVIDE (erotext = .);
-  .reloc   :
-  {
-    *(.got)
-    _GOT2_TABLE_ = .;
-    *(.got2)
-    _FIXUP_TABLE_ = .;
-    *(.fixup)
-  }
-  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
-  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
-
-  .data    :
-  {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
-  }
-  _edata  =  .;
-  PROVIDE (edata = .);
-
-  . = .;
-
-  .u_boot_list : {
-               KEEP(*(SORT(.u_boot_list*)));
-  }
-
-  . = .;
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  . = ALIGN(256);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(256);
-  __init_end = .;
-
-  __bss_start = .;
-  .bss (NOLOAD)       :
-  {
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-   . = ALIGN(4);
-  }
-
-  __bss_end = . ;
-  PROVIDE (end = .);
-}
index d9c88a074f88c923a3c5ef7bbd164aa4391de870..b2d53781438d35a296990068e90085bf27ef8ce2 100644 (file)
@@ -23,6 +23,7 @@
 #include "../common/qixis.h"
 #include "../common/vsc3316_3308.h"
 #include "../common/idt8t49n222a_serdes_clk.h"
+#include "../common/zm7300.h"
 #include "b4860qds.h"
 #include "b4860qds_qixis.h"
 #include "b4860qds_crossbar_con.h"
@@ -94,6 +95,238 @@ int select_i2c_ch_pca(u8 ch)
        return 0;
 }
 
+/*
+ * read_voltage from sensor on I2C bus
+ * We use average of 4 readings, waiting for 532us befor another reading
+ */
+#define WAIT_FOR_ADC   532     /* wait for 532 microseconds for ADC */
+#define NUM_READINGS   4       /* prefer to be power of 2 for efficiency */
+
+static inline int read_voltage(void)
+{
+       int i, ret, voltage_read = 0;
+       u16 vol_mon;
+
+       for (i = 0; i < NUM_READINGS; i++) {
+               ret = i2c_read(I2C_VOL_MONITOR_ADDR,
+                       I2C_VOL_MONITOR_BUS_V_OFFSET, 1, (void *)&vol_mon, 2);
+               if (ret) {
+                       printf("VID: failed to read core voltage\n");
+                       return ret;
+               }
+               if (vol_mon & I2C_VOL_MONITOR_BUS_V_OVF) {
+                       printf("VID: Core voltage sensor error\n");
+                       return -1;
+               }
+               debug("VID: bus voltage reads 0x%04x\n", vol_mon);
+               /* LSB = 4mv */
+               voltage_read += (vol_mon >> I2C_VOL_MONITOR_BUS_V_SHIFT) * 4;
+               udelay(WAIT_FOR_ADC);
+       }
+       /* calculate the average */
+       voltage_read /= NUM_READINGS;
+
+       return voltage_read;
+}
+
+static int adjust_vdd(ulong vdd_override)
+{
+       int re_enable = disable_interrupts();
+       ccsr_gur_t __iomem *gur =
+               (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 fusesr;
+       u8 vid;
+       int vdd_target, vdd_last;
+       int existing_voltage, temp_voltage, voltage; /* all in 1/10 mV */
+       int ret;
+       unsigned int orig_i2c_speed;
+       unsigned long vdd_string_override;
+       char *vdd_string;
+       static const uint16_t vdd[32] = {
+               0,      /* unused */
+               9875,   /* 0.9875V */
+               9750,
+               9625,
+               9500,
+               9375,
+               9250,
+               9125,
+               9000,
+               8875,
+               8750,
+               8625,
+               8500,
+               8375,
+               8250,
+               8125,
+               10000,  /* 1.0000V */
+               10125,
+               10250,
+               10375,
+               10500,
+               10625,
+               10750,
+               10875,
+               11000,
+               0,      /* reserved */
+       };
+       struct vdd_drive {
+               u8 vid;
+               unsigned voltage;
+       };
+
+       ret = select_i2c_ch_pca(I2C_MUX_CH_VOL_MONITOR);
+       if (ret) {
+               printf("VID: I2c failed to switch channel\n");
+               ret = -1;
+               goto exit;
+       }
+
+       /* get the voltage ID from fuse status register */
+       fusesr = in_be32(&gur->dcfg_fusesr);
+       vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_VID_SHIFT) &
+               FSL_CORENET_DCFG_FUSESR_VID_MASK;
+       if (vid == FSL_CORENET_DCFG_FUSESR_VID_MASK) {
+               vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
+                       FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
+       }
+       vdd_target = vdd[vid];
+       debug("VID:Reading from from fuse,vid=%x vdd is %dmV\n",
+             vid, vdd_target/10);
+
+       /* check override variable for overriding VDD */
+       vdd_string = getenv("b4qds_vdd_mv");
+       if (vdd_override == 0 && vdd_string &&
+           !strict_strtoul(vdd_string, 10, &vdd_string_override))
+               vdd_override = vdd_string_override;
+       if (vdd_override >= 819 && vdd_override <= 1212) {
+               vdd_target = vdd_override * 10; /* convert to 1/10 mV */
+               debug("VDD override is %lu\n", vdd_override);
+       } else if (vdd_override != 0) {
+               printf("Invalid value.\n");
+       }
+
+       if (vdd_target == 0) {
+               printf("VID: VID not used\n");
+               ret = 0;
+               goto exit;
+       }
+
+       /*
+        * Read voltage monitor to check real voltage.
+        * Voltage monitor LSB is 4mv.
+        */
+       vdd_last = read_voltage();
+       if (vdd_last < 0) {
+               printf("VID: abort VID adjustment\n");
+               ret = -1;
+               goto exit;
+       }
+
+       debug("VID: Core voltage is at %d mV\n", vdd_last);
+       ret = select_i2c_ch_pca(I2C_MUX_CH_DPM);
+       if (ret) {
+               printf("VID: I2c failed to switch channel to DPM\n");
+               ret = -1;
+               goto exit;
+       }
+
+       /* Round up to the value of step of Voltage regulator */
+       voltage = roundup(vdd_target, ZM_STEP);
+       debug("VID: rounded up voltage = %d\n", voltage);
+
+       /* lower the speed to 100kHz to access ZM7300 device */
+       debug("VID: Setting bus speed to 100KHz if not already set\n");
+       orig_i2c_speed = i2c_get_bus_speed();
+       if (orig_i2c_speed != 100000)
+               i2c_set_bus_speed(100000);
+
+       /* Read the existing level on board, if equal to requsted one,
+          no need to re-set */
+       existing_voltage = zm_read_voltage();
+
+       /* allowing the voltage difference of one step 0.0125V acceptable */
+       if ((existing_voltage >= voltage) &&
+           (existing_voltage < (voltage + ZM_STEP))) {
+               debug("VID: voltage already set as requested,returning\n");
+               ret = existing_voltage;
+               goto out;
+       }
+       debug("VID: Changing voltage for board from %dmV to %dmV\n",
+             existing_voltage/10, voltage/10);
+
+       if (zm_disable_wp() < 0) {
+               ret = -1;
+               goto out;
+       }
+       /* Change Voltage: the change is done through all the steps in the
+          way, to avoid reset to the board due to power good signal fail
+          in big voltage change gap jump.
+       */
+       if (existing_voltage > voltage) {
+               temp_voltage = existing_voltage - ZM_STEP;
+                       while (temp_voltage >= voltage) {
+                               ret = zm_write_voltage(temp_voltage);
+                               if (ret == temp_voltage) {
+                                       temp_voltage -= ZM_STEP;
+                               } else {
+                                       /* ZM7300 device failed to set
+                                        * the voltage */
+                                       printf
+                                       ("VID:Stepping down vol failed:%dmV\n",
+                                        temp_voltage/10);
+                                    ret = -1;
+                                    goto out;
+                               }
+                       }
+       } else {
+               temp_voltage = existing_voltage + ZM_STEP;
+                       while (temp_voltage < (voltage + ZM_STEP)) {
+                               ret = zm_write_voltage(temp_voltage);
+                               if (ret == temp_voltage) {
+                                       temp_voltage += ZM_STEP;
+                               } else {
+                                       /* ZM7300 device failed to set
+                                        * the voltage */
+                                       printf
+                                       ("VID:Stepping up vol failed:%dmV\n",
+                                        temp_voltage/10);
+                                    ret = -1;
+                                    goto out;
+                               }
+                       }
+       }
+
+       if (zm_enable_wp() < 0)
+               ret = -1;
+
+       /* restore the speed to 400kHz */
+out:   debug("VID: Restore the I2C bus speed to %dKHz\n",
+                               orig_i2c_speed/1000);
+       i2c_set_bus_speed(orig_i2c_speed);
+       if (ret < 0)
+               goto exit;
+
+       ret = select_i2c_ch_pca(I2C_MUX_CH_VOL_MONITOR);
+       if (ret) {
+               printf("VID: I2c failed to switch channel\n");
+               ret = -1;
+               goto exit;
+       }
+       vdd_last = read_voltage();
+       select_i2c_ch_pca(I2C_CH_DEFAULT);
+
+       if (vdd_last > 0)
+               printf("VID: Core voltage %d mV\n", vdd_last);
+       else
+               ret = -1;
+
+exit:
+       if (re_enable)
+               enable_interrupts();
+       return ret;
+}
+
 int configure_vsc3316_3308(void)
 {
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
@@ -697,6 +930,13 @@ int board_early_init_r(void)
 #ifdef CONFIG_SYS_DPAA_QBMAN
        setup_portals();
 #endif
+       /*
+        * Adjust core voltage according to voltage ID
+        * This function changes I2C mux to channel 2.
+        */
+       if (adjust_vdd(0) < 0)
+               printf("Warning: Adjusting core voltage failed\n");
+
        /* SerDes1 refclks need to be set again, as default clks
         * are not suitable for CPRI and onboard SGMIIs to work
         * simultaneously.
index f6a08797531c731c3abf6bc44aaccfdbd4f491d2..22b57ccaa8ddddbbb0f638e6be1d8debf507179b 100644 (file)
@@ -48,6 +48,7 @@ obj-$(CONFIG_P5020DS)         += ics307_clk.o
 obj-$(CONFIG_P5040DS)          += ics307_clk.o
 obj-$(CONFIG_VSC_CROSSBAR)    += vsc3316_3308.o
 obj-$(CONFIG_IDT8T49N222A)     += idt8t49n222a_serdes_clk.o
+obj-$(CONFIG_ZM7300)           += zm7300.o
 
 # deal with common files for P-series corenet based devices
 obj-$(CONFIG_P2041RDB) += p_corenet/
index 9c18dd824248a072a558197eb3426b6d5eae1e26..6144c533ef27af60d629103aa5f117369ed373b4 100644 (file)
@@ -21,7 +21,7 @@
 /* some boards with non-256-bytes EEPROM have special define */
 /* for MAX_NUM_PORTS in board-specific file */
 #ifndef MAX_NUM_PORTS
-#define MAX_NUM_PORTS  23
+#define MAX_NUM_PORTS  16
 #endif
 #define NXID_VERSION   1
 #endif
@@ -58,8 +58,9 @@ static struct __attribute__ ((__packed__)) eeprom {
        u8 res_1[21];     /* 0x2b - 0x3f Reserved */
        u8 mac_count;     /* 0x40        Number of MAC addresses */
        u8 mac_flag;      /* 0x41        MAC table flags */
-       u8 mac[MAX_NUM_PORTS][6];     /* 0x42 - x MAC addresses */
-       u32 crc;          /* x+1         CRC32 checksum */
+       u8 mac[MAX_NUM_PORTS][6];     /* 0x42 - 0xa1 MAC addresses */
+       u8 res_2[90];     /* 0xa2 - 0xfb Reserved */    
+       u32 crc;          /* 0xfc - 0xff CRC32 checksum */
 #endif
 } e;
 
@@ -425,13 +426,13 @@ int mac_read_from_eeprom(void)
 
        if (read_eeprom()) {
                printf("Read failed.\n");
-               return -1;
+               return 0;
        }
 
        if (!is_valid) {
                printf("Invalid ID (%02x %02x %02x %02x)\n",
                       e.id[0], e.id[1], e.id[2], e.id[3]);
-               return -1;
+               return 0;
        }
 
 #ifdef CONFIG_SYS_I2C_EEPROM_NXID
@@ -447,7 +448,7 @@ int mac_read_from_eeprom(void)
        crcp = (void *)&e + crc_offset;
        if (crc != be32_to_cpu(*crcp)) {
                printf("CRC mismatch (%08x != %08x)\n", crc, be32_to_cpu(e.crc));
-               return -1;
+               return 0;
        }
 
 #ifdef CONFIG_SYS_I2C_EEPROM_NXID
diff --git a/board/freescale/common/zm7300.c b/board/freescale/common/zm7300.c
new file mode 100644 (file)
index 0000000..be5953a
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+/* Power-One ZM7300 DPM */
+#include "zm7300.h"
+
+#define DPM_WP 0x96
+#define WRP_OPCODE 0x01
+#define WRM_OPCODE 0x02
+#define RRP_OPCODE 0x11
+
+#define DPM_SUCCESS 0x01
+#define DPM_EXEC_FAIL 0x00
+
+static const uint16_t hex_to_1_10mv[] = {
+       5000,
+       5125,
+       5250,
+       5375,
+       5500,
+       5625,
+       5750,
+       5875,
+       6000,
+       6125,
+       6250,
+       6375,
+       6500,
+       6625,
+       6750,
+       6875,
+       7000,
+       7125,
+       7250,
+       7375,
+       7500,
+       7625,
+       7750,
+       7875,
+       8000,
+       8125,
+       8250,
+       8375,
+       8500,
+       8625,
+       8750,
+       8875,
+       9000,
+       9125,
+       9250,
+       9375,
+       9500,  /* 0.95mV */
+       9625,
+       9750,
+       9875,
+       10000,  /* 1.0V */
+       10125,
+       10250,
+       10375,
+       10500,
+       10625,
+       10750,
+       10875,
+       11000,
+       11125,
+       11250,
+       11375,
+       11500,
+       11625,
+       11750,
+       11875,
+       12000,
+       12125,
+       12250,
+       12375,
+       0,      /* reserved */
+};
+
+
+/* Read Data d from Register r of POL p */
+u8 dpm_rrp(uchar r)
+{
+       u8 ret[5];
+
+       ret[0] = RRP_OPCODE;
+       /* POL is 0 */
+       ret[1] = 0;
+       ret[2] = r;
+       i2c_read(I2C_DPM_ADDR, 0, -3, ret, 2);
+       if (ret[1] == DPM_SUCCESS) { /* the DPM returned success as status */
+               debug("RRP_OPCODE returned success data is %x\n", ret[0]);
+               return ret[0];
+       } else {
+               return -1;
+       }
+}
+
+/* Write Data d into DPM register r (RAM) */
+int dpm_wrm(u8 r, u8 d)
+{
+       u8 ret[5];
+
+       ret[0] = WRM_OPCODE;
+       ret[1] = r;
+       ret[2] = d;
+       i2c_read(I2C_DPM_ADDR, 0, -3, ret, 1);
+       if (ret[0] == DPM_SUCCESS) { /* the DPM returned success as status */
+               debug("WRM_OPCODE returned success data is %x\n", ret[0]);
+               return ret[0];
+       } else {
+               return -1;
+       }
+}
+
+/* Write Data d into Register r of POL(s) a */
+int dpm_wrp(u8 r, u8 d)
+{
+       u8 ret[7];
+
+       ret[0] = WRP_OPCODE;
+       /* only POL0 is present */
+       ret[1] = 0x01;
+       ret[2] = 0x00;
+       ret[3] = 0x00;
+       ret[4] = 0x00;
+       ret[5] = r;
+       ret[6] = d;
+       i2c_read(I2C_DPM_ADDR, 0, -7, ret, 1);
+       if (ret[0] == DPM_SUCCESS) { /* the DPM returned success as status */
+               debug("WRP_OPCODE returned success data is %x\n", ret[0]);
+               return 0;
+       } else {
+               return -1;
+       }
+}
+
+/* Uses the DPM command RRP */
+u8 zm_read(uchar reg)
+{
+       u8 d;
+       d = dpm_rrp(reg);
+       return d;
+}
+
+/* ZM_write --
+       Steps:
+       a. Write data to the register
+       b. Read data from register and compare to written value
+       c. Return return_code & voltage_read
+*/
+u8 zm_write(u8 reg, u8 data)
+{
+       u8 d;
+
+       /* write data to register */
+       dpm_wrp(reg, data);
+
+       /* read register and compare to written value */
+       d = dpm_rrp(reg);
+       if (d != data) {
+               printf("zm_write : Comparison register data failed\n");
+               return -1;
+       }
+
+       return d;
+}
+
+/* zm_write_out_voltage
+ * voltage in 1/10 mV
+ */
+int zm_write_voltage(int voltage)
+{
+       u8 reg = 0x7, vid;
+       uint16_t voltage_read;
+       u8 ret;
+
+       vid =  (voltage - 5000) / ZM_STEP;
+
+       ret = zm_write(reg, vid);
+       if (ret != -1) {
+               voltage_read = hex_to_1_10mv[ret];
+               debug("voltage set to %dmV\n", voltage_read/10);
+               return voltage_read;
+       }
+       return -1;
+}
+
+/* zm_read_out_voltage
+ * voltage in 1/10 mV
+ */
+int zm_read_voltage(void)
+{
+       u8 reg = 0x7;
+       u8 ret;
+       int voltage;
+
+       ret = zm_read(reg);
+       if (ret != -1) {
+               voltage =  hex_to_1_10mv[ret];
+               debug("Voltage read is %dmV\n", voltage/10);
+               return voltage;
+       } else {
+               return -1;
+       }
+}
+
+int zm_disable_wp()
+{
+       u8 new_wp_value;
+
+       /* Disable using Write-Protect register 0x96 */
+       new_wp_value = 0x8;
+       if ((dpm_wrm(DPM_WP, new_wp_value)) < 0) {
+               printf("Disable Write-Protect register failed\n");
+               return -1;
+       }
+       return 0;
+}
+
+int zm_enable_wp()
+{
+       u8 orig_wp_value;
+       orig_wp_value = 0x0;
+
+       /* Enable using Write-Protect register 0x96 */
+       if ((dpm_wrm(DPM_WP, orig_wp_value)) < 0) {
+               printf("Enable Write-Protect register failed\n");
+               return -1;
+       }
+       return 0;
+}
+
diff --git a/board/freescale/common/zm7300.h b/board/freescale/common/zm7300.h
new file mode 100644 (file)
index 0000000..6b4d035
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __ZM7300_H_
+#define __ZM7300_H     1_
+
+#include <common.h>
+#include <i2c.h>
+#include <errno.h>
+#include <asm/io.h>
+
+#define ZM_STEP 125
+int zm7300_set_voltage(int voltage_1_10mv);
+int zm_write_voltage(int voltage);
+int zm_read_voltage(void);
+int zm_disable_wp(void);
+int zm_enable_wp(void);
+
+#endif /* __ZM7300_H_ */
index d7d932eeb8a3fd70c7d78a6b41cd016cc811d5f8..3e314daec2f431d7cb2900a508b7264713e3dd23 100644 (file)
 #include <asm/gpio.h>
 #include <asm/imx-common/iomux-v3.h>
 #include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
 #include <netdev.h>
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/crm_regs.h>
-#include <linux/fb.h>
-#include <ipu_pixfmt.h>
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
 DECLARE_GLOBAL_DATA_PTR;
@@ -265,22 +264,6 @@ int board_phy_config(struct phy_device *phydev)
 }
 
 #if defined(CONFIG_VIDEO_IPUV3)
-struct display_info_t {
-       int     bus;
-       int     addr;
-       int     pixfmt;
-       int     (*detect)(struct display_info_t const *dev);
-       void    (*enable)(struct display_info_t const *dev);
-       struct  fb_videomode mode;
-};
-
-static int detect_hdmi(struct display_info_t const *dev)
-{
-       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
-       return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
-}
-
-
 static void disable_lvds(struct display_info_t const *dev)
 {
        struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
@@ -309,7 +292,7 @@ static void enable_lvds(struct display_info_t const *dev)
        writel(reg, &iomux->gpr[2]);
 }
 
-static struct display_info_t const displays[] = {{
+struct display_info_t const displays[] = {{
        .bus    = -1,
        .addr   = 0,
        .pixfmt = IPU_PIX_FMT_RGB666,
@@ -350,51 +333,7 @@ static struct display_info_t const displays[] = {{
                .sync           = FB_SYNC_EXT,
                .vmode          = FB_VMODE_NONINTERLACED
 } } };
-
-int board_video_skip(void)
-{
-       int i;
-       int ret;
-       char const *panel = getenv("panel");
-       if (!panel) {
-               for (i = 0; i < ARRAY_SIZE(displays); i++) {
-                       struct display_info_t const *dev = displays+i;
-                       if (dev->detect && dev->detect(dev)) {
-                               panel = dev->mode.name;
-                               printf("auto-detected panel %s\n", panel);
-                               break;
-                       }
-               }
-               if (!panel) {
-                       panel = displays[0].mode.name;
-                       printf("No panel detected: default to %s\n", panel);
-                       i = 0;
-               }
-       } else {
-               for (i = 0; i < ARRAY_SIZE(displays); i++) {
-                       if (!strcmp(panel, displays[i].mode.name))
-                               break;
-               }
-       }
-       if (i < ARRAY_SIZE(displays)) {
-               ret = ipuv3_fb_init(&displays[i].mode, 0,
-                                   displays[i].pixfmt);
-               if (!ret) {
-                       displays[i].enable(displays+i);
-                       printf("Display: %s (%ux%u)\n",
-                              displays[i].mode.name,
-                              displays[i].mode.xres,
-                              displays[i].mode.yres);
-               } else
-                       printf("LCD %s cannot be configured: %d\n",
-                              displays[i].mode.name, ret);
-       } else {
-               printf("unsupported panel %s\n", panel);
-               return -EINVAL;
-       }
-
-       return 0;
-}
+size_t display_count = ARRAY_SIZE(displays);
 
 static void setup_display(void)
 {
index aadad3266f3c90fbcd6957201c35a06be732ecb1..d2b64cc35748ec3cd518fede6f7c0dad8f5aaea5 100644 (file)
@@ -34,6 +34,9 @@ DECLARE_GLOBAL_DATA_PTR;
        PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED   |             \
        PAD_CTL_DSE_40ohm   | PAD_CTL_HYS)
 
+#define SPI_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_SPEED_MED | \
+                     PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
+
 #define ETH_PHY_RESET  IMX_GPIO_NR(4, 21)
 
 int dram_init(void)
@@ -71,6 +74,20 @@ static iomux_v3_cfg_t const fec_pads[] = {
        MX6_PAD_FEC_TX_CLK__GPIO_4_21 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+#ifdef CONFIG_MXC_SPI
+static iomux_v3_cfg_t ecspi1_pads[] = {
+       MX6_PAD_ECSPI1_MISO__ECSPI_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_ECSPI1_MOSI__ECSPI_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_ECSPI1_SCLK__ECSPI_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_ECSPI1_SS0__GPIO4_IO11  | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static void setup_spi(void)
+{
+       imx_iomux_v3_setup_multiple_pads(ecspi1_pads, ARRAY_SIZE(ecspi1_pads));
+}
+#endif
+
 static void setup_iomux_uart(void)
 {
        imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
@@ -132,6 +149,9 @@ static int setup_fec(void)
 int board_early_init_f(void)
 {
        setup_iomux_uart();
+#ifdef CONFIG_MXC_SPI
+       setup_spi();
+#endif
        return 0;
 }
 
index f7b568a021672e31e40d1c3b1040aeb93fbbdb7c..a97bf45f00fc798b997f93ba1919723e79bcbd20 100644 (file)
@@ -4,8 +4,27 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+MINIMAL=
+
+ifdef CONFIG_SPL_BUILD
+ifdef CONFIG_SPL_INIT_MINIMAL
+MINIMAL=y
+endif
+endif
+
+ifdef MINIMAL
+
+obj-y  += spl_minimal.o tlb.o law.o
+
+else
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o
+else
 obj-y  += p1_p2_rdb.o
+obj-$(CONFIG_PCI)  += pci.o
+endif
 obj-y  += ddr.o
 obj-y  += law.o
-obj-$(CONFIG_PCI)  += pci.o
 obj-y  += tlb.o
+
+endif
index 17d3beac3905ebdecaf4392ea50725bd1a4cc869..98ee5f10215ab961e44a083a9855248ffe2e2ff2 100644 (file)
@@ -180,27 +180,22 @@ fsl_ddr_cfg_regs_t ddr_cfg_regs_800 = {
 
 phys_size_t fixed_sdram (void)
 {
-       char buf[32];
        fsl_ddr_cfg_regs_t ddr_cfg_regs;
        size_t ddr_size;
        struct cpu_type *cpu;
        ulong ddr_freq, ddr_freq_mhz;
 
        cpu = gd->arch.cpu;
-       /* P1020 and it's derivatives support max 32bit DDR width */
-       if (cpu->soc_ver == SVR_P1020 || cpu->soc_ver == SVR_P1011) {
-               ddr_size = (CONFIG_SYS_SDRAM_SIZE * 1024 * 1024 / 2);
-       } else {
-               ddr_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
-       }
+
+       ddr_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
+
 #if defined(CONFIG_SYS_RAMBOOT)
        return ddr_size;
 #endif
        ddr_freq = get_ddr_freq(0);
        ddr_freq_mhz = ddr_freq / 1000000;
 
-       printf("Configuring DDR for %s MT/s data rate\n",
-                               strmhz(buf, ddr_freq));
+       printf("Configuring DDR for %ld T/s data rate\n", ddr_freq);
 
        if(ddr_freq_mhz <= 400)
                memcpy(&ddr_cfg_regs, &ddr_cfg_regs_400, sizeof(ddr_cfg_regs));
@@ -211,8 +206,7 @@ phys_size_t fixed_sdram (void)
        else if(ddr_freq_mhz <= 800)
                memcpy(&ddr_cfg_regs, &ddr_cfg_regs_800, sizeof(ddr_cfg_regs));
        else
-               panic("Unsupported DDR data rate %s MT/s data rate\n",
-                                       strmhz(buf, ddr_freq));
+               panic("Unsupported DDR data rate %ld T/s\n", ddr_freq);
 
        /* P1020 and it's derivatives support max 32bit DDR width */
        if (cpu->soc_ver == SVR_P1020 || cpu->soc_ver == SVR_P1011) {
diff --git a/board/freescale/p1_p2_rdb/spl.c b/board/freescale/p1_p2_rdb/spl.c
new file mode 100644 (file)
index 0000000..f30c5fe
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * 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 <fsl_esdhc.h>
+#include <spi_flash.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define SYSCLK_MASK    0x00200000
+#define BOARDREV_MASK  0x10100000
+
+#define SYSCLK_66      66666666
+#define SYSCLK_100     100000000
+
+unsigned long get_board_sys_clk(ulong dummy)
+{
+       ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
+       u32 val_gpdat, sysclk_gpio;
+
+       val_gpdat = in_be32(&pgpio->gpdat);
+       sysclk_gpio = val_gpdat & SYSCLK_MASK;
+
+       if (sysclk_gpio == 0)
+               return SYSCLK_66;
+       else
+               return SYSCLK_100;
+
+       return 0;
+}
+
+phys_size_t get_effective_memsize(void)
+{
+       return CONFIG_SYS_L2_SIZE;
+}
+
+void board_init_f(ulong bootflag)
+{
+       u32 plat_ratio, 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);
+
+       /* Read back the register to synchronize the write. */
+       in_be32(&gur->pmuxcr);
+
+#ifdef CONFIG_SPL_SPI_BOOT
+       clrbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_SD_DATA);
+#endif
+
+       /* initialize selected port with appropriate baud rate */
+       plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO;
+       plat_ratio >>= 1;
+       bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
+       gd->bus_clk = bus_clk;
+
+       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);
+
+#ifdef CONFIG_SPL_MMC_BOOT
+       mmc_initialize(bd);
+#endif
+       /* relocate environment function pointers etc. */
+#ifdef CONFIG_SPL_NAND_BOOT
+       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                           (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_NAND_BOOT
+       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                           (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_MMC_BOOT
+       mmc_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                          (uchar *)CONFIG_ENV_ADDR);
+#endif
+#ifdef CONFIG_SPL_SPI_BOOT
+       spi_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+                          (uchar *)CONFIG_ENV_ADDR);
+#endif
+
+       gd->env_addr  = (ulong)(CONFIG_ENV_ADDR);
+       gd->env_valid = 1;
+
+       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
+}
diff --git a/board/freescale/p1_p2_rdb/spl_minimal.c b/board/freescale/p1_p2_rdb/spl_minimal.c
new file mode 100644 (file)
index 0000000..96a4d1c
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <ns16550.h>
+#include <asm/io.h>
+#include <nand.h>
+#include <linux/compiler.h>
+#include <asm/fsl_law.h>
+#include <fsl_ddr_sdram.h>
+#include <asm/global_data.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+#define SYSCLK_MASK    0x00200000
+#define BOARDREV_MASK  0x10100000
+
+#define SYSCLK_66      66666666
+#define SYSCLK_100     100000000
+
+unsigned long get_board_sys_clk(ulong dummy)
+{
+       ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
+       u32 val_gpdat, sysclk_gpio;
+
+       val_gpdat = in_be32(&pgpio->gpdat);
+       sysclk_gpio = val_gpdat & SYSCLK_MASK;
+
+       if (sysclk_gpio == 0)
+               return SYSCLK_66;
+       else
+               return SYSCLK_100;
+
+       return 0;
+}
+
+void board_init_f(ulong bootflag)
+{
+       u32 plat_ratio;
+       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
+
+       /* initialize selected port with appropriate baud rate */
+       plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO;
+       plat_ratio >>= 1;
+       gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
+
+       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
+                    gd->bus_clk / 16 / CONFIG_BAUDRATE);
+
+       puts("\nNAND boot... ");
+
+       /* 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)
+{
+       puts("\nSecond program loader running in sram...");
+       nand_boot();
+}
+
+void putc(char c)
+{
+       if (c == '\n')
+               NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r');
+
+       NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c);
+}
+
+void puts(const char *str)
+{
+       while (*str)
+               putc(*str++);
+}
index bc98972e33264557a0f06cc1755998bfc7a0fe5f..73f5729ef56be45c8fbd419c809836a3a604e165 100644 (file)
@@ -37,6 +37,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                        MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                        0, 1, BOOKE_PAGESZ_1M, 1),
 
+#ifndef CONFIG_SPL_BUILD
        /* W**G* - Flash/promjet, 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,
@@ -55,6 +56,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
                        0, 4, BOOKE_PAGESZ_256K, 1),
 
 #endif /* #if defined(CONFIG_PCI) */
+#endif
        /* *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,
@@ -65,7 +67,21 @@ struct fsl_e_tlb_entry tlb_table[] = {
                        MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                        0, 6, BOOKE_PAGESZ_1M, 1),
 
-#if defined(CONFIG_SYS_RAMBOOT)
+#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),
+#if CONFIG_SYS_L2_SIZE >= (256 << 10)
+       SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L2_ADDR + 0x40000,
+                     CONFIG_SYS_INIT_L2_ADDR_PHYS + 0x40000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 12, BOOKE_PAGESZ_256K, 1),
+#endif
+#endif
+
+#if defined(CONFIG_SYS_RAMBOOT) || \
+       (defined(CONFIG_SPL) && !defined(CONFIG_SPL_COMMON_INIT_DDR))
        SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
                        MAS3_SX|MAS3_SW|MAS3_SR, 0,
                        0, 7, BOOKE_PAGESZ_1G, 1)
index 3dbb0cf43b8a00b0bdcc18a77489336b98a99511..230870d90e442d2d1ac7c6730218bfe725467116 100644 (file)
@@ -346,3 +346,23 @@ ulong get_bus_freq (ulong dummy)
        get_sys_info(&sys_info);
        return sys_info.freq_systembus;
 }
+
+/*
+ * Return the number of cores on this SOC.
+ */
+int cpu_numcores(void)
+{
+       /*
+        * The QEMU u-boot target only needs to drive the first core,
+        * spinning and device tree nodes get driven by QEMU itself
+        */
+       return 1;
+}
+
+/*
+ * Return a 32-bit mask indicating which cores are present on this SOC.
+ */
+u32 cpu_mask(void)
+{
+       return (1 << cpu_numcores()) - 1;
+}
index fb5b84940eaebdefcd7ac1bcd282f610e431377b..a5e5fffac4c8fc48da640d8a89b59d389acf234b 100644 (file)
@@ -109,6 +109,8 @@ void ft_board_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_DEEP_SLEEP
 void board_mem_sleep_setup(void)
 {
+       /* does not provide HW signals for power management */
+       CPLD_WRITE(misc_ctl_status, (CPLD_READ(misc_ctl_status) & ~0x40));
        /* Disable MCKE isolation */
        gpio_set_value(2, 0);
        udelay(1);
diff --git a/board/freescale/t4rdb/Makefile b/board/freescale/t4rdb/Makefile
new file mode 100644 (file)
index 0000000..f7f7fc0
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# Copyright 2014 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-$(CONFIG_T4240RDB) += t4240rdb.o
+obj-y  += ddr.o
+obj-y  += eth.o
+obj-$(CONFIG_PCI)      += pci.o
+obj-y  += law.o
+obj-y  += tlb.o
diff --git a/board/freescale/t4rdb/ddr.c b/board/freescale/t4rdb/ddr.c
new file mode 100644 (file)
index 0000000..5a43c1b
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <hwconfig.h>
+#include <asm/mmu.h>
+#include <fsl_ddr_sdram.h>
+#include <fsl_ddr_dimm_params.h>
+#include <asm/fsl_law.h>
+#include "ddr.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void fsl_ddr_board_options(memctl_options_t *popts,
+                               dimm_params_t *pdimm,
+                               unsigned int ctrl_num)
+{
+       const struct board_specific_parameters *pbsp, *pbsp_highest = NULL;
+       ulong ddr_freq;
+
+       if (ctrl_num > 2) {
+               printf("Not supported controller number %d\n", ctrl_num);
+               return;
+       }
+       if (!pdimm->n_ranks)
+               return;
+
+       /*
+        * we use identical timing for all slots. If needed, change the code
+        * to  pbsp = rdimms[ctrl_num] or pbsp = udimms[ctrl_num];
+        */
+       if (popts->registered_dimm_en)
+               pbsp = rdimms[0];
+       else
+               pbsp = udimms[0];
+
+
+       /* Get clk_adjust, cpo, write_data_delay,2T, according to the board ddr
+        * freqency and n_banks specified in board_specific_parameters table.
+        */
+       ddr_freq = get_ddr_freq(0) / 1000000;
+       while (pbsp->datarate_mhz_high) {
+               if (pbsp->n_ranks == pdimm->n_ranks &&
+                   (pdimm->rank_density >> 30) >= pbsp->rank_gb) {
+                       if (ddr_freq <= pbsp->datarate_mhz_high) {
+                               popts->clk_adjust = pbsp->clk_adjust;
+                               popts->wrlvl_start = pbsp->wrlvl_start;
+                               popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
+                               popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
+                               goto found;
+                       }
+                       pbsp_highest = pbsp;
+               }
+               pbsp++;
+       }
+
+       if (pbsp_highest) {
+               printf("Error: board specific timing not found for data\n"
+                       "rate %lu MT/s\n"
+                       "Trying to use the highest speed (%u) parameters\n",
+                       ddr_freq, pbsp_highest->datarate_mhz_high);
+               popts->clk_adjust = pbsp_highest->clk_adjust;
+               popts->wrlvl_start = pbsp_highest->wrlvl_start;
+               popts->wrlvl_ctl_2 = pbsp->wrlvl_ctl_2;
+               popts->wrlvl_ctl_3 = pbsp->wrlvl_ctl_3;
+       } else {
+               panic("DIMM is not supported by this board");
+       }
+found:
+       debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n"
+               "\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x,\n"
+               "wrlvl_ctrl_3 0x%x\n",
+               pbsp->n_ranks, pbsp->datarate_mhz_high, pbsp->rank_gb,
+               pbsp->clk_adjust, pbsp->wrlvl_start, pbsp->wrlvl_ctl_2,
+               pbsp->wrlvl_ctl_3);
+
+       /*
+        * Factors to consider for half-strength driver enable:
+        *      - number of DIMMs installed
+        */
+       popts->half_strength_driver_enable = 0;
+       /*
+        * Write leveling override
+        */
+       popts->wrlvl_override = 1;
+       popts->wrlvl_sample = 0xf;
+
+       /*
+        * Rtt and Rtt_WR override
+        */
+       popts->rtt_override = 0;
+
+       /* Enable ZQ calibration */
+       popts->zq_en = 1;
+
+       /* DHC_EN =1, ODT = 75 Ohm */
+       popts->ddr_cdr1 = DDR_CDR1_DHC_EN | DDR_CDR1_ODT(DDR_CDR_ODT_75ohm);
+       popts->ddr_cdr2 = DDR_CDR2_ODT(DDR_CDR_ODT_75ohm);
+}
+
+phys_size_t initdram(int board_type)
+{
+       phys_size_t dram_size;
+
+       puts("Initializing....using SPD\n");
+
+       dram_size = fsl_ddr_sdram();
+
+       dram_size = setup_ddr_tlbs(dram_size / 0x100000);
+       dram_size *= 0x100000;
+
+       puts("    DDR: ");
+       return dram_size;
+}
diff --git a/board/freescale/t4rdb/ddr.h b/board/freescale/t4rdb/ddr.h
new file mode 100644 (file)
index 0000000..7b85476
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2014 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;
+};
+
+/*
+ * 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.
+ */
+static const struct board_specific_parameters udimm0[] = {
+       /*
+        * memory controller 0
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3
+        */
+       {2,  1350, 4, 4,     8, 0x0809090b, 0x0c0c0d0a},
+       {2,  1350, 0, 5,     7, 0x0709090b, 0x0c0c0d09},
+       {2,  1666, 4, 4,     8, 0x080a0a0d, 0x0d10100b},
+       {2,  1666, 0, 5,     7, 0x080a0a0c, 0x0d0d0e0a},
+       {2,  1900, 0, 4,     8, 0x090a0b0e, 0x0f11120c},
+       {2,  2140, 0, 4,     8, 0x090a0b0e, 0x0f11120c},
+       {1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a},
+       {1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a},
+       {1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a},
+       {1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b},
+       {}
+};
+
+static const struct board_specific_parameters rdimm0[] = {
+       /*
+        * memory controller 0
+        *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl
+        * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3
+        */
+       {4,  1350, 0, 5,     9, 0x08070605, 0x06070806},
+       {4,  1666, 0, 5,    11, 0x0a080706, 0x07090906},
+       {4,  2140, 0, 5,    12, 0x0b090807, 0x080a0b07},
+       {2,  1350, 0, 5,     9, 0x08070605, 0x06070806},
+       {2,  1666, 0, 5,    11, 0x0a090806, 0x08090a06},
+       {2,  2140, 0, 5,    12, 0x0b090807, 0x080a0b07},
+       {1,  1350, 0, 5,     9, 0x08070605, 0x06070806},
+       {1,  1666, 0, 5,    11, 0x0a090806, 0x08090a06},
+       {1,  2140, 0, 4,    12, 0x0b090807, 0x080a0b07},
+       {}
+};
+
+/*
+ * 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
diff --git a/board/freescale/t4rdb/eth.c b/board/freescale/t4rdb/eth.c
new file mode 100644 (file)
index 0000000..d220475
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * Chunhe Lan <Chunhe.Lan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <netdev.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/cache.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <fsl_ddr_sdram.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+#include <malloc.h>
+#include <fm_eth.h>
+#include <fsl_mdio.h>
+#include <miiphy.h>
+#include <phy.h>
+#include <asm/fsl_dtsec.h>
+#include <asm/fsl_serdes.h>
+#include <hwconfig.h>
+
+#include "../common/fman.h"
+#include "t4rdb.h"
+
+void fdt_fixup_board_enet(void *fdt)
+{
+       return;
+}
+
+int board_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_FMAN_ENET)
+       int i, interface;
+       struct memac_mdio_info dtsec_mdio_info;
+       struct memac_mdio_info tgec_mdio_info;
+       struct mii_dev *dev;
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 srds_prtcl_s1, srds_prtcl_s2;
+
+       srds_prtcl_s1 = in_be32(&gur->rcwsr[4]) &
+                               FSL_CORENET2_RCWSR4_SRDS1_PRTCL;
+       srds_prtcl_s1 >>= FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT;
+       srds_prtcl_s2 = in_be32(&gur->rcwsr[4]) &
+                               FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
+       srds_prtcl_s2 >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
+
+       dtsec_mdio_info.regs =
+               (struct memac_mdio_controller *)CONFIG_SYS_FM2_DTSEC_MDIO_ADDR;
+
+       dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME;
+
+       /* Register the 1G MDIO bus */
+       fm_memac_mdio_init(bis, &dtsec_mdio_info);
+
+       tgec_mdio_info.regs =
+               (struct memac_mdio_controller *)CONFIG_SYS_FM2_TGEC_MDIO_ADDR;
+       tgec_mdio_info.name = DEFAULT_FM_TGEC_MDIO_NAME;
+
+       /* Register the 10G MDIO bus */
+       fm_memac_mdio_init(bis, &tgec_mdio_info);
+
+       if (srds_prtcl_s1 == 28) {
+               /* SGMII */
+               fm_info_set_phy_address(FM1_DTSEC1, SGMII_PHY_ADDR1);
+               fm_info_set_phy_address(FM1_DTSEC2, SGMII_PHY_ADDR2);
+               fm_info_set_phy_address(FM1_DTSEC3, SGMII_PHY_ADDR3);
+               fm_info_set_phy_address(FM1_DTSEC4, SGMII_PHY_ADDR4);
+       } else {
+               puts("Invalid SerDes1 protocol for T4240RDB\n");
+       }
+
+       for (i = FM1_DTSEC1; i < FM1_DTSEC1 + CONFIG_SYS_NUM_FM1_DTSEC; i++) {
+               interface = fm_info_get_enet_if(i);
+               switch (interface) {
+               case PHY_INTERFACE_MODE_SGMII:
+                       dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME);
+                       fm_info_set_mdio(i, dev);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       for (i = FM1_10GEC1; i < FM1_10GEC1 + CONFIG_SYS_NUM_FM1_10GEC; i++) {
+               switch (fm_info_get_enet_if(i)) {
+               case PHY_INTERFACE_MODE_XGMII:
+                       dev = miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME);
+                       fm_info_set_mdio(i, dev);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+#if (CONFIG_SYS_NUM_FMAN == 2)
+       if (srds_prtcl_s2 == 56) {
+               /* SGMII && XFI */
+               fm_info_set_phy_address(FM2_DTSEC1, SGMII_PHY_ADDR5);
+               fm_info_set_phy_address(FM2_DTSEC2, SGMII_PHY_ADDR6);
+               fm_info_set_phy_address(FM2_DTSEC3, SGMII_PHY_ADDR7);
+               fm_info_set_phy_address(FM2_DTSEC4, SGMII_PHY_ADDR8);
+               fm_info_set_phy_address(FM1_10GEC1, FM1_10GEC1_PHY_ADDR);
+               fm_info_set_phy_address(FM1_10GEC2, FM1_10GEC2_PHY_ADDR);
+               fm_info_set_phy_address(FM2_10GEC1, FM2_10GEC2_PHY_ADDR);
+               fm_info_set_phy_address(FM2_10GEC2, FM2_10GEC1_PHY_ADDR);
+       } else {
+               puts("Invalid SerDes2 protocol for T4240RDB\n");
+       }
+
+       for (i = FM2_DTSEC1; i < FM2_DTSEC1 + CONFIG_SYS_NUM_FM2_DTSEC; i++) {
+               interface = fm_info_get_enet_if(i);
+               switch (interface) {
+               case PHY_INTERFACE_MODE_SGMII:
+                       dev = miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME);
+                       fm_info_set_mdio(i, dev);
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       for (i = FM2_10GEC1; i < FM2_10GEC1 + CONFIG_SYS_NUM_FM2_10GEC; i++) {
+               switch (fm_info_get_enet_if(i)) {
+               case PHY_INTERFACE_MODE_XGMII:
+                       dev = miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME);
+                       fm_info_set_mdio(i, dev);
+                       break;
+               default:
+                       break;
+               }
+       }
+#endif /* CONFIG_SYS_NUM_FMAN */
+
+       cpu_eth_init(bis);
+#endif /* CONFIG_FMAN_ENET */
+
+       return pci_eth_init(bis);
+}
diff --git a/board/freescale/t4rdb/law.c b/board/freescale/t4rdb/law.c
new file mode 100644 (file)
index 0000000..1f58768
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/fsl_law.h>
+#include <asm/mmu.h>
+
+struct law_entry law_table[] = {
+       SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_256M, LAW_TRGT_IF_IFC),
+#ifdef CONFIG_SYS_BMAN_MEM_PHYS
+       SET_LAW(CONFIG_SYS_BMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_BMAN),
+#endif
+#ifdef CONFIG_SYS_QMAN_MEM_PHYS
+       SET_LAW(CONFIG_SYS_QMAN_MEM_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_QMAN),
+#endif
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+       /* Limit DCSR to 32M to access NPC Trace Buffer */
+       SET_LAW(CONFIG_SYS_DCSRBAR_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_DCSR),
+#endif
+#ifdef CONFIG_SYS_NAND_BASE_PHYS
+       SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_IFC),
+#endif
+};
+
+int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/t4rdb/pci.c b/board/freescale/t4rdb/pci.c
new file mode 100644 (file)
index 0000000..6387a20
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <pci.h>
+#include <asm/fsl_pci.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <asm/fsl_serdes.h>
+
+void pci_init_board(void)
+{
+       fsl_pcie_init_board(0);
+}
+
+void pci_of_setup(void *blob, bd_t *bd)
+{
+       FT_FSL_PCI_SETUP;
+}
diff --git a/board/freescale/t4rdb/t4240rdb.c b/board/freescale/t4rdb/t4240rdb.c
new file mode 100644 (file)
index 0000000..5448c86
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <i2c.h>
+#include <netdev.h>
+#include <linux/compiler.h>
+#include <asm/mmu.h>
+#include <asm/processor.h>
+#include <asm/cache.h>
+#include <asm/immap_85xx.h>
+#include <asm/fsl_law.h>
+#include <asm/fsl_serdes.h>
+#include <asm/fsl_portals.h>
+#include <asm/fsl_liodn.h>
+#include <fm_eth.h>
+
+#include "t4rdb.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int checkboard(void)
+{
+       struct cpu_type *cpu = gd->arch.cpu;
+
+       printf("Board: %sRDB, ", cpu->name);
+
+       puts("SERDES Reference Clocks:\n");
+       printf("       SERDES1=100MHz SERDES2=156.25MHz\n"
+              "       SERDES3=100MHz SERDES4=100MHz\n");
+
+       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 + promjet */
+       disable_tlb(flash_esel);
+
+       set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS,
+               MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+               0, flash_esel, BOOKE_PAGESZ_256M, 1);
+
+       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);
+
+#ifdef CONFIG_PCI
+       pci_of_setup(blob, bd);
+#endif
+
+       fdt_fixup_liodn(blob);
+       fdt_fixup_dr_usb(blob, bd);
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+       fdt_fixup_fman_ethernet(blob);
+       fdt_fixup_board_enet(blob);
+#endif
+}
+
+/*
+ * This function is called by bdinfo to print detail board information.
+ * As an exmaple for future board, we organize the messages into
+ * several sections. If applicable, the message is in the format of
+ * <name>      = <value>
+ * It should aligned with normal output of bdinfo command.
+ *
+ * Voltage: Core, DDR and another configurable voltages
+ * Clock  : Critical clocks which are not printed already
+ * RCW    : RCW source if not printed already
+ * Misc   : Other important information not in above catagories
+ */
+void board_detail(void)
+{
+       int rcwsrc;
+
+       /* RCW section SW3[4] */
+       rcwsrc = 0x0;
+       puts("RCW source  = ");
+       switch (rcwsrc & 0x1) {
+       case 0x1:
+               puts("SDHC/eMMC\n");
+               break;
+       default:
+               puts("I2C normal addressing\n");
+               break;
+       }
+}
diff --git a/board/freescale/t4rdb/t4_pbi.cfg b/board/freescale/t4rdb/t4_pbi.cfg
new file mode 100644 (file)
index 0000000..c9f8ced
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# Copyright 2014 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+#PBI commands
+#Initialize CPC1
+09010000 00200400
+09138000 00000000
+091380c0 00000100
+#512KB SRAM
+09010100 00000000
+09010104 fff80009
+09010f00 08000000
+#enable CPC1
+09010000 80000000
+#Configure LAW for CPC1
+09000d00 00000000
+09000d04 fff80000
+09000d08 81000012
+#slow mdio clock
+095fc030 00008148
+095fd030 00808148
+#Configure alternate space
+09000010 00000000
+09000014 ff000000
+09000018 81000000
+#Flush PBL data
+09138000 00000000
+091380c0 00000000
diff --git a/board/freescale/t4rdb/t4_rcw.cfg b/board/freescale/t4rdb/t4_rcw.cfg
new file mode 100644 (file)
index 0000000..13408bd
--- /dev/null
@@ -0,0 +1,7 @@
+#PBL preamble and RCW header
+aa55aa55 010e0100
+#serdes protocol  28_56_2_10
+16070019 18101916 00000000 00000000
+70701050 00448c00 6c020000 f5000000
+00000000 ee0000ee 00000000 000287fc
+00000000 50000000 00000000 00000028
diff --git a/board/freescale/t4rdb/t4rdb.h b/board/freescale/t4rdb/t4rdb.h
new file mode 100644 (file)
index 0000000..fb25d43
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __T4RDB_H__
+#define __T4RDB_H__
+
+#undef CONFIG_SYS_NUM_FM1_DTSEC
+#undef CONFIG_SYS_NUM_FM2_DTSEC
+#define CONFIG_SYS_NUM_FM1_DTSEC       4
+#define CONFIG_SYS_NUM_FM2_DTSEC       4
+
+void fdt_fixup_board_enet(void *blob);
+void pci_of_setup(void *blob, bd_t *bd);
+
+#endif
diff --git a/board/freescale/t4rdb/tlb.c b/board/freescale/t4rdb/tlb.c
new file mode 100644 (file)
index 0000000..4b50bcd
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/mmu.h>
+
+struct fsl_e_tlb_entry tlb_table[] = {
+       /* TLB 0 - for temp stack in cache */
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
+                     CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 0, BOOKE_PAGESZ_4K, 0),
+
+       /* TLB 1 */
+       /* *I*** - Covers boot page */
+#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR)
+       /*
+        * *I*G - L3SRAM. When L3 is used as 512K SRAM */
+       SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                       0, 0, BOOKE_PAGESZ_512K, 1),
+#else
+       SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 0, BOOKE_PAGESZ_4K, 1),
+#endif
+
+       /* *I*G* - CCSRBAR */
+       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 1, BOOKE_PAGESZ_16M, 1),
+
+       /* *I*G* - Flash, localbus */
+       /* This will be changed to *I*G* after relocation to RAM. */
+       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
+                     MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
+                     0, 2, BOOKE_PAGESZ_256M, 1),
+
+       /* *I*G* - PCI */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 3, BOOKE_PAGESZ_1G, 1),
+
+       /* *I*G* - PCI */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT + 0x40000000,
+                     CONFIG_SYS_PCIE1_MEM_PHYS + 0x40000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 4, BOOKE_PAGESZ_256M, 1),
+
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT + 0x50000000,
+                     CONFIG_SYS_PCIE1_MEM_PHYS + 0x50000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 5, BOOKE_PAGESZ_256M, 1),
+
+       /* *I*G* - PCI I/O */
+       SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 6, BOOKE_PAGESZ_256K, 1),
+
+       /* Bman/Qman */
+#ifdef CONFIG_SYS_BMAN_MEM_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 9, BOOKE_PAGESZ_16M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x01000000,
+                     CONFIG_SYS_BMAN_MEM_PHYS + 0x01000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 10, BOOKE_PAGESZ_16M, 1),
+#endif
+#ifdef CONFIG_SYS_QMAN_MEM_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
+                     0, 11, BOOKE_PAGESZ_16M, 1),
+       SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x01000000,
+                     CONFIG_SYS_QMAN_MEM_PHYS + 0x01000000,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 12, BOOKE_PAGESZ_16M, 1),
+#endif
+#ifdef CONFIG_SYS_DCSRBAR_PHYS
+       SET_TLB_ENTRY(1, CONFIG_SYS_DCSRBAR, CONFIG_SYS_DCSRBAR_PHYS,
+                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
+                     0, 13, BOOKE_PAGESZ_32M, 1),
+#endif
+#ifdef CONFIG_SYS_NAND_BASE
+       /*
+        * *I*G - NAND
+        * entry 14 and 15 has been used hard coded, they will be disabled
+        * in cpu_init_f, so we use entry 16 for 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, 16, BOOKE_PAGESZ_64K, 1),
+#endif
+};
+
+int num_tlb_entries = ARRAY_SIZE(tlb_table);
index 4ee74c019883785b5cf14df09a5fc19b48e6cabb..d64d3aa872205f237fce290ae4ec0187c1ead705 100644 (file)
@@ -217,7 +217,8 @@ void ddr_ctrl_init(void)
                &ddrmr->cr[139]);
 
        writel(DDRMC_CR154_PAD_ZQ_EARLY_CMP_EN_TIMER(13) |
-               DDRMC_CR154_PAD_ZQ_MODE(1), &ddrmr->cr[154]);
+               DDRMC_CR154_PAD_ZQ_MODE(1) |
+               DDRMC_CR154_DDR_SEL_PAD_CONTR(3), &ddrmr->cr[154]);
        writel(DDRMC_CR155_AXI0_AWCACHE | DDRMC_CR155_PAD_ODT_BYTE1(2),
                &ddrmr->cr[155]);
        writel(DDRMC_CR158_TWR(6), &ddrmr->cr[158]);
index c130e2c1ed6cfdb059124b8b390da2da8de0765e..031367d97a8e69cd24d73e1cd37181b123b48a9b 100644 (file)
@@ -12,6 +12,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
+#include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
@@ -19,6 +20,7 @@
 #include <asm/imx-common/mxc_i2c.h>
 #include <asm/imx-common/boot_mode.h>
 #include <asm/imx-common/sata.h>
+#include <asm/imx-common/video.h>
 #include <jffs2/load_kernel.h>
 #include <hwconfig.h>
 #include <i2c.h>
@@ -30,8 +32,8 @@
 #include <mtd_node.h>
 #include <netdev.h>
 #include <power/pmic.h>
+#include <power/ltc3676_pmic.h>
 #include <power/pfuze100_pmic.h>
-#include <i2c.h>
 #include <fdt_support.h>
 #include <jffs2/load_kernel.h>
 #include <spi_flash.h>
@@ -369,6 +371,134 @@ int board_eth_init(bd_t *bis)
        return 0;
 }
 
+#if defined(CONFIG_VIDEO_IPUV3)
+
+static void enable_hdmi(struct display_info_t const *dev)
+{
+       imx_enable_hdmi_phy();
+}
+
+static int detect_i2c(struct display_info_t const *dev)
+{
+       return i2c_set_bus_num(dev->bus) == 0 &&
+               i2c_probe(dev->addr) == 0;
+}
+
+static void enable_lvds(struct display_info_t const *dev)
+{
+       struct iomuxc *iomux = (struct iomuxc *)
+                               IOMUXC_BASE_ADDR;
+
+       /* set CH0 data width to 24bit (IOMUXC_GPR2:5 0=18bit, 1=24bit) */
+       u32 reg = readl(&iomux->gpr[2]);
+       reg |= IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT;
+       writel(reg, &iomux->gpr[2]);
+
+       /* Enable Backlight */
+       imx_iomux_v3_setup_pad(MX6_PAD_SD1_CMD__GPIO1_IO18 |
+                              MUX_PAD_CTRL(NO_PAD_CTRL));
+       gpio_direction_output(IMX_GPIO_NR(1, 18), 1);
+}
+
+struct display_info_t const displays[] = {{
+       /* HDMI Output */
+       .bus    = -1,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB24,
+       .detect = detect_hdmi,
+       .enable = enable_hdmi,
+       .mode   = {
+               .name           = "HDMI",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 220,
+               .right_margin   = 40,
+               .upper_margin   = 21,
+               .lower_margin   = 7,
+               .hsync_len      = 60,
+               .vsync_len      = 10,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} }, {
+       /* Freescale MXC-LVDS1: HannStar HSD100PXN1-A00 w/ egalx_ts cont */
+       .bus    = 2,
+       .addr   = 0x4,
+       .pixfmt = IPU_PIX_FMT_LVDS666,
+       .detect = detect_i2c,
+       .enable = enable_lvds,
+       .mode   = {
+               .name           = "Hannstar-XGA",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 220,
+               .right_margin   = 40,
+               .upper_margin   = 21,
+               .lower_margin   = 7,
+               .hsync_len      = 60,
+               .vsync_len      = 10,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} } };
+size_t display_count = ARRAY_SIZE(displays);
+
+static void setup_display(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       int reg;
+
+       enable_ipu_clock();
+       imx_setup_hdmi();
+       /* Turn on LDB0,IPU,IPU DI0 clocks */
+       reg = __raw_readl(&mxc_ccm->CCGR3);
+       reg |= MXC_CCM_CCGR3_LDB_DI0_MASK;
+       writel(reg, &mxc_ccm->CCGR3);
+
+       /* set LDB0, LDB1 clk select to 011/011 */
+       reg = readl(&mxc_ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
+                |MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
+       reg |= (3<<MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)
+             |(3<<MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
+       writel(reg, &mxc_ccm->cs2cdr);
+
+       reg = readl(&mxc_ccm->cscmr2);
+       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
+       writel(reg, &mxc_ccm->cscmr2);
+
+       reg = readl(&mxc_ccm->chsccdr);
+       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
+               <<MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
+       writel(reg, &mxc_ccm->chsccdr);
+
+       reg = IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES
+            |IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH
+            |IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW
+            |IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG
+            |IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT
+            |IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
+            |IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT
+            |IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED
+            |IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
+       writel(reg, &iomux->gpr[2]);
+
+       reg = readl(&iomux->gpr[3]);
+       reg = (reg & ~IOMUXC_GPR3_LVDS0_MUX_CTL_MASK)
+           | (IOMUXC_GPR3_MUX_SRC_IPU1_DI0
+              <<IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
+       writel(reg, &iomux->gpr[3]);
+
+       /* Backlight CABEN on LVDS connector */
+       imx_iomux_v3_setup_pad(MX6_PAD_SD2_CLK__GPIO1_IO10 |
+                              MUX_PAD_CTRL(NO_PAD_CTRL));
+       gpio_direction_output(IMX_GPIO_NR(1, 10), 0);
+}
+#endif /* CONFIG_VIDEO_IPUV3 */
+
 /* read ventana EEPROM, check for validity, and return baseboard type */
 static int
 read_eeprom(void)
@@ -733,6 +863,62 @@ struct ventana gpio_cfg[] = {
        },
 };
 
+/* setup board specific PMIC */
+int power_init_board(void)
+{
+       struct pmic *p;
+       u32 reg;
+
+       /* configure PFUZE100 PMIC */
+       if (board_type == GW54xx || board_type == GW54proto) {
+               power_pfuze100_init(I2C_PMIC);
+               p = pmic_get("PFUZE100_PMIC");
+               if (p && !pmic_probe(p)) {
+                       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
+                       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
+
+                       /* Set VGEN1 to 1.5V and enable */
+                       pmic_reg_read(p, PFUZE100_VGEN1VOL, &reg);
+                       reg &= ~(LDO_VOL_MASK);
+                       reg |= (LDOA_1_50V | LDO_EN);
+                       pmic_reg_write(p, PFUZE100_VGEN1VOL, reg);
+
+                       /* Set SWBST to 5.0V and enable */
+                       pmic_reg_read(p, PFUZE100_SWBSTCON1, &reg);
+                       reg &= ~(SWBST_MODE_MASK | SWBST_VOL_MASK);
+                       reg |= (SWBST_5_00V | SWBST_MODE_AUTO);
+                       pmic_reg_write(p, PFUZE100_SWBSTCON1, reg);
+               }
+       }
+
+       /* configure LTC3676 PMIC */
+       else {
+               power_ltc3676_init(I2C_PMIC);
+               p = pmic_get("LTC3676_PMIC");
+               if (p && !pmic_probe(p)) {
+                       puts("PMIC:  LTC3676\n");
+                       /* set board-specific scalar to 1225mV for IMX6Q@1GHz */
+                       if (is_cpu_type(MXC_CPU_MX6Q)) {
+                               /* mask PGOOD during SW1 transition */
+                               reg = 0x1d | LTC3676_PGOOD_MASK;
+                               pmic_reg_write(p, LTC3676_DVB1B, reg);
+                               /* set SW1 (VDD_SOC) to 1259mV */
+                               reg = 0x1d;
+                               pmic_reg_write(p, LTC3676_DVB1A, reg);
+
+                               /* mask PGOOD during SW3 transition */
+                               reg = 0x1d | LTC3676_PGOOD_MASK;
+                               pmic_reg_write(p, LTC3676_DVB3B, reg);
+                               /*set SW3 (VDD_ARM) to 1259mV */
+                               reg = 0x1d;
+                               pmic_reg_write(p, LTC3676_DVB3A, reg);
+                       }
+               }
+       }
+
+       return 0;
+}
+
 /* setup GPIO pinmux and default configuration per baseboard */
 static void setup_board_gpio(int board)
 {
@@ -888,6 +1074,9 @@ int board_early_init_f(void)
        setup_iomux_uart();
        gpio_direction_output(GP_USB_OTG_PWR, 0); /* OTG power off */
 
+#if defined(CONFIG_VIDEO_IPUV3)
+       setup_display();
+#endif
        return 0;
 }
 
@@ -1076,28 +1265,6 @@ int misc_init_r(void)
                setenv("serial#", str);
        }
 
-       /* configure PFUZE100 PMIC (not used on all Ventana baseboards) */
-       if ((board_type == GW54xx || board_type == GW54proto) &&
-           !pmic_init(I2C_PMIC)) {
-               struct pmic *p = pmic_get("PFUZE100_PMIC");
-               u32 reg;
-               if (p && !pmic_probe(p)) {
-                       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
-                       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
-
-                       /* Set VGEN1 to 1.5V and enable */
-                       pmic_reg_read(p, PFUZE100_VGEN1VOL, &reg);
-                       reg &= ~(LDO_VOL_MASK);
-                       reg |= (LDOA_1_50V | LDO_EN);
-                       pmic_reg_write(p, PFUZE100_VGEN1VOL, reg);
-
-                       /* Set SWBST to 5.0V and enable */
-                       pmic_reg_read(p, PFUZE100_SWBSTCON1, &reg);
-                       reg &= ~(SWBST_MODE_MASK | SWBST_VOL_MASK);
-                       reg |= (SWBST_5_00V | SWBST_MODE_AUTO);
-                       pmic_reg_write(p, PFUZE100_SWBSTCON1, reg);
-               }
-       }
 
        /* setup baseboard specific GPIO pinmux and config */
        setup_board_gpio(board_type);
@@ -1243,7 +1410,7 @@ void ft_board_setup(void *blob, bd_t *bd)
 
        /* board serial number */
        fdt_setprop(blob, 0, "system-serial", getenv("serial#"),
-                   strlen(getenv("serial#") + 1));
+                   strlen(getenv("serial#")) + 1);
 
        /* board (model contains model from device-tree) */
        fdt_setprop(blob, 0, "board", info->model,
index d310bfd994274f753c132e077c63c3a078ba73a9..434b604542045537b85bfc2d5e66f2702ea4f967 100644 (file)
@@ -16,16 +16,16 @@ struct ventana_board_info {
        u8 mfgdate[4];       /* 0x20: MFG date (read only) */
        u8 res2[7];          /* 0x24 */
        /* sdram config */
-       u8 sdram_size;       /* 0x2B: enum (512,1024,2048) MB */
-       u8 sdram_speed;      /* 0x2C: enum (100,133,166,200,267,333,400) MHz */
-       u8 sdram_width;      /* 0x2D: enum (32,64) bit */
+       u8 sdram_size;       /* 0x2B: (16 << n) MB */
+       u8 sdram_speed;      /* 0x2C: (33.333 * n) MHz */
+       u8 sdram_width;      /* 0x2D: (8 << n) bit */
        /* cpu config */
-       u8 cpu_speed;        /* 0x2E: enum (800,1000,1200) MHz */
-       u8 cpu_type;         /* 0x2F: enum (imx6q,imx6d,imx6dl,imx6s) */
+       u8 cpu_speed;        /* 0x2E: (33.333 * n) MHz */
+       u8 cpu_type;         /* 0x2F: 7=imx6q, 8=imx6dl */
        u8 model[16];        /* 0x30: model string */
        /* FLASH config */
-       u8 nand_flash_size;  /* 0x40: enum (4,8,16,32,64,128) MB */
-       u8 spi_flash_size;   /* 0x41: enum (4,8,16,32,64,128) MB */
+       u8 nand_flash_size;  /* 0x40: (8 << (n-1)) MB */
+       u8 spi_flash_size;   /* 0x41: (4 << (n-1)) MB */
 
        /* Config1: SoC Peripherals */
        u8 config[8];        /* 0x42: loading options */
index b7984dd0fec19e186860dca277b3650434545fde..dd0ef707d6d5b56ef522b1d2f89cb4bd6a09d844 100644 (file)
@@ -40,7 +40,7 @@ DECLARE_GLOBAL_DATA_PTR;
 /* Note that these are pointers to code that is in Flash.  They will be
  * relocated at runtime.
  */
-Xilinx_Virtex2_Slave_SelectMap_fns fpga_fns = {
+xilinx_virtex2_slave_selectmap_fns fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_init_fn,
@@ -56,8 +56,8 @@ Xilinx_Virtex2_Slave_SelectMap_fns fpga_fns = {
        fpga_post_config_fn
 };
 
-Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
-       {Xilinx_Virtex2,
+xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
+       {xilinx_virtex2,
         slave_selectmap,
         XILINX_XC2V3000_SIZE,
         (void *) &fpga_fns,
diff --git a/board/gumstix/duovero/Makefile b/board/gumstix/duovero/Makefile
new file mode 100644 (file)
index 0000000..f738c58
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# (C) Copyright 2000, 2001, 2002
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := duovero.o
diff --git a/board/gumstix/duovero/duovero.c b/board/gumstix/duovero/duovero.c
new file mode 100644 (file)
index 0000000..81d6c82
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ * (C) Copyright 2013
+ * Gumstix Inc. <www.gumstix.com>
+ * Maintainer: Ash Charles  <ash@gumstix.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#include <common.h>
+#include <netdev.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mmc_host_def.h>
+#include <twl6030.h>
+#include <asm/emif.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+#include <asm/gpio.h>
+
+#include "duovero_mux_data.h"
+
+#define WIFI_EN        43
+
+#if defined(CONFIG_CMD_NET)
+#define SMSC_NRESET    45
+static void setup_net_chip(void);
+#endif
+
+#ifdef CONFIG_USB_EHCI
+#include <usb.h>
+#include <asm/arch/ehci.h>
+#include <asm/ehci-omap.h>
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+const struct omap_sysinfo sysinfo = {
+       "Board: duovero\n"
+};
+
+struct omap4_scrm_regs *const scrm = (struct omap4_scrm_regs *)0x4a30a000;
+
+/**
+ * @brief board_init
+ *
+ * @return 0
+ */
+int board_init(void)
+{
+       gpmc_init();
+
+       gd->bd->bi_arch_number = MACH_TYPE_OMAP4_DUOVERO;
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+       return 0;
+}
+
+/**
+ * @brief misc_init_r - Configure board specific configurations
+ * such as power configurations, ethernet initialization as phase2 of
+ * boot sequence
+ *
+ * @return 0
+ */
+int misc_init_r(void)
+{
+       int ret = 0;
+       u8 val;
+
+       /* wifi setup: first enable 32Khz clock from 6030 pmic */
+       val = 0xe1;
+       ret = i2c_write(TWL6030_CHIP_PM, 0xbe, 1, &val, 1);
+       if (ret)
+               printf("Failed to enable 32Khz clock to wifi module\n");
+
+       /* then setup WIFI_EN as an output pin and send reset pulse */
+       if (!gpio_request(WIFI_EN, "")) {
+               gpio_direction_output(WIFI_EN, 0);
+               gpio_set_value(WIFI_EN, 1);
+               udelay(1);
+               gpio_set_value(WIFI_EN, 0);
+               udelay(1);
+               gpio_set_value(WIFI_EN, 1);
+       }
+
+#if defined(CONFIG_CMD_NET)
+       setup_net_chip();
+#endif
+       return 0;
+}
+
+void set_muxconf_regs_essential(void)
+{
+       do_set_mux((*ctrl)->control_padconf_core_base,
+                  core_padconf_array_essential,
+                  sizeof(core_padconf_array_essential) /
+                  sizeof(struct pad_conf_entry));
+
+       do_set_mux((*ctrl)->control_padconf_wkup_base,
+                  wkup_padconf_array_essential,
+                  sizeof(wkup_padconf_array_essential) /
+                  sizeof(struct pad_conf_entry));
+
+       do_set_mux((*ctrl)->control_padconf_core_base,
+                  core_padconf_array_non_essential,
+                  sizeof(core_padconf_array_non_essential) /
+                  sizeof(struct pad_conf_entry));
+
+       do_set_mux((*ctrl)->control_padconf_wkup_base,
+                  wkup_padconf_array_non_essential,
+                  sizeof(wkup_padconf_array_non_essential) /
+                  sizeof(struct pad_conf_entry));
+}
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_GENERIC_MMC)
+int board_mmc_init(bd_t *bis)
+{
+       return omap_mmc_init(0, 0, 0, -1, -1);
+}
+#endif
+
+
+#if defined(CONFIG_CMD_NET)
+
+#define GPMC_SIZE_16M  0xF
+#define GPMC_BASEADDR_MASK     0x3F
+#define GPMC_CS_ENABLE         0x1
+
+static void enable_gpmc_net_config(const u32 *gpmc_config, struct gpmc_cs *cs,
+               u32 base, u32 size)
+{
+       writel(0, &cs->config7);
+       sdelay(1000);
+       /* Delay for settling */
+       writel(gpmc_config[0], &cs->config1);
+       writel(gpmc_config[1], &cs->config2);
+       writel(gpmc_config[2], &cs->config3);
+       writel(gpmc_config[3], &cs->config4);
+       writel(gpmc_config[4], &cs->config5);
+       writel(gpmc_config[5], &cs->config6);
+
+       /*
+        * Enable the config.  size is the CS size and goes in
+        * bits 11:8.  We set bit 6 to enable this CS and the base
+        * address goes into bits 5:0.
+        */
+       writel((size << 8) | (GPMC_CS_ENABLE << 6) |
+                                ((base >> 24) & GPMC_BASEADDR_MASK),
+                                &cs->config7);
+
+       sdelay(2000);
+}
+
+/* GPMC CS configuration for an SMSC LAN9221 ethernet controller */
+#define NET_LAN9221_GPMC_CONFIG1    0x2a001203
+#define NET_LAN9221_GPMC_CONFIG2    0x000a0a02
+#define NET_LAN9221_GPMC_CONFIG3    0x00020200
+#define NET_LAN9221_GPMC_CONFIG4    0x0a030a03
+#define NET_LAN9221_GPMC_CONFIG5    0x000a0a0a
+#define NET_LAN9221_GPMC_CONFIG6    0x8a070707
+#define NET_LAN9221_GPMC_CONFIG7    0x00000f6c
+
+/* GPMC definitions for LAN9221 chips on expansion boards */
+static const u32 gpmc_lan_config[] = {
+       NET_LAN9221_GPMC_CONFIG1,
+       NET_LAN9221_GPMC_CONFIG2,
+       NET_LAN9221_GPMC_CONFIG3,
+       NET_LAN9221_GPMC_CONFIG4,
+       NET_LAN9221_GPMC_CONFIG5,
+       NET_LAN9221_GPMC_CONFIG6,
+       /*CONFIG7- computed as params */
+};
+
+/*
+ * Routine: setup_net_chip
+ * Description: Setting up the configuration GPMC registers specific to the
+ *           Ethernet hardware.
+ */
+static void setup_net_chip(void)
+{
+       enable_gpmc_net_config(gpmc_lan_config, &gpmc_cfg->cs[5], 0x2C000000,
+                             GPMC_SIZE_16M);
+
+       /* Make GPIO SMSC_NRESET as output pin and send reset pulse */
+       if (!gpio_request(SMSC_NRESET, "")) {
+               gpio_direction_output(SMSC_NRESET, 0);
+               gpio_set_value(SMSC_NRESET, 1);
+               udelay(1);
+               gpio_set_value(SMSC_NRESET, 0);
+               udelay(1);
+               gpio_set_value(SMSC_NRESET, 1);
+       }
+}
+#endif
+
+int board_eth_init(bd_t *bis)
+{
+       int rc = 0;
+#ifdef CONFIG_SMC911X
+       rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
+#endif
+       return rc;
+}
+
+#ifdef CONFIG_USB_EHCI
+
+static struct omap_usbhs_board_data usbhs_bdata = {
+       .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
+       .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
+       .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
+};
+
+int ehci_hcd_init(int index, enum usb_init_type init,
+               struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+{
+       int ret;
+       unsigned int utmi_clk;
+       u32 auxclk, altclksrc;
+
+       /* Now we can enable our port clocks */
+       utmi_clk = readl((void *)CM_L3INIT_HSUSBHOST_CLKCTRL);
+       utmi_clk |= HSUSBHOST_CLKCTRL_CLKSEL_UTMI_P1_MASK;
+       setbits_le32((void *)CM_L3INIT_HSUSBHOST_CLKCTRL, utmi_clk);
+
+       auxclk = readl(&scrm->auxclk3);
+       /* Select sys_clk */
+       auxclk &= ~AUXCLK_SRCSELECT_MASK;
+       auxclk |=  AUXCLK_SRCSELECT_SYS_CLK << AUXCLK_SRCSELECT_SHIFT;
+       /* Set the divisor to 2 */
+       auxclk &= ~AUXCLK_CLKDIV_MASK;
+       auxclk |= AUXCLK_CLKDIV_2 << AUXCLK_CLKDIV_SHIFT;
+       /* Request auxilary clock #3 */
+       auxclk |= AUXCLK_ENABLE_MASK;
+       writel(auxclk, &scrm->auxclk3);
+
+       altclksrc = readl(&scrm->altclksrc);
+
+       /* Activate alternate system clock supplier */
+       altclksrc &= ~ALTCLKSRC_MODE_MASK;
+       altclksrc |= ALTCLKSRC_MODE_ACTIVE;
+
+       /* enable clocks */
+       altclksrc |= ALTCLKSRC_ENABLE_INT_MASK | ALTCLKSRC_ENABLE_EXT_MASK;
+
+       writel(altclksrc, &scrm->altclksrc);
+
+       ret = omap_ehci_hcd_init(index, &usbhs_bdata, hccr, hcor);
+       if (ret < 0)
+               return ret;
+
+       return 0;
+}
+
+int ehci_hcd_stop(int index)
+{
+       return omap_ehci_hcd_stop();
+}
+#endif
+
+/*
+ * get_board_rev() - get board revision
+ */
+u32 get_board_rev(void)
+{
+       return 0x20;
+}
diff --git a/board/gumstix/duovero/duovero_mux_data.h b/board/gumstix/duovero/duovero_mux_data.h
new file mode 100644 (file)
index 0000000..1be247b
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * (C) Copyright 2012
+ * Gumstix Incorporated, <www.gumstix.com>
+ * Maintainer: Ash Charles <ash@gumstix.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#ifndef _DUOVERO_MUX_DATA_H_
+#define _DUOVERO_MUX_DATA_H_
+
+#include <asm/arch/mux_omap4.h>
+
+const struct pad_conf_entry core_padconf_array_essential[] = {
+       {SDMMC1_CLK, (PTU | OFF_EN | OFF_OUT_PTD | M0)},         /* sdmmc1_clk */
+       {SDMMC1_CMD, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* sdmmc1_cmd */
+       {SDMMC1_DAT0, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* sdmmc1_dat0 */
+       {SDMMC1_DAT1, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* sdmmc1_dat1 */
+       {SDMMC1_DAT2, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* sdmmc1_dat2 */
+       {SDMMC1_DAT3, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* sdmmc1_dat3 */
+       {I2C1_SCL, (PTU | IEN | M0)},                           /* i2c1_scl */
+       {I2C1_SDA, (PTU | IEN | M0)},                           /* i2c1_sda */
+       {I2C2_SCL, (PTU | IEN | M0)},                           /* i2c2_scl */
+       {I2C2_SDA, (PTU | IEN | M0)},                           /* i2c2_sda */
+       {I2C3_SCL, (PTU | IEN | M0)},                           /* i2c3_scl */
+       {I2C3_SDA, (PTU | IEN | M0)},                           /* i2c3_sda */
+       {I2C4_SCL, (PTU | IEN | M0)},                           /* i2c4_scl */
+       {I2C4_SDA, (PTU | IEN | M0)},                           /* i2c4_sda */
+       {UART3_CTS_RCTX, (PTU | IEN | M0)},                     /* uart3_tx */
+       {UART3_RTS_SD, (M0)},                                   /* uart3_rts_sd */
+       {UART3_RX_IRRX, (PTU | IEN | M0)},                      /* uart3_rx */
+       {UART3_TX_IRTX, (M0)}                                   /* uart3_tx */
+};
+
+const struct pad_conf_entry wkup_padconf_array_essential[] = {
+       {PAD1_SR_SCL, (PTU | IEN | M0)},                        /* sr_scl */
+       {PAD0_SR_SDA, (PTU | IEN | M0)},                        /* sr_sda */
+       {PAD1_SYS_32K, (IEN | M0)}                              /* sys_32k */
+};
+
+const struct pad_conf_entry core_padconf_array_non_essential[] = {
+       {GPMC_AD0, (PTU | IEN | M0)},                           /* gpmc_ad0 */
+       {GPMC_AD1, (PTU | IEN | M0)},                           /* gpmc_ad1 */
+       {GPMC_AD2, (PTU | IEN | M0)},                           /* gpmc_ad2 */
+       {GPMC_AD3, (PTU | IEN | M0)},                           /* gpmc_ad3 */
+       {GPMC_AD4, (PTU | IEN | M0)},                           /* gpmc_ad4 */
+       {GPMC_AD5, (PTU | IEN | M0)},                           /* gpmc_ad5 */
+       {GPMC_AD6, (PTU | IEN | M0)},                           /* gpmc_ad6 */
+       {GPMC_AD7, (PTU | IEN | M0)},                           /* gpmc_ad7 */
+       {GPMC_AD8, (PTU | IEN | M0)},                           /* gpmc_ad8 */
+       {GPMC_AD9, (PTU | IEN | M0)},                           /* gpmc_ad9 */
+       {GPMC_AD10, (PTU | IEN | M0)},                          /* gpmc_ad10 */
+       {GPMC_AD11, (PTU | IEN | M0)},                          /* gpmc_ad11 */
+       {GPMC_AD12, (PTU | IEN | M0)},                          /* gpmc_ad12 */
+       {GPMC_AD13, (PTU | IEN | M0)},                          /* gpmc_ad13 */
+       {GPMC_AD14, (PTU | IEN | M0)},                          /* gpmc_ad14 */
+       {GPMC_AD15, (PTU | IEN | M0)},                          /* gpmc_ad15 */
+       {GPMC_A16, (PTU | IEN | M3)},                           /* gpio_40 */
+       {GPMC_A17, (PTU | IEN | M3)},                           /* gpio_41 - hdmi_ls_oe */
+       {GPMC_A18, (PTU | IEN | M3)},                           /* gpio_42 */
+       {GPMC_A19, (PTU | IEN | M3)},                           /* gpio_43 - wifi_en */
+       {GPMC_A20, (PTU | IEN | M3)},                           /* gpio_44 - eth_irq */
+       {GPMC_A21, (PTU | IEN | M3)},                           /* gpio_45 - eth_nreset */
+       {GPMC_A22, (PTU | IEN | M3)},                           /* gpio_46 - eth_pme */
+       {GPMC_A23, (PTU | IEN | M3)},                           /* gpio_47 */
+       {GPMC_A24, (PTU | IEN | M3)},                           /* gpio_48 - eth_mdix */
+       {GPMC_A25, (PTU | IEN | M3)},                           /* gpio_49 - bt_wakeup */
+       {GPMC_NCS0, (PTU | M0)},                                /* gpmc_ncs0 */
+       {GPMC_NCS1, (PTU | M0)},                                /* gpmc_ncs1 */
+       {GPMC_NCS2, (PTU | M0)},                                /* gpmc_ncs2 */
+       {GPMC_NCS3, (PTU | IEN | M3)},                          /* gpio_53  */
+       {C2C_DATA12, (PTU | M0)},                               /* gpmc_ncs4 */
+       {C2C_DATA13, (PTU | M0)},                               /* gpmc_ncs5 - eth_cs */
+       {GPMC_NWP, (PTU | IEN | M0)},                           /* gpmc_nwp */
+       {GPMC_CLK, (PTU | IEN | M0)},                           /* gpmc_clk */
+       {GPMC_NADV_ALE, (PTU | M0)},                            /* gpmc_nadv_ale */
+       {GPMC_NBE0_CLE, (PTU | M0)},                            /* gpmc_nbe0_cle */
+       {GPMC_NBE1, (PTU | M0)},                                /* gpmc_nbe1 */
+       {GPMC_WAIT0, (PTU | IEN | M0)},                         /* gpmc_wait0 */
+       {GPMC_WAIT1,  (PTU | IEN | M0)},                        /* gpio_62 - usbh_nreset */
+       {GPMC_NOE, (PTU | M0)},                                 /* gpmc_noe */
+       {GPMC_NWE, (PTU | M0)},                                 /* gpmc_nwe */
+       {HDMI_HPD, (PTD | IEN | M3)},                           /* gpio_63 - hdmi_hpd */
+       {HDMI_CEC, (PTU | IEN | M0)},                           /* hdmi_cec */
+       {HDMI_DDC_SCL, (M0)},                                   /* hdmi_ddc_scl */
+       {HDMI_DDC_SDA, (IEN | M0)},                             /* hdmi_ddc_sda */
+       {CSI21_DX0, (IEN | M0)},                                /* csi21_dx0 */
+       {CSI21_DY0, (IEN | M0)},                                /* csi21_dy0 */
+       {CSI21_DX1, (IEN | M0)},                                /* csi21_dx1 */
+       {CSI21_DY1, (IEN | M0)},                                /* csi21_dy1 */
+       {CSI21_DX2, (IEN | M0)},                                /* csi21_dx2 */
+       {CSI21_DY2, (IEN | M0)},                                /* csi21_dy2 */
+       {CSI21_DX3, (IEN | M0)},                                /* csi21_dx3 */
+       {CSI21_DY3, (IEN | M0)},                                /* csi21_dy3 */
+       {CSI21_DX4, (IEN | M0)},                                /* csi21_dx4 */
+       {CSI21_DY4, (IEN | M0)},                                /* csi21_dy4 */
+       {CSI22_DX0, (IEN | M0)},                                /* csi22_dx0 */
+       {CSI22_DY0, (IEN | M0)},                                /* csi22_dy0 */
+       {CSI22_DX1, (IEN | M0)},                                /* csi22_dx1 */
+       {CSI22_DY1, (IEN | M0)},                                /* csi22_dy1 */
+       {USBB1_ULPITLL_CLK, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M4)},/* usbb1_ulpiphy_clk */
+       {USBB1_ULPITLL_STP, (OFF_EN | OFF_OUT_PTD | M4)},               /* usbb1_ulpiphy_stp */
+       {USBB1_ULPITLL_DIR, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},     /* usbb1_ulpiphy_dir */
+       {USBB1_ULPITLL_NXT, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},     /* usbb1_ulpiphy_nxt */
+       {USBB1_ULPITLL_DAT0, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat0 */
+       {USBB1_ULPITLL_DAT1, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat1 */
+       {USBB1_ULPITLL_DAT2, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat2 */
+       {USBB1_ULPITLL_DAT3, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat3 */
+       {USBB1_ULPITLL_DAT4, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat4 */
+       {USBB1_ULPITLL_DAT5, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat5 */
+       {USBB1_ULPITLL_DAT6, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat6 */
+       {USBB1_ULPITLL_DAT7, (IEN | OFF_EN | OFF_PD | OFF_IN | M4)},    /* usbb1_ulpiphy_dat7 */
+       {USBB1_HSIC_DATA, (PTU | IEN | M3)},                            /* gpio_96 - usbh_cpen */
+       {USBB1_HSIC_STROBE, (PTU | IEN | M3)},                          /* gpio_97 - usbh_reset */
+       {ABE_MCBSP2_CLKX, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},       /* abe_mcbsp2_clkx */
+       {ABE_MCBSP2_DR, (IEN | OFF_EN | OFF_OUT_PTD | M0)},             /* abe_mcbsp2_dr */
+       {ABE_MCBSP2_DX, (OFF_EN | OFF_OUT_PTD | M0)},                   /* abe_mcbsp2_dx */
+       {ABE_MCBSP2_FSX, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},        /* abe_mcbsp2_fsx */
+       {ABE_PDM_UL_DATA, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* abe_pdm_ul_data */
+       {ABE_PDM_DL_DATA, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)}, /* abe_pdm_dl_data */
+       {ABE_PDM_FRAME, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},   /* abe_pdm_frame */
+       {ABE_PDM_LB_CLK, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},  /* abe_pdm_lb_clk */
+       {ABE_CLKS, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},        /* abe_clks */
+       {ABE_DMIC_CLK1, (M0)},                                          /* abe_dmic_clk1 */
+       {ABE_DMIC_DIN1, (IEN | M0)},                                    /* abe_dmic_din1 */
+       {ABE_DMIC_DIN2, (IEN | M0)},                                    /* abe_dmic_din2 */
+       {ABE_DMIC_DIN3, (IEN | M0)},                                    /* abe_dmic_din3 */
+       {UART2_CTS, (PTU | IEN | M0)},                                  /* uart2_cts */
+       {UART2_RTS, (M0)},                                              /* uart2_rts */
+       {UART2_RX, (PTU | IEN | M0)},                                   /* uart2_rx */
+       {UART2_TX, (M0)},                                               /* uart2_tx */
+       {HDQ_SIO, (M0)},                                                /* hdq-sio */
+       {MCSPI1_CLK, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},            /* mcspi1_clk */
+       {MCSPI1_SOMI, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},           /* mcspi1_somi */
+       {MCSPI1_SIMO, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},           /* mcspi1_simo */
+       {MCSPI1_CS0, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},      /* mcspi1_cs0 */
+       {MCSPI1_CS1, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},      /* mcspi1_cs1 */
+       {SDMMC5_CLK, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},      /* sdmmc5_clk */
+       {SDMMC5_CMD, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},      /* sdmmc5_cmd */
+       {SDMMC5_DAT0, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},     /* sdmmc5_dat0 */
+       {SDMMC5_DAT1, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},     /* sdmmc5_dat1 */
+       {SDMMC5_DAT2, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},     /* sdmmc5_dat2 */
+       {SDMMC5_DAT3, (PTU | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},     /* sdmmc5_dat3 */
+       {MCSPI4_CLK, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},            /* mcspi4_clk */
+       {MCSPI4_SIMO, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},           /* mcspi4_simo */
+       {MCSPI4_SOMI, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},           /* mcspi4_somi */
+       {MCSPI4_CS0, (PTD | IEN | OFF_EN | OFF_PD | OFF_IN | M0)},      /* mcspi4_cs0 */
+       {UART4_RX, (IEN | PTU | M0)},                                   /* uart4_rx */
+       {UART4_TX, (M0)},                                               /* uart4_tx */
+       {USBB2_ULPITLL_CLK, (PTU | IEN | M3)},                          /* gpio_157 - start_adc */
+       {USBB2_ULPITLL_STP, (PTU | IEN | M3)},                          /* gpio_158 - spi_nirq */
+       {USBB2_ULPITLL_DIR, (PTU | IEN | M3)},                          /* gpio_159 - bt_nreset */
+       {USBB2_ULPITLL_NXT, (PTU | IEN | M3)},                          /* gpio_160 - audio_pwron*/
+       {USBB2_ULPITLL_DAT0, (PTU | IEN | M3)},                         /* gpio_161 - bid_0 */
+       {USBB2_ULPITLL_DAT1, (PTU | IEN | M3)},                         /* gpio_162 - bid_1 */
+       {USBB2_ULPITLL_DAT2, (PTU | IEN | M3)},                         /* gpio_163 - bid_2 */
+       {USBB2_ULPITLL_DAT3, (PTU | IEN | M3)},                         /* gpio_164 - bid_3 */
+       {USBB2_ULPITLL_DAT4, (PTU | IEN | M3)},                         /* gpio_165 - bid_4 */
+       {USBB2_ULPITLL_DAT5, (PTU | IEN | M3)},                         /* gpio_166 - ts_irq*/
+       {USBB2_ULPITLL_DAT6, (PTU | IEN | M3)},                         /* gpio_167 - gps_pps */
+       {USBB2_ULPITLL_DAT7, (PTU | IEN | M3)},                         /* gpio_168 */
+       {USBB2_HSIC_DATA, (PTU | IEN | M3)},                            /* gpio_169 */
+       {USBB2_HSIC_STROBE, (PTU | IEN | M3)},                          /* gpio_170 */
+       {UNIPRO_TX1, (PTU | IEN | M3)},                                 /* gpio_173 */
+       {USBA0_OTG_CE, (PTD | OFF_EN | OFF_PD | OFF_OUT_PTD | M0)},     /* usba0_otg_ce */
+       {USBA0_OTG_DP, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},          /* usba0_otg_dp */
+       {USBA0_OTG_DM, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},          /* usba0_otg_dm */
+       {SYS_NIRQ1, (PTU | IEN | M0)},                                  /* sys_nirq1 */
+       {SYS_NIRQ2, (PTU | IEN | M0)},                                  /* sys_nirq2 */
+       {SYS_BOOT0, (M0)},                                              /* sys_boot0 */
+       {SYS_BOOT1, (M0)},                                              /* sys_boot1 */
+       {SYS_BOOT2, (M0)},                                              /* sys_boot2 */
+       {SYS_BOOT3, (M0)},                                              /* sys_boot3 */
+       {SYS_BOOT4, (M0)},                                              /* sys_boot4 */
+       {SYS_BOOT5, (M0)},                                              /* sys_boot5 */
+       {DPM_EMU0, (IEN | M0)},                                         /* dpm_emu0 */
+       {DPM_EMU1, (IEN | M0)},                                         /* dpm_emu1 */
+       {DPM_EMU16, (PTU | IEN | M3)},                                  /* gpio_27 */
+       {DPM_EMU17, (PTU | IEN | M3)},                                  /* gpio_28 */
+       {DPM_EMU18, (PTU | IEN | M3)},                                  /* gpio_29 */
+       {DPM_EMU19, (PTU | IEN | M3)},                                  /* gpio_30 */
+};
+
+const struct pad_conf_entry wkup_padconf_array_non_essential[] = {
+       {PAD1_FREF_XTAL_IN, (M0)},                                      /* fref_xtal_in  */
+       {PAD0_FREF_SLICER_IN, (M0)},                                    /* fref_slicer_in */
+       {PAD1_FREF_CLK_IOREQ, (M0)},                                    /* fref_clk_ioreq */
+       {PAD0_FREF_CLK0_OUT, (M7)},                                     /* safe mode */
+       {PAD1_FREF_CLK3_REQ, M7},                                       /* safe mode */
+       {PAD0_FREF_CLK3_OUT, (M0)},                                     /* fref_clk3_out */
+       {PAD0_SYS_NRESPWRON, (M0)},                                     /* sys_nrespwron */
+       {PAD1_SYS_NRESWARM, (M0)},                                      /* sys_nreswarm */
+       {PAD0_SYS_PWR_REQ, (PTU | M0)},                                 /* sys_pwr_req */
+       {PAD1_SYS_PWRON_RESET, (M3)},                                   /* gpio_wk29 */
+       {PAD0_SYS_BOOT6, (M0)},                                         /* sys_boot6 */
+       {PAD1_SYS_BOOT7, (M0)},                                         /* sys_boot7 */
+};
+
+
+#endif /* _DUOVERO_MUX_DATA_H_ */
diff --git a/board/gumstix/pepper/Makefile b/board/gumstix/pepper/Makefile
new file mode 100644 (file)
index 0000000..ecb1d61
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# Makefile
+#
+# Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifdef CONFIG_SPL_BUILD
+obj-y  += mux.o
+endif
+
+obj-y  += board.o
diff --git a/board/gumstix/pepper/board.c b/board/gumstix/pepper/board.c
new file mode 100644 (file)
index 0000000..75aac49
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Board functions for Gumstix Pepper and AM335x-based boards
+ *
+ * Copyright (C) 2014, Gumstix, Incorporated - http://www.gumstix.com/
+ * Based on board/ti/am335x/board.c from Texas Instruments, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <spl.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
+#include <asm/arch/ddr_defs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mem.h>
+#include <asm/io.h>
+#include <asm/emif.h>
+#include <asm/gpio.h>
+#include <i2c.h>
+#include <miiphy.h>
+#include <cpsw.h>
+#include <power/tps65217.h>
+#include <environment.h>
+#include <watchdog.h>
+#include "board.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_SPL_BUILD
+static const struct ddr_data ddr2_data = {
+       .datardsratio0 = ((MT47H128M16RT25E_RD_DQS<<30) |
+                         (MT47H128M16RT25E_RD_DQS<<20) |
+                         (MT47H128M16RT25E_RD_DQS<<10) |
+                         (MT47H128M16RT25E_RD_DQS<<0)),
+       .datawdsratio0 = ((MT47H128M16RT25E_WR_DQS<<30) |
+                         (MT47H128M16RT25E_WR_DQS<<20) |
+                         (MT47H128M16RT25E_WR_DQS<<10) |
+                         (MT47H128M16RT25E_WR_DQS<<0)),
+       .datawiratio0 = ((MT47H128M16RT25E_PHY_WRLVL<<30) |
+                        (MT47H128M16RT25E_PHY_WRLVL<<20) |
+                        (MT47H128M16RT25E_PHY_WRLVL<<10) |
+                        (MT47H128M16RT25E_PHY_WRLVL<<0)),
+       .datagiratio0 = ((MT47H128M16RT25E_PHY_GATELVL<<30) |
+                        (MT47H128M16RT25E_PHY_GATELVL<<20) |
+                        (MT47H128M16RT25E_PHY_GATELVL<<10) |
+                        (MT47H128M16RT25E_PHY_GATELVL<<0)),
+       .datafwsratio0 = ((MT47H128M16RT25E_PHY_FIFO_WE<<30) |
+                         (MT47H128M16RT25E_PHY_FIFO_WE<<20) |
+                         (MT47H128M16RT25E_PHY_FIFO_WE<<10) |
+                         (MT47H128M16RT25E_PHY_FIFO_WE<<0)),
+       .datawrsratio0 = ((MT47H128M16RT25E_PHY_WR_DATA<<30) |
+                         (MT47H128M16RT25E_PHY_WR_DATA<<20) |
+                         (MT47H128M16RT25E_PHY_WR_DATA<<10) |
+                         (MT47H128M16RT25E_PHY_WR_DATA<<0)),
+};
+
+static const struct cmd_control ddr2_cmd_ctrl_data = {
+       .cmd0csratio = MT47H128M16RT25E_RATIO,
+       .cmd0iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
+
+       .cmd1csratio = MT47H128M16RT25E_RATIO,
+       .cmd1iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
+
+       .cmd2csratio = MT47H128M16RT25E_RATIO,
+       .cmd2iclkout = MT47H128M16RT25E_INVERT_CLKOUT,
+};
+
+static const struct emif_regs ddr2_emif_reg_data = {
+       .sdram_config = MT47H128M16RT25E_EMIF_SDCFG,
+       .ref_ctrl = MT47H128M16RT25E_EMIF_SDREF,
+       .sdram_tim1 = MT47H128M16RT25E_EMIF_TIM1,
+       .sdram_tim2 = MT47H128M16RT25E_EMIF_TIM2,
+       .sdram_tim3 = MT47H128M16RT25E_EMIF_TIM3,
+       .emif_ddr_phy_ctlr_1 = MT47H128M16RT25E_EMIF_READ_LATENCY,
+};
+
+#ifdef CONFIG_SPL_OS_BOOT
+int spl_start_uboot(void)
+{
+       /* break into full u-boot on 'c' */
+       return serial_tstc() && serial_getc() == 'c';
+}
+#endif
+
+#define OSC    (V_OSCK/1000000)
+const struct dpll_params dpll_ddr = {266, OSC-1, 1, -1, -1, -1, -1};
+
+const struct dpll_params *get_dpll_ddr_params(void)
+{
+       return &dpll_ddr;
+}
+
+void set_uart_mux_conf(void)
+{
+       enable_uart0_pin_mux();
+}
+
+void set_mux_conf_regs(void)
+{
+       enable_board_pin_mux();
+}
+
+const struct ctrl_ioregs ioregs = {
+       .cm0ioctl               = MT47H128M16RT25E_IOCTRL_VALUE,
+       .cm1ioctl               = MT47H128M16RT25E_IOCTRL_VALUE,
+       .cm2ioctl               = MT47H128M16RT25E_IOCTRL_VALUE,
+       .dt0ioctl               = MT47H128M16RT25E_IOCTRL_VALUE,
+       .dt1ioctl               = MT47H128M16RT25E_IOCTRL_VALUE,
+};
+
+void sdram_init(void)
+{
+       config_ddr(266, &ioregs, &ddr2_data,
+                  &ddr2_cmd_ctrl_data, &ddr2_emif_reg_data, 0);
+}
+#endif
+
+int board_init(void)
+{
+#if defined(CONFIG_HW_WATCHDOG)
+       hw_watchdog_init();
+#endif
+
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+       gpmc_init();
+
+       return 0;
+}
+
+#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
+       (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
+static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
+
+static void cpsw_control(int enabled)
+{
+       /* VTP can be added here */
+
+       return;
+}
+
+static struct cpsw_slave_data cpsw_slaves[] = {
+       {
+               .slave_reg_ofs  = 0x208,
+               .sliver_reg_ofs = 0xd80,
+               .phy_addr       = 0,
+               .phy_if         = PHY_INTERFACE_MODE_RGMII,
+       },
+};
+
+static struct cpsw_platform_data cpsw_data = {
+       .mdio_base              = CPSW_MDIO_BASE,
+       .cpsw_base              = CPSW_BASE,
+       .mdio_div               = 0xff,
+       .channels               = 8,
+       .cpdma_reg_ofs          = 0x800,
+       .slaves                 = 1,
+       .slave_data             = cpsw_slaves,
+       .ale_reg_ofs            = 0xd00,
+       .ale_entries            = 1024,
+       .host_port_reg_ofs      = 0x108,
+       .hw_stats_reg_ofs       = 0x900,
+       .bd_ram_ofs             = 0x2000,
+       .mac_control            = (1 << 5),
+       .control                = cpsw_control,
+       .host_port_num          = 0,
+       .version                = CPSW_CTRL_VERSION_2,
+};
+
+int board_eth_init(bd_t *bis)
+{
+       int rv, n = 0;
+       uint8_t mac_addr[6];
+       uint32_t mac_hi, mac_lo;
+       const char *devname;
+
+       if (!eth_getenv_enetaddr("ethaddr", mac_addr)) {
+               /* try reading mac address from efuse */
+               mac_lo = readl(&cdev->macid0l);
+               mac_hi = readl(&cdev->macid0h);
+               mac_addr[0] = mac_hi & 0xFF;
+               mac_addr[1] = (mac_hi & 0xFF00) >> 8;
+               mac_addr[2] = (mac_hi & 0xFF0000) >> 16;
+               mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
+               mac_addr[4] = mac_lo & 0xFF;
+               mac_addr[5] = (mac_lo & 0xFF00) >> 8;
+               if (is_valid_ether_addr(mac_addr))
+                       eth_setenv_enetaddr("ethaddr", mac_addr);
+       }
+
+       writel((RGMII_MODE_ENABLE | RGMII_INT_DELAY), &cdev->miisel);
+
+       rv = cpsw_register(&cpsw_data);
+       if (rv < 0)
+               printf("Error %d registering CPSW switch\n", rv);
+       else
+               n += rv;
+
+       /*
+        *
+        * CPSW RGMII Internal Delay Mode is not supported in all PVT
+        * operating points.  So we must set the TX clock delay feature
+        * in the KSZ9021 PHY.  Since we only support a single ethernet
+        * device in U-Boot, we only do this for the current instance.
+        */
+       devname = miiphy_get_current_dev();
+       /* max rx/tx clock delay, min rx/tx control delay */
+       miiphy_write(devname, 0x0, 0x0b, 0x8104);
+       miiphy_write(devname, 0x0, 0xc, 0xa0a0);
+
+       /* min rx data delay */
+       miiphy_write(devname, 0x0, 0x0b, 0x8105);
+       miiphy_write(devname, 0x0, 0x0c, 0x0000);
+
+       /* min tx data delay */
+       miiphy_write(devname, 0x0, 0x0b, 0x8106);
+       miiphy_write(devname, 0x0, 0x0c, 0x0000);
+
+       return n;
+}
+#endif
diff --git a/board/gumstix/pepper/board.h b/board/gumstix/pepper/board.h
new file mode 100644 (file)
index 0000000..0512735
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Gumstix Pepper and AM335x-based boards information header
+ *
+ * Copyright (C) 2014, Gumstix, Inc. - http://www.gumstix.com/
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+/*
+ * We must be able to enable uart0, for initial output. We then have a
+ * main pinmux function that can be overridden to enable all other pinmux that
+ * is required on the board.
+ */
+void enable_uart0_pin_mux(void);
+void enable_board_pin_mux(void);
+#endif
diff --git a/board/gumstix/pepper/mux.c b/board/gumstix/pepper/mux.c
new file mode 100644 (file)
index 0000000..50b1266
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Muxing for Gumstix Pepper and AM335x-based boards
+ *
+ * Copyright (C) 2014, Gumstix, Incorporated - http://www.gumstix.com/
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#include <common.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/mux.h>
+#include <asm/io.h>
+#include <i2c.h>
+#include "board.h"
+
+static struct module_pin_mux uart0_pin_mux[] = {
+       {OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)},  /* UART0_RXD */
+       {OFFSET(uart0_txd), (MODE(0) | PULLUDEN)},              /* UART0_TXD */
+       {-1},
+};
+
+static struct module_pin_mux mmc0_pin_mux[] = {
+       {OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)},  /* MMC0_DAT3 */
+       {OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)},  /* MMC0_DAT2 */
+       {OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)},  /* MMC0_DAT1 */
+       {OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)},  /* MMC0_DAT0 */
+       {OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)},   /* MMC0_CLK */
+       {OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)},   /* MMC0_CMD */
+       {OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)},   /* MMC0_CD */
+       {-1},
+};
+
+static struct module_pin_mux i2c0_pin_mux[] = {
+       /* I2C_DATA */
+       {OFFSET(i2c0_sda), (MODE(0) | RXACTIVE | PULLUDEN | SLEWCTRL)},
+       /* I2C_SCLK */
+       {OFFSET(i2c0_scl), (MODE(0) | RXACTIVE | PULLUDEN | SLEWCTRL)},
+       {-1},
+};
+
+static struct module_pin_mux rgmii1_pin_mux[] = {
+       {OFFSET(mii1_txen), MODE(2)},                   /* RGMII1_TCTL */
+       {OFFSET(mii1_rxdv), MODE(2) | RXACTIVE},        /* RGMII1_RCTL */
+       {OFFSET(mii1_txd3), MODE(2)},                   /* RGMII1_TD3 */
+       {OFFSET(mii1_txd2), MODE(2)},                   /* RGMII1_TD2 */
+       {OFFSET(mii1_txd1), MODE(2)},                   /* RGMII1_TD1 */
+       {OFFSET(mii1_txd0), MODE(2)},                   /* RGMII1_TD0 */
+       {OFFSET(mii1_txclk), MODE(2)},                  /* RGMII1_TCLK */
+       {OFFSET(mii1_rxclk), MODE(2) | RXACTIVE},       /* RGMII1_RCLK */
+       {OFFSET(mii1_rxd3), MODE(2) | RXACTIVE},        /* RGMII1_RD3 */
+       {OFFSET(mii1_rxd2), MODE(2) | RXACTIVE},        /* RGMII1_RD2 */
+       {OFFSET(mii1_rxd1), MODE(2) | RXACTIVE},        /* RGMII1_RD1 */
+       {OFFSET(mii1_rxd0), MODE(2) | RXACTIVE},        /* RGMII1_RD0 */
+       {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */
+       {OFFSET(mdio_clk), MODE(0) | PULLUP_EN},        /* MDIO_CLK */
+       {OFFSET(rmii1_refclk), MODE(7) | RXACTIVE},     /* ETH_INT */
+       {OFFSET(mii1_col), MODE(7) | PULLUP_EN},        /* PHY_NRESET */
+       {OFFSET(xdma_event_intr1), MODE(3)},
+       {-1},
+};
+
+void enable_uart0_pin_mux(void)
+{
+       configure_module_pin_mux(uart0_pin_mux);
+}
+
+/*
+ * Do board-specific muxes.
+ */
+void enable_board_pin_mux(void)
+{
+       /* I2C0 */
+       configure_module_pin_mux(i2c0_pin_mux);
+       /* SD Card */
+       configure_module_pin_mux(mmc0_pin_mux);
+       /* Ethernet pinmux. */
+       configure_module_pin_mux(rgmii1_pin_mux);
+}
index c8ae5128b0e269df1f5ee8d5cdbb77b45f770988..ae526334267bdaff8b3b97413640ca31dee70944 100644 (file)
@@ -13,7 +13,6 @@
 #include <common.h>
 #include <net.h>
 #include <netdev.h>
-#include <asm/net.h>
 
 int checkboard(void)
 {
@@ -33,7 +32,7 @@ int misc_init_r(void)
        uchar enetaddr[6];
        if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(enetaddr);
+               eth_random_addr(enetaddr);
                eth_setenv_enetaddr("ethaddr", enetaddr);
        }
 
index 95a19cdb2c1869c880e850b25648339530010c85..6bc8eb85eaa9a9c58ec6da57c054c137c0464e9c 100644 (file)
@@ -79,7 +79,7 @@ int get_scl(void)
 
 
 #define ZL30158_RST    8
-#define ZL30343_RST    9
+#define BFTIC4_RST     0
 
 int board_early_init_f(void)
 {
@@ -88,13 +88,15 @@ int board_early_init_f(void)
        /* board only uses the DDR_MCK0, so disable the DDR_MCK1/2/3 */
        setbits_be32(&gur->ddrclkdr, 0x001f000f);
 
-       /* take the Zarlinks out of reset as soon as possible */
-       qrio_prst(ZL30158_RST, false, false);
-       qrio_prst(ZL30343_RST, false, false);
+       /* set the BFTIC's prstcfg to reset at power-up and unit reset only */
+       qrio_prstcfg(BFTIC4_RST, PRSTCFG_POWUP_UNIT_RST);
+       /* and enable WD on it */
+       qrio_wdmask(BFTIC4_RST, true);
 
-       /* and set their reset to power-up only */
-       qrio_prstcfg(ZL30158_RST, PRSTCFG_POWUP_RST);
-       qrio_prstcfg(ZL30343_RST, PRSTCFG_POWUP_RST);
+       /* set the ZL30138's prstcfg to reset at power-up and unit reset only */
+       qrio_prstcfg(ZL30158_RST, PRSTCFG_POWUP_UNIT_RST);
+       /* and take it out of reset as soon as possible (needed for Hooper) */
+       qrio_prst(ZL30158_RST, false, false);
 
        return 0;
 }
@@ -113,6 +115,12 @@ int board_early_init_r(void)
        if (ret)
                printf("error triggering PCIe FPGA config\n");
 
+       /* enable the Unit LED (red) & Boot LED (on) */
+       qrio_set_leds();
+
+       /* enable Application Buffer */
+       qrio_enable_app_buffer();
+
        return ret;
 }
 
@@ -121,16 +129,37 @@ unsigned long get_board_sys_clk(unsigned long dummy)
        return 66666666;
 }
 
+#define ETH_FRONT_PHY_RST      15
+#define QSFP2_RST              11
+#define QSFP1_RST              10
+#define ZL30343_RST            9
+
 int misc_init_f(void)
 {
        /* configure QRIO pis for i2c deblocking */
        i2c_deblock_gpio_cfg();
 
+       /* configure the front phy's prstcfg and take it out of reset */
+       qrio_prstcfg(ETH_FRONT_PHY_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
+       qrio_prst(ETH_FRONT_PHY_RST, false, false);
+
+       /* set the ZL30343 prstcfg to reset at power-up and unit reset only */
+       qrio_prstcfg(ZL30343_RST, PRSTCFG_POWUP_UNIT_RST);
+       /* and enable the WD on it */
+       qrio_wdmask(ZL30343_RST, true);
+
+       /* set the QSFPs' prstcfg to reset at power-up and unit rst only */
+       qrio_prstcfg(QSFP1_RST, PRSTCFG_POWUP_UNIT_RST);
+       qrio_prstcfg(QSFP2_RST, PRSTCFG_POWUP_UNIT_RST);
+
+       /* and enable the WD on them */
+       qrio_wdmask(QSFP1_RST, true);
+       qrio_wdmask(QSFP2_RST, true);
+
        return 0;
 }
 
 #define NUM_SRDS_BANKS 2
-#define PHY_RST                15
 
 int misc_init_r(void)
 {
@@ -151,9 +180,6 @@ int misc_init_r(void)
                }
        }
 
-       /* take the mgmt eth phy out of reset */
-       qrio_prst(PHY_RST, false, false);
-
        return 0;
 }
 
@@ -166,9 +192,23 @@ int hush_init_var(void)
 #endif
 
 #if defined(CONFIG_LAST_STAGE_INIT)
+
 int last_stage_init(void)
 {
+#if defined(CONFIG_KMCOGE4)
+       /* on KMCOGE4, the BFTIC4 is on the LBAPP2 */
+       struct bfticu_iomap *bftic4 =
+               (struct bfticu_iomap *)CONFIG_SYS_LBAPP2_BASE;
+       u8 dip_switch = in_8((u8 *)&(bftic4->mswitch)) & BFTICU_DIPSWITCH_MASK;
+
+       if (dip_switch != 0) {
+               /* start bootloader */
+               puts("DIP:   Enabled\n");
+               setenv("actual_bank", "0");
+       }
+#endif
        set_km_env();
+
        return 0;
 }
 #endif
@@ -232,3 +272,16 @@ void ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_mac_addresses(blob);
 #endif
 }
+
+#if defined(CONFIG_POST)
+
+/* DIC26_SELFTEST GPIO used to start factory test sw */
+#define SELFTEST_PORT  GPIO_A
+#define SELFTEST_PIN   31
+
+int post_hotkeys_pressed(void)
+{
+       qrio_gpio_direction_input(SELFTEST_PORT, SELFTEST_PIN);
+       return qrio_get_gpio(SELFTEST_PORT, SELFTEST_PIN);
+}
+#endif
index 0267596e4e5eef26eabafa211a06d95e94a25334..afede994f17367ca4d86e7f1504285a488ce33ef 100644 (file)
@@ -20,6 +20,9 @@ void qrio_gpio_direction_input(u8 port_off, u8 gpio_nr);
 #define PRSTCFG_POWUP_RST              0x3
 
 void qrio_prst(u8 bit, bool en, bool wden);
+void qrio_wdmask(u8 bit, bool wden);
 void qrio_prstcfg(u8 bit, u8 mode);
+void qrio_set_leds(void);
+void qrio_enable_app_buffer(void);
 
 void pci_of_setup(void *blob, bd_t *bd);
index 9af8bd5b57af25b9d0db89f11e1b43671c5e740a..1e0a171d88b4e0d2270c38c6c5cb083b67c9ad82 100644 (file)
@@ -8,16 +8,47 @@
 #
 
 #PBI commands
-#Workaround for A-006559 needed for rev 2.0 of P2041 silicon
-#Freescale's errarta sheet suggests it may be done with PBI
+#Configure ALTCBAR for DCSR -> DCSR@89000000
+091380c0 000009C4
 09000010 00000000
+091380c0 000009C4
 09000014 00000000
+091380c0 000009C4
 09000018 81d00000
-09021008 0000f000
-09021028 0000f000
-09021048 0000f000
-09021068 0000f000
+#Workaround for A-004849
+091380c0 000009C4
+890B0050 00000002
+091380c0 000009C4
+890B0054 00000002
+091380c0 000009C4
+890B0058 00000002
+091380c0 000009C4
+890B005C 00000002
+091380c0 000009C4
+890B0090 00000002
+091380c0 000009C4
+890B0094 00000002
+091380c0 000009C4
+890B0098 00000002
+091380c0 000009C4
+890B009C 00000002
+091380c0 000009C4
+890B0108 00000012
+091380c0 000009C4
+#Workaround for A-006559 needed for rev 2.0 of P2041 silicon
+89021008 0000f000
+091380c0 000009C4
+89021028 0000f000
+091380c0 000009C4
+89021048 0000f000
+091380c0 000009C4
+89021068 0000f000
+091380c0 000009C4
+#Flush PBL data
+09138000 00000000
+#Disable ALTCBAR
 09000018 00000000
+091380c0 000009C4
 #Initialize CPC1 as 1MB SRAM
 09010000 00200400
 09138000 00000000
index a484eb574955ad6afc1de8f9c66ed292a12f46ed..2b0b054a11c71822f76781ab29d02e8079d85536 100644 (file)
@@ -94,20 +94,23 @@ err_out:
 }
 
 #define PCIE_SW_RST    14
-#define PEXHC_SW_RST   13
-#define HOOPER_SW_RST  12
+#define PEXHC_RST      13
+#define HOOPER_RST     12
 
 void pci_init_board(void)
 {
-       /* first wait for the PCIe FPGA to be configured
+       qrio_prstcfg(PCIE_SW_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
+       qrio_prstcfg(PEXHC_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
+       qrio_prstcfg(HOOPER_RST, PRSTCFG_POWUP_UNIT_CORE_RST);
+
+       /* wait for the PCIe FPGA to be configured
         * it has been triggered earlier in board_early_init_r */
-       int ret = wait_for_fpga_config();
-       if (ret)
+       if (wait_for_fpga_config())
                printf("error finishing PCIe FPGA config\n");
 
        qrio_prst(PCIE_SW_RST, false, false);
-       qrio_prst(PEXHC_SW_RST, false, false);
-       qrio_prst(HOOPER_SW_RST, false, false);
+       qrio_prst(PEXHC_RST, false, false);
+       qrio_prst(HOOPER_RST, false, false);
        /* Hooper is not direcly PCIe capable */
        mdelay(50);
 
index 49f9aa2546242d421d45d5ec47af1ab05f38260d..b6ba93ada8f0bebd6d583d9ca85a3508d862b2c0 100644 (file)
@@ -91,7 +91,7 @@ void qrio_set_opendrain_gpio(u8 port_off, u8 gpio_nr, u8 val)
 
 #define WDMASK_OFF     0x16
 
-static void qrio_wdmask(u8 bit, bool wden)
+void qrio_wdmask(u8 bit, bool wden)
 {
        u16 wdmask;
        void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
@@ -144,3 +144,32 @@ void qrio_prstcfg(u8 bit, u8 mode)
 
        out_be32(qrio_base + PRSTCFG_OFF, prstcfg);
 }
+
+#define CTRLH_OFF              0x02
+#define CTRLH_WRL_BOOT         0x01
+#define CTRLH_WRL_UNITRUN      0x02
+
+void qrio_set_leds(void)
+{
+       u8 ctrlh;
+       void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+
+       /* set UNIT LED to RED and BOOT LED to ON */
+       ctrlh = in_8(qrio_base + CTRLH_OFF);
+       ctrlh |= (CTRLH_WRL_BOOT | CTRLH_WRL_UNITRUN);
+       out_8(qrio_base + CTRLH_OFF, ctrlh);
+}
+
+#define CTRLL_OFF              0x03
+#define CTRLL_WRB_BUFENA       0x20
+
+void qrio_enable_app_buffer(void)
+{
+       u8 ctrll;
+       void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+
+       /* enable application buffer */
+       ctrll = in_8(qrio_base + CTRLL_OFF);
+       ctrll |= (CTRLL_WRB_BUFENA);
+       out_8(qrio_base + CTRLL_OFF, ctrll);
+}
index 2d4c48cb9cdd485be5d22a1a82e1b6aae0f8f260..236d5138bc7e6e90464413bfaf6dcfaf2ab48aa2 100644 (file)
@@ -7,5 +7,5 @@ aa55aa55 010e0100
 #64 bytes RCW data
 14600000 00000000 28200000 00000000
 148E70CF CFC02000 58000000 41000000
-00000000 00000000 00000000 F0428002
+00000000 00000000 00000000 F0428816
 00000000 00000000 00000000 00000000
index 70133b5118ba87f6b4372a7c426f9e01fb7d7fed..1be5aba2e9459ee38739eb5d3a1fe32fb85facdf 100644 (file)
@@ -77,7 +77,7 @@ int mv_load_fpga(void)
                return -1;
        }
 
-       result = fpga_load(0, fpga_data, data_size);
+       result = fpga_load(0, fpga_data, data_size, BIT_FULL);
        if (!result)
                bootstage_mark(BOOTSTAGE_ID_START);
 
index 88035a9e9e39f93b2d7c90c57b8bb682b4fc724e..518992578c1e9156d033d5f12004da5044d4c132 100644 (file)
@@ -16,7 +16,7 @@
 #include "fpga.h"
 #include "mvsmr.h"
 
-Xilinx_Spartan3_Slave_Serial_fns fpga_fns = {
+xilinx_spartan3_slave_serial_fns fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_clk_fn,
@@ -26,8 +26,8 @@ Xilinx_Spartan3_Slave_Serial_fns fpga_fns = {
        0
 };
 
-Xilinx_desc spartan3 = {
-       Xilinx_Spartan2,
+xilinx_desc spartan3 = {
+       xilinx_spartan2,
        slave_serial,
        XILINX_XC3S200_SIZE,
        (void *) &fpga_fns,
index 42b0a035c7d9d8a7e2a469e8d398f62e8774b711..08eb5e829039d86f5395fdfdb140a23bf262327e 100644 (file)
@@ -286,6 +286,8 @@ int board_early_init_r (void)
 }
 
 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * update "memory" property in the blob
  */
@@ -314,7 +316,7 @@ void ft_blob_update (void *blob, bd_t *bd)
        /* baudrate */
        nodeoffset = fdt_path_offset (blob, "/soc/cpm/serial");
        if (nodeoffset >= 0) {
-               speed = cpu_to_be32 (bd->bi_baudrate);
+               speed = cpu_to_be32 (gd->baudrate);
                ret = fdt_setprop (blob, nodeoffset, "current-speed", &speed,
                                        sizeof (unsigned long));
        if (ret < 0)
index 69abb06251e4e4e6cb64a8f47ee3043c15b0a410..63503e89da1abe46a49175f95fee61718803d82f 100644 (file)
@@ -58,7 +58,6 @@ int checkboard (void)
        u32 BoardType = get_BoardType ();
        char *BoardName[2] = { "mvBlueBOX", "mvBlueLYNX" };
        char *p;
-       bd_t *bd = gd->bd;
 
        hw_watchdog_reset ();
 
@@ -71,8 +70,8 @@ int checkboard (void)
        if ((p = getenv ("console_nr")) != NULL) {
                unsigned long con_nr = simple_strtoul (p, NULL, 10) & 3;
 
-               bd->bi_baudrate &= ~3;
-               bd->bi_baudrate |= con_nr & 3;
+               gd->baudrate &= ~3;
+               gd->baudrate |= con_nr & 3;
        }
        return 0;
 }
index 1192d02e9171ed99b52f3152cf86e3bab0e48d72..62b50a8a0bb62a651ab9b61baab00888c263c413 100644 (file)
@@ -39,6 +39,11 @@ DECLARE_GLOBAL_DATA_PTR;
 #define GUMSTIX_CHESTNUT43             0x06000200
 #define GUMSTIX_PINTO                  0x07000200
 #define GUMSTIX_GALLOP43               0x08000200
+#define GUMSTIX_ALTO35                 0x09000200
+#define GUMSTIX_STAGECOACH             0x0A000200
+#define GUMSTIX_THUMBO                 0x0B000200
+#define GUMSTIX_TURTLECORE             0x0C000200
+#define GUMSTIX_ARBOR43C               0x0D000200
 
 #define ETTUS_USRP_E                   0x01000300
 
@@ -141,6 +146,7 @@ void get_board_mem_timings(struct board_sdrc_timings *timings)
                timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_165MHz;
                break;
        case REVISION_1: /* Micron 256MB/512MB, 1/2 banks of 256MB */
+       case REVISION_4:
                timings->mcfg = MICRON_V_MCFG_200(256 << 20);
                timings->ctrla = MICRON_V_ACTIMA_200;
                timings->ctrlb = MICRON_V_ACTIMB_200;
@@ -230,6 +236,8 @@ unsigned int get_expansion_id(void)
  */
 int misc_init_r(void)
 {
+       unsigned int expansion_id;
+
        twl4030_power_init();
        twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
 
@@ -252,7 +260,8 @@ int misc_init_r(void)
                puts("Unable to detect mmc2 connection type\n");
        }
 
-       switch (get_expansion_id()) {
+       expansion_id = get_expansion_id();
+       switch (expansion_id) {
        case GUMSTIX_SUMMIT:
                printf("Recognized Summit expansion board (rev %d %s)\n",
                        expansion_config.revision,
@@ -302,6 +311,35 @@ int misc_init_r(void)
                        expansion_config.fab_revision);
                setenv("defaultdisplay", "lcd43");
                break;
+       case GUMSTIX_ALTO35:
+               printf("Recognized Alto35 expansion board (rev %d %s)\n",
+                       expansion_config.revision,
+                       expansion_config.fab_revision);
+               MUX_ALTO35();
+               setenv("defaultdisplay", "lcd35");
+               break;
+       case GUMSTIX_STAGECOACH:
+               printf("Recognized Stagecoach expansion board (rev %d %s)\n",
+                       expansion_config.revision,
+                       expansion_config.fab_revision);
+               break;
+       case GUMSTIX_THUMBO:
+               printf("Recognized Thumbo expansion board (rev %d %s)\n",
+                       expansion_config.revision,
+                       expansion_config.fab_revision);
+               break;
+       case GUMSTIX_TURTLECORE:
+               printf("Recognized Turtlecore expansion board (rev %d %s)\n",
+                       expansion_config.revision,
+                       expansion_config.fab_revision);
+               break;
+       case GUMSTIX_ARBOR43C:
+               printf("Recognized Arbor43C expansion board (rev %d %s)\n",
+                       expansion_config.revision,
+                       expansion_config.fab_revision);
+               MUX_ARBOR43C();
+               setenv("defaultdisplay", "lcd43");
+               break;
        case ETTUS_USRP_E:
                printf("Recognized Ettus Research USRP-E (rev %d %s)\n",
                        expansion_config.revision,
@@ -313,7 +351,8 @@ int misc_init_r(void)
                puts("No EEPROM on expansion board\n");
                break;
        default:
-               puts("Unrecognized expansion board\n");
+               printf("Unrecognized expansion board 0x%08x\n", expansion_id);
+               break;
        }
 
        if (expansion_config.content == 1)
index 64604de1b01b2bf7ca85e7a095658d3214126711..57725d867f2b3fd7a34226d55a67a94dd59cd45d 100644 (file)
@@ -22,6 +22,7 @@ const omap3_sysinfo sysinfo = {
 #define REVISION_1     0x1
 #define REVISION_2     0x2
 #define REVISION_3     0x3
+#define REVISION_4     0x4
 
 /*
  * IEN  - Input Enable
@@ -404,4 +405,20 @@ const omap3_sysinfo sysinfo = {
        MUX_VAL(CP(MCSPI1_SOMI),        (IEN  | PTD | DIS | M4)) /*GPIO_173 */\
        MUX_VAL(CP(MCSPI1_CS1),         (IDIS | PTD | EN  | M4)) /*GPIO_175 */\
 
+#define MUX_ALTO35() \
+       MUX_VAL(CP(SYS_CLKOUT1),        (IEN  | PTU | EN  | M4)) /*GPIO_10-BTN*/\
+       MUX_VAL(CP(UART1_TX),           (IDIS | PTD | DIS | M4)) /*GPIO_148-RED LED*/\
+       MUX_VAL(CP(UART1_CTS),          (IDIS | PTD | DIS | M4)) /*GPIO_150-YELLOW LED*/\
+       MUX_VAL(CP(UART1_RX),           (IDIS | PTD | DIS | M4)) /*GPIO_151-BLUE LED*/\
+       MUX_VAL(CP(HDQ_SIO),            (IDIS | PTD | DIS | M4)) /*GPIO_170-GREEN LED*/\
+       MUX_VAL(CP(MCSPI1_CS1),         (IDIS | PTD | EN  | M4)) /*GPIO_175*/\
+
+#define MUX_ARBOR43C() \
+       MUX_VAL(CP(CSI2_DX1),           (IDIS | PTD | DIS | M4)) /*GPIO_114-RED LED*/\
+       MUX_VAL(CP(UART1_CTS),          (IDIS | PTD | DIS | M4)) /*GPIO_150-YELLOW LED*/\
+       MUX_VAL(CP(HDQ_SIO),            (IEN  | PTU | EN  | M4)) /*GPIO_170-BUTTON */\
+       MUX_VAL(CP(SYS_CLKOUT2),        (IDIS | PTD | DIS | M4)) /*GPIO_186-BLUE LED*/\
+       MUX_VAL(CP(JTAG_EMU1),          (IDIS | PTD | DIS | M4)) /*GPIO_31-CAP WAKE*/\
+       MUX_VAL(CP(SYS_CLKOUT1),        (IEN  | PTU | EN  | M4)) /*GPIO_10-CAP IRQ*/\
+
 #endif
index 32d3b584bce1059f1eb8808da37f845937fbf364..bfd0cc6884b7f754be4a6a2525e08e4df22b53a9 100644 (file)
 #include <netdev.h>
 #include <miiphy.h>
 #include <i2c.h>
+#include <div64.h>
 #include "qos.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define s_init_wait(cnt) \
-       ({      \
-               u32 i = 0x10000 * cnt;  \
-               while (i > 0)   \
-                       i--;    \
-       })
-
-
-#define dbpdrgd_check(bsc) \
-       ({      \
-               while ((readl(&bsc->dbpdrgd) & 0x1) != 0x1)     \
-                       ;       \
-       })
-
-#if defined(CONFIG_NORFLASH)
-static void bsc_init(void)
-{
-       struct r8a7791_lbsc *lbsc = (struct r8a7791_lbsc *)LBSC_BASE;
-       struct r8a7791_dbsc3 *dbsc3_0 = (struct r8a7791_dbsc3 *)DBSC3_0_BASE;
-
-       /* LBSC */
-       writel(0x00000020, &lbsc->cs0ctrl);
-       writel(0x00000020, &lbsc->cs1ctrl);
-       writel(0x00002020, &lbsc->ecs0ctrl);
-       writel(0x00002020, &lbsc->ecs1ctrl);
-
-       writel(0x077F077F, &lbsc->cswcr0);
-       writel(0x077F077F, &lbsc->cswcr1);
-       writel(0x077F077F, &lbsc->ecswcr0);
-       writel(0x077F077F, &lbsc->ecswcr1);
-
-       /* DBSC3 */
-       s_init_wait(10);
-
-       writel(0x0000A55A, &dbsc3_0->dbpdlck);
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x80000000, &dbsc3_0->dbpdrgd);
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x00000006, &dbsc3_0->dbpdrga);
-       writel(0x0001C000, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000023, &dbsc3_0->dbpdrga);
-       writel(0x00FD2480, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000010, &dbsc3_0->dbpdrga);
-       writel(0xF004649B, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000000F, &dbsc3_0->dbpdrga);
-       writel(0x00181EE4, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000000E, &dbsc3_0->dbpdrga);
-       writel(0x33C03812, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000003, &dbsc3_0->dbpdrga);
-       writel(0x0300C481, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000007, &dbsc3_0->dbkind);
-       writel(0x10030A02, &dbsc3_0->dbconf0);
-       writel(0x00000001, &dbsc3_0->dbphytype);
-       writel(0x00000000, &dbsc3_0->dbbl);
-       writel(0x0000000B, &dbsc3_0->dbtr0);
-       writel(0x00000008, &dbsc3_0->dbtr1);
-       writel(0x00000000, &dbsc3_0->dbtr2);
-       writel(0x0000000B, &dbsc3_0->dbtr3);
-       writel(0x000C000B, &dbsc3_0->dbtr4);
-       writel(0x00000027, &dbsc3_0->dbtr5);
-       writel(0x0000001C, &dbsc3_0->dbtr6);
-       writel(0x00000005, &dbsc3_0->dbtr7);
-       writel(0x00000018, &dbsc3_0->dbtr8);
-       writel(0x00000008, &dbsc3_0->dbtr9);
-       writel(0x0000000C, &dbsc3_0->dbtr10);
-       writel(0x00000009, &dbsc3_0->dbtr11);
-       writel(0x00000012, &dbsc3_0->dbtr12);
-       writel(0x000000D0, &dbsc3_0->dbtr13);
-       writel(0x00140005, &dbsc3_0->dbtr14);
-       writel(0x00050004, &dbsc3_0->dbtr15);
-       writel(0x70233005, &dbsc3_0->dbtr16);
-       writel(0x000C0000, &dbsc3_0->dbtr17);
-       writel(0x00000300, &dbsc3_0->dbtr18);
-       writel(0x00000040, &dbsc3_0->dbtr19);
-       writel(0x00000001, &dbsc3_0->dbrnk0);
-       writel(0x00020001, &dbsc3_0->dbadj0);
-       writel(0x20082008, &dbsc3_0->dbadj2);
-       writel(0x00020002, &dbsc3_0->dbwt0cnf0);
-       writel(0x0000000F, &dbsc3_0->dbwt0cnf4);
-
-       writel(0x00000015, &dbsc3_0->dbpdrga);
-       writel(0x00000D70, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000016, &dbsc3_0->dbpdrga);
-       writel(0x00000006, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000017, &dbsc3_0->dbpdrga);
-       writel(0x00000018, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000012, &dbsc3_0->dbpdrga);
-       writel(0x9D5CBB66, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000013, &dbsc3_0->dbpdrga);
-       writel(0x1A868300, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000023, &dbsc3_0->dbpdrga);
-       writel(0x00FDB6C0, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000014, &dbsc3_0->dbpdrga);
-       writel(0x300214D8, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000001A, &dbsc3_0->dbpdrga);
-       writel(0x930035C7, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000060, &dbsc3_0->dbpdrga);
-       writel(0x330657B2, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000011, &dbsc3_0->dbpdrga);
-       writel(0x1000040B, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x00000071, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x2100FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-
-       writel(0x110000DB, &dbsc3_0->dbcmd);
-
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x00000181, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x0000FE01, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x00000000, &dbsc3_0->dbbs0cnt1);
-       writel(0x01004C20, &dbsc3_0->dbcalcnf);
-       writel(0x014000AA, &dbsc3_0->dbcaltr);
-       writel(0x00000140, &dbsc3_0->dbrfcnf0);
-       writel(0x00081860, &dbsc3_0->dbrfcnf1);
-       writel(0x00010000, &dbsc3_0->dbrfcnf2);
-       writel(0x00000001, &dbsc3_0->dbrfen);
-       writel(0x00000001, &dbsc3_0->dbacen);
-}
-#else
-#define bsc_init() do {} while (0)
-#endif /* CONFIG_NORFLASH */
-
+#define CLK2MHZ(clk)   (clk / 1000 / 1000)
 void s_init(void)
 {
-       struct r8a7791_rwdt *rwdt = (struct r8a7791_rwdt *)RWDT_BASE;
-       struct r8a7791_swdt *swdt = (struct r8a7791_swdt *)SWDT_BASE;
+       struct rcar_rwdt *rwdt = (struct rcar_rwdt *)RWDT_BASE;
+       struct rcar_swdt *swdt = (struct rcar_swdt *)SWDT_BASE;
+       u32 stc;
 
        /* Watchdog init */
        writel(0xA5A5A500, &rwdt->rwtcsra);
        writel(0xA5A5A500, &swdt->swtcsra);
 
+       /* CPU frequency setting. Set to 1.5GHz */
+       stc = ((1500 / CLK2MHZ(CONFIG_SYS_CLK_FREQ)) - 1) << PLL0_STC_BIT;
+       clrsetbits_le32(PLL0CR, PLL0_STC_MASK, stc);
+
        /* QoS */
        qos_init();
-
-       /* BSC */
-       bsc_init();
 }
 
 #define MSTPSR1                0xE6150038
@@ -213,18 +55,6 @@ void s_init(void)
 #define SMSTPCR8       0xE6150990
 #define ETHER_MSTP813  (1 << 13)
 
-#define PMMR   0xE6060000
-#define GPSR4  0xE6060014
-#define IPSR14 0xE6060058
-
-#define set_guard_reg(addr, mask, value)       \
-{ \
-       u32 val; \
-       val = (readl(addr) & ~(mask)) | (value); \
-       writel(~val, PMMR); \
-       writel(val, addr); \
-}
-
 #define mstp_setbits(type, addr, saddr, set) \
        out_##type((saddr), in_##type(addr) | (set))
 #define mstp_clrbits(type, addr, saddr, clear) \
@@ -238,13 +68,7 @@ int board_early_init_f(void)
 {
        mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
 
-#if defined(CONFIG_NORFLASH)
        /* SCIF0 */
-       set_guard_reg(GPSR4, 0x34000000, 0x00000000);
-       set_guard_reg(IPSR14, 0x00000FC7, 0x00000481);
-       set_guard_reg(GPSR4, 0x00000000, 0x34000000);
-#endif
-
        mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP721);
 
        /* ETHER */
index 7f88f7da8d13836add2992a7d0a9e01787f3ef55..55a04202c16735d42a5208d6b48cf8a83e0ed88c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * board/renesas/koelsch/qos.c
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
  *
@@ -13,7 +13,7 @@
 #include <asm/io.h>
 #include <asm/arch/rmobile.h>
 
-/* QoS version 0.23 */
+/* QoS version 0.240 for ES1 and version 0.310 for ES2 */
 
 enum {
        DBSC3_00, DBSC3_01, DBSC3_02, DBSC3_03, DBSC3_04,
@@ -102,24 +102,31 @@ static u32 dbsc3_1_w_qos_addr[DBSC3_NR] = {
 void qos_init(void)
 {
        int i;
-       struct r8a7791_s3c *s3c;
-       struct r8a7791_s3c_qos *s3c_qos;
-       struct r8a7791_dbsc3_qos *qos_addr;
-       struct r8a7791_mxi *mxi;
-       struct r8a7791_mxi_qos *mxi_qos;
-       struct r8a7791_axi_qos *axi_qos;
+       struct rcar_s3c *s3c;
+       struct rcar_s3c_qos *s3c_qos;
+       struct rcar_dbsc3_qos *qos_addr;
+       struct rcar_mxi *mxi;
+       struct rcar_mxi_qos *mxi_qos;
+       struct rcar_axi_qos *axi_qos;
 
        /* DBSC DBADJ2 */
        writel(0x20042004, DBSC3_0_DBADJ2);
+       writel(0x20042004, DBSC3_1_DBADJ2);
 
        /* S3C -QoS */
-       s3c = (struct r8a7791_s3c *)S3C_BASE;
-       writel(0x00FF1B1D, &s3c->s3cadsplcr);
-       writel(0x1F0D0C0C, &s3c->s3crorr);
-       writel(0x1F0D0C0A, &s3c->s3cworr);
-
+       s3c = (struct rcar_s3c *)S3C_BASE;
+       if (IS_R8A7791_ES2()) {
+               writel(0x00FF1B0D, &s3c->s3cadsplcr);
+               writel(0x1F0D0B0A, &s3c->s3crorr);
+               writel(0x1F0D0B09, &s3c->s3cworr);
+               writel(0x00200808, &s3c->s3carcr11);
+       } else {
+               writel(0x00FF1B1D, &s3c->s3cadsplcr);
+               writel(0x1F0D0C0C, &s3c->s3crorr);
+               writel(0x1F0D0C0A, &s3c->s3cworr);
+       }
        /* QoS Control Registers */
-       s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_CCI0_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI0_BASE;
        writel(0x00890089, &s3c_qos->s3cqos0);
        writel(0x20960010, &s3c_qos->s3cqos1);
        writel(0x20302030, &s3c_qos->s3cqos2);
@@ -130,7 +137,7 @@ void qos_init(void)
        writel(0x20AA2200, &s3c_qos->s3cqos7);
        writel(0x00002032, &s3c_qos->s3cqos8);
 
-       s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_CCI1_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI1_BASE;
        writel(0x00890089, &s3c_qos->s3cqos0);
        writel(0x20960010, &s3c_qos->s3cqos1);
        writel(0x20302030, &s3c_qos->s3cqos2);
@@ -141,8 +148,11 @@ void qos_init(void)
        writel(0x20AA2200, &s3c_qos->s3cqos7);
        writel(0x00002032, &s3c_qos->s3cqos8);
 
-       s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_MXI_BASE;
-       writel(0x00820082, &s3c_qos->s3cqos0);
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_MXI_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x80928092, &s3c_qos->s3cqos0);
+       else
+               writel(0x00820082, &s3c_qos->s3cqos0);
        writel(0x20960020, &s3c_qos->s3cqos1);
        writel(0x20302030, &s3c_qos->s3cqos2);
        writel(0x20AA20DC, &s3c_qos->s3cqos3);
@@ -152,7 +162,7 @@ void qos_init(void)
        writel(0x20AA20DC, &s3c_qos->s3cqos7);
        writel(0x00002032, &s3c_qos->s3cqos8);
 
-       s3c_qos = (struct r8a7791_s3c_qos *)S3C_QOS_AXI_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_AXI_BASE;
        writel(0x00820082, &s3c_qos->s3cqos0);
        writel(0x20960020, &s3c_qos->s3cqos1);
        writel(0x20302030, &s3c_qos->s3cqos2);
@@ -166,7 +176,7 @@ void qos_init(void)
        /* DBSC -QoS */
        /* DBSC0 - Read */
        for (i = DBSC3_00; i < DBSC3_NR; i++) {
-               qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_0_r_qos_addr[i];
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_r_qos_addr[i];
                writel(0x00000002, &qos_addr->dblgcnt);
                writel(0x00002096, &qos_addr->dbtmval0);
                writel(0x00002064, &qos_addr->dbtmval1);
@@ -181,7 +191,7 @@ void qos_init(void)
 
        /* DBSC0 - Write */
        for (i = DBSC3_00; i < DBSC3_NR; i++) {
-               qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_0_w_qos_addr[i];
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_0_w_qos_addr[i];
                writel(0x00000002, &qos_addr->dblgcnt);
                writel(0x000020EB, &qos_addr->dbtmval0);
                writel(0x0000206E, &qos_addr->dbtmval1);
@@ -196,7 +206,7 @@ void qos_init(void)
 
        /* DBSC1 - Read */
        for (i = DBSC3_00; i < DBSC3_NR; i++) {
-               qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_1_r_qos_addr[i];
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_1_r_qos_addr[i];
                writel(0x00000002, &qos_addr->dblgcnt);
                writel(0x00002096, &qos_addr->dbtmval0);
                writel(0x00002064, &qos_addr->dbtmval1);
@@ -211,7 +221,7 @@ void qos_init(void)
 
        /* DBSC1 - Write */
        for (i = DBSC3_00; i < DBSC3_NR; i++) {
-               qos_addr = (struct r8a7791_dbsc3_qos *)dbsc3_1_w_qos_addr[i];
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_1_w_qos_addr[i];
                writel(0x00000002, &qos_addr->dblgcnt);
                writel(0x000020EB, &qos_addr->dbtmval0);
                writel(0x0000206E, &qos_addr->dbtmval1);
@@ -232,14 +242,14 @@ void qos_init(void)
 
        /* MXI -QoS */
        /* Transaction Control (MXI) */
-       mxi = (struct r8a7791_mxi *)MXI_BASE;
+       mxi = (struct rcar_mxi *)MXI_BASE;
        writel(0x00000013, &mxi->mxrtcr);
        writel(0x00000013, &mxi->mxwtcr);
        writel(0x00780080, &mxi->mxsaar0);
        writel(0x02000800, &mxi->mxsaar1);
 
        /* QoS Control (MXI) */
-       mxi_qos = (struct r8a7791_mxi_qos *)MXI_QOS_BASE;
+       mxi_qos = (struct rcar_mxi_qos *)MXI_QOS_BASE;
        writel(0x0000000C, &mxi_qos->vspdu0);
        writel(0x0000000C, &mxi_qos->vspdu1);
        writel(0x0000000D, &mxi_qos->du0);
@@ -247,7 +257,7 @@ void qos_init(void)
 
        /* AXI -QoS */
        /* Transaction Control (MXI) */
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SYX64TO128_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SYX64TO128_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -259,7 +269,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_AVB_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_AVB_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020A6, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -268,7 +278,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_G2D_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_G2D_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020A6, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -277,7 +287,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMP0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMP0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002021, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -286,7 +296,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMP1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMP1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002037, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -295,7 +305,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMUX0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX0_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -307,7 +317,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMUX1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX1_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -319,7 +329,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_IMUX2_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX2_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -331,7 +341,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_LBS_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_LBS_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000214C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -340,7 +350,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUDS_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUDS_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -352,7 +362,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUM_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUM_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -364,7 +374,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUR_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -376,7 +386,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS0_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -388,7 +398,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MMUS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS1_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -400,7 +410,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MTSB0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MTSB0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002021, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -409,7 +419,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MTSB1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MTSB1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002021, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -418,7 +428,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_PCI_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_PCI_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000214C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -427,7 +437,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_RTX_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_RTX_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -439,7 +449,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020A6, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -448,7 +458,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020A6, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -457,7 +467,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB20_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB20_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -466,7 +476,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB21_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB21_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -475,7 +485,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB22_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB22_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -484,7 +494,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_USB30_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB30_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000214C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -493,7 +503,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_AX2M_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_AX2M_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -502,7 +512,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_CC50_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_CC50_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002029, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -511,7 +521,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_CCI_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_CCI_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -520,7 +530,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_CS_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_CS_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -529,7 +539,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_DDM_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_DDM_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020A6, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -538,7 +548,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_ETH_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_ETH_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -547,7 +557,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_MPXM_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MPXM_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -556,7 +566,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SAT0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SAT0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -565,7 +575,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SAT1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SAT1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -574,7 +584,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDM0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDM0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000214C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -583,7 +593,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_SDM1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDM1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000214C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -592,7 +602,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_TRAB_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_TRAB_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020A6, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -601,7 +611,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_UDM0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_UDM0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -610,7 +620,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI_UDM1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_UDM1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -620,7 +630,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (RT-AXI) */
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_SHX_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_SHX_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -632,7 +642,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_DBG_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_DBG_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -644,7 +654,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_RDM_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RDM_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002299, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -653,7 +663,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_RDS_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RDS_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002029, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -662,7 +672,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_RTX64TO128_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RTX64TO128_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -674,7 +684,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_STPRO_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_STPRO_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002029, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -686,12 +696,9 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)RT_AXI_SY2RT_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_SY2RT_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
-       writel(0x00002096, &axi_qos->qosctset1);
-       writel(0x00002030, &axi_qos->qosctset2);
-       writel(0x00002030, &axi_qos->qosctset3);
        writel(0x00000001, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
@@ -699,7 +706,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (MP-AXI) */
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_ADSP_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ADSP_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002037, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -708,34 +715,34 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_ASDS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS0_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
-       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00000040, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_ASDS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS1_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
-       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00000040, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_MLP_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
-       writel(0x00002014, &axi_qos->qosctset0);
-       writel(0x00000001, &axi_qos->qosreqctr);
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_MLP_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00001FF0, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
-       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00002001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_MMUMP_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_MMUMP_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -747,7 +754,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_SPU_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_SPU_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002053, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -756,7 +763,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MP_AXI_SPUC_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_SPUC_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000206E, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -766,9 +773,12 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (SYS-AXI256) */
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_AXI128TO256_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_AXI128TO256_BASE;
        writel(0x00000002, &axi_qos->qosconf);
-       writel(0x00002245, &axi_qos->qosctset0);
+       if (IS_R8A7791_ES2())
+               writel(0x000020EB, &axi_qos->qosctset0);
+       else
+               writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
        writel(0x00002030, &axi_qos->qosctset2);
        writel(0x00002030, &axi_qos->qosctset3);
@@ -778,9 +788,12 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_SYX_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_SYX_BASE;
        writel(0x00000002, &axi_qos->qosconf);
-       writel(0x00002245, &axi_qos->qosctset0);
+       if (IS_R8A7791_ES2())
+               writel(0x000020EB, &axi_qos->qosctset0);
+       else
+               writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
        writel(0x00002030, &axi_qos->qosctset2);
        writel(0x00002030, &axi_qos->qosctset3);
@@ -790,9 +803,12 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_MPX_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MPX_BASE;
        writel(0x00000002, &axi_qos->qosconf);
-       writel(0x00002245, &axi_qos->qosctset0);
+       if (IS_R8A7791_ES2())
+               writel(0x000020EB, &axi_qos->qosctset0);
+       else
+               writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
        writel(0x00002030, &axi_qos->qosctset2);
        writel(0x00002030, &axi_qos->qosctset3);
@@ -802,7 +818,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)SYS_AXI256_MXI_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MXI_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -815,7 +831,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (CCI-AXI) */
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS0_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -827,7 +843,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_SYX2_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_SYX2_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -839,7 +855,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUR_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -851,7 +867,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUDS_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUDS_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -863,7 +879,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUM_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUM_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -875,7 +891,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MXI_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MXI_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x00002245, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -887,7 +903,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS1_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -899,7 +915,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)CCI_AXI_MMUMP_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUMP_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -912,7 +928,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (Media-AXI) */
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_MXR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_MXR_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x000020DC, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -923,7 +939,7 @@ void qos_init(void)
        writel(0x00002032, &axi_qos->qosthres1);
        writel(0x00000001, &axi_qos->qosthres2);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_MXW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_MXW_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x000020DC, &axi_qos->qosctset0);
        writel(0x00002096, &axi_qos->qosctset1);
@@ -934,7 +950,7 @@ void qos_init(void)
        writel(0x00002032, &axi_qos->qosthres1);
        writel(0x00000001, &axi_qos->qosthres2);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_JPR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_JPR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -943,16 +959,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_JPW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_JPW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_TDMR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -961,7 +982,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_TDMW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -970,7 +991,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -979,16 +1000,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -997,16 +1023,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU1CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU1CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1015,25 +1046,36 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPDU1CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU1CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002190, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VIN0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VIN0W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
-       writel(0x000020C8, &axi_qos->qosctset0);
+       if (IS_R8A7791_ES2())
+               writel(0x00001FF0, &axi_qos->qosctset0);
+       else
+               writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
-       writel(0x00000001, &axi_qos->qosthres2);
+       if (IS_R8A7791_ES2())
+               writel(0x00002001, &axi_qos->qosthres2);
+       else
+               writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1042,16 +1084,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMSR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1060,7 +1107,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMSW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1069,7 +1116,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1078,16 +1125,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSP1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP1R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1096,16 +1148,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_FDP1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP1W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMRR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1114,7 +1171,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_IMRW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1123,40 +1180,55 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD0R_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0R_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x00000003, &axi_qos->qosconf);
+       else
+               writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD0W_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0W_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x00000003, &axi_qos->qosconf);
+       else
+               writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD1R_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD1R_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x00000003, &axi_qos->qosconf);
+       else
+               writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VSPD1W_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD1W_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x00000003, &axi_qos->qosconf);
+       else
+               writel(0x00000000, &axi_qos->qosconf);
        writel(0x000020C8, &axi_qos->qosctset0);
        writel(0x00002064, &axi_qos->qosthres0);
        writel(0x00002004, &axi_qos->qosthres1);
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_DU0R_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0R_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x00000003, &axi_qos->qosconf);
+       else
+               writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002063, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
@@ -1164,8 +1236,11 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_DU0W_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0W_BASE;
+       if (IS_R8A7791_ES2())
+               writel(0x00000000, &axi_qos->qosconf);
+       else
+               writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002063, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
        writel(0x00002064, &axi_qos->qosthres0);
@@ -1173,7 +1248,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002073, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1182,16 +1257,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002073, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0VR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002073, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1200,16 +1280,21 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VCP0VW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002073, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
-       writel(0x00002064, &axi_qos->qosthres0);
-       writel(0x00002004, &axi_qos->qosthres1);
+       if (IS_R8A7791_ES2()) {
+               writel(0x00000001, &axi_qos->qosthres0);
+               writel(0x00000001, &axi_qos->qosthres1);
+       } else {
+               writel(0x00002064, &axi_qos->qosthres0);
+               writel(0x00002004, &axi_qos->qosthres1);
+       }
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7791_axi_qos *)MEDIA_AXI_VPC0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VPC0R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002073, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
index ad5289a23b9abe86804fca359040ca99a8025e2d..a5a0474cd7a0f9c685c1636833c56acaaed308bb 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define s_init_wait(cnt) \
-       ({      \
-               u32 i = 0x10000 * cnt;  \
-               while (i > 0)   \
-                       i--;    \
-       })
-
-#define dbpdrgd_check(bsc) \
-       ({      \
-               while ((readl(&bsc->dbpdrgd) & 0x1) != 0x1)     \
-                       ;       \
-       })
-
-#if defined(CONFIG_NORFLASH)
-static void bsc_init(void)
-{
-       struct r8a7790_lbsc *lbsc = (struct r8a7790_lbsc *)LBSC_BASE;
-       struct r8a7790_dbsc3 *dbsc3_0 = (struct r8a7790_dbsc3 *)DBSC3_0_BASE;
-
-       /* LBSC */
-       writel(0x00000020, &lbsc->cs0ctrl);
-       writel(0x00000020, &lbsc->cs1ctrl);
-       writel(0x00002020, &lbsc->ecs0ctrl);
-       writel(0x00002020, &lbsc->ecs1ctrl);
-
-       writel(0x077F077F, &lbsc->cswcr0);
-       writel(0x077F077F, &lbsc->cswcr1);
-       writel(0x077F077F, &lbsc->ecswcr0);
-       writel(0x077F077F, &lbsc->ecswcr1);
-
-       /* DBSC3 */
-       s_init_wait(10);
-
-       writel(0x0000A55A, &dbsc3_0->dbpdlck);
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x80000000, &dbsc3_0->dbpdrgd);
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x00000006, &dbsc3_0->dbpdrga);
-       writel(0x0001C000, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000023, &dbsc3_0->dbpdrga);
-       writel(0x00FD2480, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000010, &dbsc3_0->dbpdrga);
-       writel(0xF004649B, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000000F, &dbsc3_0->dbpdrga);
-       writel(0x00181EE4, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000000E, &dbsc3_0->dbpdrga);
-       writel(0x33C03812, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000003, &dbsc3_0->dbpdrga);
-       writel(0x0300C481, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000007, &dbsc3_0->dbkind);
-       writel(0x10030A02, &dbsc3_0->dbconf0);
-       writel(0x00000001, &dbsc3_0->dbphytype);
-       writel(0x00000000, &dbsc3_0->dbbl);
-       writel(0x0000000B, &dbsc3_0->dbtr0);
-       writel(0x00000008, &dbsc3_0->dbtr1);
-       writel(0x00000000, &dbsc3_0->dbtr2);
-       writel(0x0000000B, &dbsc3_0->dbtr3);
-       writel(0x000C000B, &dbsc3_0->dbtr4);
-       writel(0x00000027, &dbsc3_0->dbtr5);
-       writel(0x0000001C, &dbsc3_0->dbtr6);
-       writel(0x00000005, &dbsc3_0->dbtr7);
-       writel(0x00000018, &dbsc3_0->dbtr8);
-       writel(0x00000008, &dbsc3_0->dbtr9);
-       writel(0x0000000C, &dbsc3_0->dbtr10);
-       writel(0x00000009, &dbsc3_0->dbtr11);
-       writel(0x00000012, &dbsc3_0->dbtr12);
-       writel(0x000000D0, &dbsc3_0->dbtr13);
-       writel(0x00140005, &dbsc3_0->dbtr14);
-       writel(0x00050004, &dbsc3_0->dbtr15);
-       writel(0x70233005, &dbsc3_0->dbtr16);
-       writel(0x000C0000, &dbsc3_0->dbtr17);
-       writel(0x00000300, &dbsc3_0->dbtr18);
-       writel(0x00000040, &dbsc3_0->dbtr19);
-       writel(0x00000001, &dbsc3_0->dbrnk0);
-       writel(0x00020001, &dbsc3_0->dbadj0);
-       writel(0x20082008, &dbsc3_0->dbadj2);
-       writel(0x00020002, &dbsc3_0->dbwt0cnf0);
-       writel(0x0000000F, &dbsc3_0->dbwt0cnf4);
-
-       writel(0x00000015, &dbsc3_0->dbpdrga);
-       writel(0x00000D70, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000016, &dbsc3_0->dbpdrga);
-       writel(0x00000006, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000017, &dbsc3_0->dbpdrga);
-       writel(0x00000018, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000012, &dbsc3_0->dbpdrga);
-       writel(0x9D5CBB66, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000013, &dbsc3_0->dbpdrga);
-       writel(0x1A868300, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000023, &dbsc3_0->dbpdrga);
-       writel(0x00FDB6C0, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000014, &dbsc3_0->dbpdrga);
-       writel(0x300214D8, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000001A, &dbsc3_0->dbpdrga);
-       writel(0x930035C7, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000060, &dbsc3_0->dbpdrga);
-       writel(0x330657B2, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000011, &dbsc3_0->dbpdrga);
-       writel(0x1000040B, &dbsc3_0->dbpdrgd);
-
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x00000071, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x2100FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-       writel(0x0000FA00, &dbsc3_0->dbcmd);
-
-       writel(0x110000DB, &dbsc3_0->dbcmd);
-
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x00000181, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x00000001, &dbsc3_0->dbpdrga);
-       writel(0x0000FE01, &dbsc3_0->dbpdrgd);
-
-       writel(0x00000004, &dbsc3_0->dbpdrga);
-       dbpdrgd_check(dbsc3_0);
-
-       writel(0x00000000, &dbsc3_0->dbbs0cnt1);
-       writel(0x01004C20, &dbsc3_0->dbcalcnf);
-       writel(0x014000AA, &dbsc3_0->dbcaltr);
-       writel(0x00000140, &dbsc3_0->dbrfcnf0);
-       writel(0x00081860, &dbsc3_0->dbrfcnf1);
-       writel(0x00010000, &dbsc3_0->dbrfcnf2);
-       writel(0x00000001, &dbsc3_0->dbrfen);
-       writel(0x00000001, &dbsc3_0->dbacen);
-}
-#else
-#define bsc_init() do {} while (0)
-#endif /* CONFIG_NORFLASH */
-
+#define CLK2MHZ(clk)   (clk / 1000 / 1000)
 void s_init(void)
 {
-       struct r8a7790_rwdt *rwdt = (struct r8a7790_rwdt *)RWDT_BASE;
-       struct r8a7790_swdt *swdt = (struct r8a7790_swdt *)SWDT_BASE;
+       struct rcar_rwdt *rwdt = (struct rcar_rwdt *)RWDT_BASE;
+       struct rcar_swdt *swdt = (struct rcar_swdt *)SWDT_BASE;
+       u32 stc;
 
        /* Watchdog init */
        writel(0xA5A5A500, &rwdt->rwtcsra);
        writel(0xA5A5A500, &swdt->swtcsra);
 
+       /* CPU frequency setting. Set to 1.4GHz */
+       stc = ((1500 / CLK2MHZ(CONFIG_SYS_CLK_FREQ)) - 1) << PLL0_STC_BIT;
+       clrsetbits_le32(PLL0CR, PLL0_STC_MASK, stc);
+
        /* QoS(Quality-of-Service) Init */
        qos_init();
-
-       /* BSC init */
-       bsc_init();
 }
 
 #define MSTPSR1        0xE6150038
@@ -213,18 +55,6 @@ void s_init(void)
 #define SMSTPCR8       0xE6150990
 #define ETHER_MSTP813  (1 << 13)
 
-#define PMMR   0xE6060000
-#define GPSR4  0xE6060014
-#define IPSR14 0xE6060058
-
-#define        set_guard_reg(addr, mask, value)        \
-{ \
-       u32     val; \
-       val = (readl(addr) & ~(mask)) | (value);        \
-       writel(~val, PMMR);     \
-       writel(val, addr);      \
-}
-
 #define mstp_setbits(type, addr, saddr, set) \
        out_##type((saddr), in_##type(addr) | (set))
 #define mstp_clrbits(type, addr, saddr, clear) \
@@ -238,16 +68,8 @@ int board_early_init_f(void)
 {
        /* TMU0 */
        mstp_clrbits_le32(MSTPSR1, SMSTPCR1, TMU0_MSTP125);
-
-#if defined(CONFIG_NORFLASH)
        /* SCIF0 */
-       set_guard_reg(GPSR4, 0x34000000, 0x00000000);
-       set_guard_reg(IPSR14, 0x00000FC7, 0x00000481);
-       set_guard_reg(GPSR4,  0x00000000, 0x34000000);
-#endif
-
        mstp_clrbits_le32(MSTPSR7, SMSTPCR7, SCIF0_MSTP721);
-
        /* ETHER */
        mstp_clrbits_le32(MSTPSR8, SMSTPCR8, ETHER_MSTP813);
 
@@ -263,8 +85,6 @@ void arch_preboot_os(void)
 DECLARE_GLOBAL_DATA_PTR;
 int board_init(void)
 {
-       /* board id for linux */
-       gd->bd->bi_arch_number = MACH_TYPE_LAGER;
        /* adress of boot parameters */
        gd->bd->bi_boot_params = LAGER_SDRAM_BASE + 0x100;
 
index b88511a326c845222c6e4d06841e7f8e9d1be6ed..374275747dbd9e30ae0dec739df70ecdac62730e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * board/renesas/lager/qos.c
  *
- * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013,2014 Renesas Electronics Corporation
  *
  * SPDX-License-Identifier: GPL-2.0
  */
@@ -12,7 +12,7 @@
 #include <asm/io.h>
 #include <asm/arch/rmobile.h>
 
-/* QoS version 0.954 */
+/* QoS version 0.955 */
 
 enum {
        DBSC3_R00, DBSC3_R01, DBSC3_R02, DBSC3_R03, DBSC3_R04,
@@ -64,24 +64,24 @@ static const u32 dbsc3_qos_addr[DBSC3_NR] = {
 void qos_init(void)
 {
        int i;
-       struct r8a7790_s3c *s3c;
-       struct r8a7790_s3c_qos *s3c_qos;
-       struct r8a7790_dbsc3_qos *qos_addr;
-       struct r8a7790_mxi *mxi;
-       struct r8a7790_mxi_qos *mxi_qos;
-       struct r8a7790_axi_qos *axi_qos;
+       struct rcar_s3c *s3c;
+       struct rcar_s3c_qos *s3c_qos;
+       struct rcar_dbsc3_qos *qos_addr;
+       struct rcar_mxi *mxi;
+       struct rcar_mxi_qos *mxi_qos;
+       struct rcar_axi_qos *axi_qos;
 
        /* DBSC DBADJ2 */
        writel(0x20042004, DBSC3_0_DBADJ2);
 
        /* S3C -QoS */
-       s3c = (struct r8a7790_s3c *)S3C_BASE;
+       s3c = (struct rcar_s3c *)S3C_BASE;
        writel(0x80FF1C1E, &s3c->s3cadsplcr);
        writel(0x1F060505, &s3c->s3crorr);
        writel(0x1F020100, &s3c->s3cworr);
 
        /* QoS Control Registers */
-       s3c_qos = (struct r8a7790_s3c_qos *)S3C_QOS_CCI0_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI0_BASE;
        writel(0x00800080, &s3c_qos->s3cqos0);
        writel(0x22000010, &s3c_qos->s3cqos1);
        writel(0x22002200, &s3c_qos->s3cqos2);
@@ -92,7 +92,7 @@ void qos_init(void)
        writel(0x2F002200, &s3c_qos->s3cqos7);
        writel(0x2F002F00, &s3c_qos->s3cqos8);
 
-       s3c_qos = (struct r8a7790_s3c_qos *)S3C_QOS_CCI1_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_CCI1_BASE;
        writel(0x00800080, &s3c_qos->s3cqos0);
        writel(0x22000010, &s3c_qos->s3cqos1);
        writel(0x22002200, &s3c_qos->s3cqos2);
@@ -103,7 +103,7 @@ void qos_init(void)
        writel(0x2F002200, &s3c_qos->s3cqos7);
        writel(0x2F002F00, &s3c_qos->s3cqos8);
 
-       s3c_qos = (struct r8a7790_s3c_qos *)S3C_QOS_MXI_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_MXI_BASE;
        writel(0x80918099, &s3c_qos->s3cqos0);
        writel(0x20410010, &s3c_qos->s3cqos1);
        writel(0x200A2023, &s3c_qos->s3cqos2);
@@ -114,7 +114,7 @@ void qos_init(void)
        writel(0x20502001, &s3c_qos->s3cqos7);
        writel(0x20142032, &s3c_qos->s3cqos8);
 
-       s3c_qos = (struct r8a7790_s3c_qos *)S3C_QOS_AXI_BASE;
+       s3c_qos = (struct rcar_s3c_qos *)S3C_QOS_AXI_BASE;
 
        writel(0x00810089, &s3c_qos->s3cqos0);
        writel(0x20410001, &s3c_qos->s3cqos1);
@@ -131,7 +131,7 @@ void qos_init(void)
        /* DBSC -QoS */
        /* DBSC0 - Read/Write */
        for (i = DBSC3_R00; i < DBSC3_NR; i++) {
-               qos_addr = (struct r8a7790_dbsc3_qos *)dbsc3_qos_addr[i];
+               qos_addr = (struct rcar_dbsc3_qos *)dbsc3_qos_addr[i];
                writel(0x00000203, &qos_addr->dblgcnt);
                writel(0x00002064, &qos_addr->dbtmval0);
                writel(0x00002048, &qos_addr->dbtmval1);
@@ -151,7 +151,7 @@ void qos_init(void)
 
        /* MXI -QoS */
        /* Transaction Control (MXI) */
-       mxi = (struct r8a7790_mxi *)MXI_BASE;
+       mxi = (struct rcar_mxi *)MXI_BASE;
        writel(0x00000013, &mxi->mxrtcr);
        writel(0x00000013, &mxi->mxwtcr);
        writel(0x00B800C0, &mxi->mxsaar0);
@@ -162,7 +162,7 @@ void qos_init(void)
        writel(0x00200000, &mxi->mxaxiwacr);
 
        /* QoS Control (MXI) */
-       mxi_qos = (struct r8a7790_mxi_qos *)MXI_QOS_BASE;
+       mxi_qos = (struct rcar_mxi_qos *)MXI_QOS_BASE;
        writel(0x0000000C, &mxi_qos->vspdu0);
        writel(0x0000000C, &mxi_qos->vspdu1);
        writel(0x0000000D, &mxi_qos->du0);
@@ -170,7 +170,7 @@ void qos_init(void)
 
        /* AXI -QoS */
        /* Transaction Control (MXI) */
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_SYX64TO128_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SYX64TO128_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -182,7 +182,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_AVB_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_AVB_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200A, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -191,7 +191,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_G2D_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_G2D_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200A, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -200,7 +200,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_IMP0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMP0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002002, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -209,7 +209,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_IMP1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMP1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002004, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -218,7 +218,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_IMUX0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX0_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -230,7 +230,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_IMUX1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX1_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -242,7 +242,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_IMUX2_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_IMUX2_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -254,7 +254,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_LBS_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_LBS_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -263,7 +263,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MMUDS_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUDS_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -275,7 +275,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MMUM_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUM_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -287,7 +287,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MMUR_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -299,7 +299,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MMUS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS0_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -311,7 +311,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MMUS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MMUS1_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -323,7 +323,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MTSB0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MTSB0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002002, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -332,7 +332,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_MTSB1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_MTSB1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002002, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -341,7 +341,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_PCI_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_PCI_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -350,7 +350,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_RTX_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_RTX_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -362,7 +362,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_SDS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS0_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200A, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -371,7 +371,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_SDS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_SDS1_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200A, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -380,7 +380,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_USB20_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB20_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002005, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -389,7 +389,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_USB21_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB21_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002005, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -398,7 +398,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_USB22_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB22_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002005, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -407,7 +407,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI_USB30_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI_USB30_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -417,7 +417,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (RT-AXI) */
-       axi_qos = (struct r8a7790_axi_qos *)RT_AXI_SHX_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_SHX_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002005, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -429,7 +429,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)RT_AXI_RDS_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RDS_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -438,7 +438,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)RT_AXI_RTX64TO128_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_RTX64TO128_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -450,7 +450,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)RT_AXI_STPRO_BASE;
+       axi_qos = (struct rcar_axi_qos *)RT_AXI_STPRO_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002003, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -463,7 +463,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (MP-AXI) */
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_ADSP_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ADSP_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -472,34 +472,34 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_ASDS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS0_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
-       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00000040, &axi_qos->qosreqctr);
        writel(0x00002006, &axi_qos->qosthres0);
        writel(0x00002001, &axi_qos->qosthres1);
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_ASDS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_ASDS1_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002014, &axi_qos->qosctset0);
-       writel(0x00000001, &axi_qos->qosreqctr);
+       writel(0x00000040, &axi_qos->qosreqctr);
        writel(0x00002006, &axi_qos->qosthres0);
        writel(0x00002001, &axi_qos->qosthres1);
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_MLP_BASE;
-       writel(0x00000000, &axi_qos->qosconf);
-       writel(0x00002002, &axi_qos->qosctset0);
-       writel(0x00000001, &axi_qos->qosreqctr);
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_MLP_BASE;
+       writel(0x00000001, &axi_qos->qosconf);
+       writel(0x00001FF0, &axi_qos->qosctset0);
+       writel(0x00000020, &axi_qos->qosreqctr);
        writel(0x00002006, &axi_qos->qosthres0);
        writel(0x00002001, &axi_qos->qosthres1);
-       writel(0x00000000, &axi_qos->qosthres2);
+       writel(0x00002001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_MMUMP_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_MMUMP_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -511,7 +511,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_SPU_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_SPU_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -520,7 +520,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MP_AXI_SPUC_BASE;
+       axi_qos = (struct rcar_axi_qos *)MP_AXI_SPUC_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200D, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -530,7 +530,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (SYS-AXI256) */
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI256_AXI128TO256_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_AXI128TO256_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -542,7 +542,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI256_SYX_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_SYX_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -554,7 +554,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI256_MPX_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MPX_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -566,7 +566,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)SYS_AXI256_MXI_BASE;
+       axi_qos = (struct rcar_axi_qos *)SYS_AXI256_MXI_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -579,7 +579,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (CCI-AXI) */
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MMUS0_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS0_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -591,7 +591,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_SYX2_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_SYX2_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -603,7 +603,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MMUR_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -615,7 +615,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MMUDS_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUDS_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -627,7 +627,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MMUM_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUM_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -639,7 +639,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MXI_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MXI_BASE;
        writel(0x00000002, &axi_qos->qosconf);
        writel(0x0000200F, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -651,7 +651,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MMUS1_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUS1_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -663,7 +663,7 @@ void qos_init(void)
        writel(0x00000000, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)CCI_AXI_MMUMP_BASE;
+       axi_qos = (struct rcar_axi_qos *)CCI_AXI_MMUMP_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002001, &axi_qos->qosctset0);
        writel(0x00002009, &axi_qos->qosctset1);
@@ -676,7 +676,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosqon);
 
        /* QoS Register (Media-AXI) */
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_JPR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_JPR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -685,7 +685,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_JPW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_JPW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -694,7 +694,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_GCU0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_GCU0R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -703,7 +703,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_GCU0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_GCU0W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -712,7 +712,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_GCU1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_GCU1R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -721,7 +721,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_GCU1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_GCU1W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -730,7 +730,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_TDMR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -739,7 +739,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_TDMW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_TDMW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -748,7 +748,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP0CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP0CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -757,7 +757,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP0CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP0CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -766,7 +766,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP1CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -775,7 +775,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP1CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -784,7 +784,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -793,7 +793,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU0CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -802,7 +802,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPDU1CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU1CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -811,7 +811,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPDU1CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPDU1CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002018, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -820,7 +820,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VIN0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VIN0W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -829,7 +829,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP0R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -838,7 +838,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP0W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -847,7 +847,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_FDP0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -856,7 +856,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_FDP0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP0W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -865,7 +865,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_IMSR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -874,7 +874,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_IMSW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMSW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -883,7 +883,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -892,7 +892,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSP1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSP1W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -901,7 +901,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_FDP1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP1R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -910,7 +910,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_FDP1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP1W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -919,7 +919,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_IMRR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -928,7 +928,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_IMRW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_IMRW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -937,7 +937,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_FDP2R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP2R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -946,7 +946,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_FDP2W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_FDP2W_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -955,7 +955,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPD0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0R_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -964,7 +964,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPD0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD0W_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -973,7 +973,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPD1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD1R_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -982,7 +982,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VSPD1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VSPD1W_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -991,7 +991,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_DU0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0R_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -1000,7 +1000,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_DU0W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU0W_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -1009,7 +1009,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_DU1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU1R_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -1018,7 +1018,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_DU1W_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_DU1W_BASE;
        writel(0x00000000, &axi_qos->qosconf);
        writel(0x0000200C, &axi_qos->qosctset0);
        writel(0x00000001, &axi_qos->qosreqctr);
@@ -1027,7 +1027,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP0CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1036,7 +1036,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP0CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1045,7 +1045,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP0VR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1054,7 +1054,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP0VW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP0VW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1063,7 +1063,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VPC0R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VPC0R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1072,7 +1072,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP1CR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP1CR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1081,7 +1081,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP1CW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP1CW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1090,7 +1090,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP1VR_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP1VR_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1099,7 +1099,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VCP1VW_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VCP1VW_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
@@ -1108,7 +1108,7 @@ void qos_init(void)
        writel(0x00000001, &axi_qos->qosthres2);
        writel(0x00000001, &axi_qos->qosqon);
 
-       axi_qos = (struct r8a7790_axi_qos *)MEDIA_AXI_VPC1R_BASE;
+       axi_qos = (struct rcar_axi_qos *)MEDIA_AXI_VPC1R_BASE;
        writel(0x00000001, &axi_qos->qosconf);
        writel(0x00002007, &axi_qos->qosctset0);
        writel(0x00000020, &axi_qos->qosreqctr);
index 7d2bb8c4a2f3f9c0d041ce83fc5669e488166a09..41d0cc38149444da2a2bf743c515f16b7d237a17 100644 (file)
@@ -7,7 +7,6 @@
 
 obj-$(CONFIG_SOFT_I2C_MULTI_BUS) += multi_i2c.o
 obj-$(CONFIG_THOR_FUNCTION) += thor.o
-obj-$(CONFIG_CMD_USB_MASS_STORAGE) += ums.o
 obj-$(CONFIG_MISC_COMMON) += misc.o
 
 ifndef CONFIG_SPL_BUILD
diff --git a/board/samsung/common/ums.c b/board/samsung/common/ums.c
deleted file mode 100644 (file)
index cebabe9..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2013 Samsung Electronics
- * Lukasz Majewski <l.majewski@samsung.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <usb_mass_storage.h>
-#include <part.h>
-
-static int ums_read_sector(struct ums *ums_dev,
-                          ulong start, lbaint_t blkcnt, void *buf)
-{
-       block_dev_desc_t *block_dev = &ums_dev->mmc->block_dev;
-       lbaint_t blkstart = start + ums_dev->start_sector;
-       int dev_num = block_dev->dev;
-
-       return block_dev->block_read(dev_num, blkstart, blkcnt, buf);
-}
-
-static int ums_write_sector(struct ums *ums_dev,
-                           ulong start, lbaint_t blkcnt, const void *buf)
-{
-       block_dev_desc_t *block_dev = &ums_dev->mmc->block_dev;
-       lbaint_t blkstart = start + ums_dev->start_sector;
-       int dev_num = block_dev->dev;
-
-       return block_dev->block_write(dev_num, blkstart, blkcnt, buf);
-}
-
-static struct ums ums_dev = {
-       .read_sector = ums_read_sector,
-       .write_sector = ums_write_sector,
-       .name = "UMS disk",
-};
-
-static struct ums *ums_disk_init(struct mmc *mmc)
-{
-       uint64_t mmc_end_sector = mmc->capacity / SECTOR_SIZE;
-       uint64_t ums_end_sector = UMS_NUM_SECTORS + UMS_START_SECTOR;
-
-       if (!mmc_end_sector) {
-               error("MMC capacity is not valid");
-               return NULL;
-       }
-
-       ums_dev.mmc = mmc;
-
-       if (ums_end_sector <= mmc_end_sector) {
-               ums_dev.start_sector = UMS_START_SECTOR;
-               if (UMS_NUM_SECTORS)
-                       ums_dev.num_sectors = UMS_NUM_SECTORS;
-               else
-                       ums_dev.num_sectors = mmc_end_sector - UMS_START_SECTOR;
-       } else {
-               ums_dev.num_sectors = mmc_end_sector;
-               puts("UMS: defined bad disk parameters. Using default.\n");
-       }
-
-       printf("UMS: disk start sector: %#x, count: %#x\n",
-              ums_dev.start_sector, ums_dev.num_sectors);
-
-       return &ums_dev;
-}
-
-struct ums *ums_init(unsigned int dev_num)
-{
-       struct mmc *mmc = find_mmc_device(dev_num);
-
-       if (!mmc || mmc_init(mmc))
-               return NULL;
-       return ums_disk_init(mmc);
-}
diff --git a/board/sandbox/README.sandbox b/board/sandbox/README.sandbox
new file mode 100644 (file)
index 0000000..529c447
--- /dev/null
@@ -0,0 +1,299 @@
+/*
+ * Copyright (c) 2014 The Chromium OS Authors.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+Native Execution of U-Boot
+==========================
+
+The 'sandbox' architecture is designed to allow U-Boot to run under Linux on
+almost any hardware. To achieve this it builds U-Boot (so far as possible)
+as a normal C application with a main() and normal C libraries.
+
+All of U-Boot's architecture-specific code therefore cannot be built as part
+of the sandbox U-Boot. The purpose of running U-Boot under Linux is to test
+all the generic code, not specific to any one architecture. The idea is to
+create unit tests which we can run to test this upper level code.
+
+CONFIG_SANDBOX is defined when building a native board.
+
+The chosen vendor and board names are also 'sandbox', so there is a single
+board in board/sandbox/sandbox.
+
+CONFIG_SANDBOX_BIG_ENDIAN should be defined when running on big-endian
+machines.
+
+Note that standalone/API support is not available at present.
+
+
+Basic Operation
+---------------
+
+To run sandbox U-Boot use something like:
+
+   make sandbox_config all
+   ./u-boot
+
+Note:
+   If you get errors about 'sdl-config: Command not found' you may need to
+   install libsdl1.2-dev or similar to get SDL support. Alternatively you can
+   build sandbox without SDL (i.e. no display/keyboard support) by removing
+   the CONFIG_SANDBOX_SDL line in include/configs/sandbox.h or using:
+
+      make sandbox_config all NO_SDL=1
+      ./u-boot
+
+
+U-Boot will start on your computer, showing a sandbox emulation of the serial
+console:
+
+
+U-Boot 2014.04 (Mar 20 2014 - 19:06:00)
+
+DRAM:  128 MiB
+Using default environment
+
+In:    serial
+Out:   lcd
+Err:   lcd
+=>
+
+You can issue commands as your would normally. If the command you want is
+not supported you can add it to include/configs/sandbox.h.
+
+To exit, type 'reset' or press Ctrl-C.
+
+
+Console / LCD support
+---------------------
+
+Assuming that CONFIG_SANDBOX_SDL is defined when building, you can run the
+sandbox with LCD and keyboard emulation, using something like:
+
+   ./u-boot -d u-boot.dtb -l
+
+This will start U-Boot with a window showing the contents of the LCD. If
+that window has the focus then you will be able to type commands as you
+would on the console. You can adjust the display settings in the device
+tree file - see arch/sandbox/dts/sandbox.dts.
+
+
+Command-line Options
+--------------------
+
+Various options are available, mostly for test purposes. Use -h to see
+available options. Some of these are described below.
+
+The terminal is normally in what is called 'raw-with-sigs' mode. This means
+that you can use arrow keys for command editing and history, but if you
+press Ctrl-C, U-Boot will exit instead of handling this as a keypress.
+
+Other options are 'raw' (so Ctrl-C is handled within U-Boot) and 'cooked'
+(where the terminal is in cooked mode and cursor keys will not work, Ctrl-C
+will exit).
+
+As mentioned above, -l causes the LCD emulation window to be shown.
+
+A device tree binary file can be provided with -d. If you edit the source
+(it is stored at arch/sandbox/dts/sandbox.dts) you must rebuild U-Boot to
+recreate the binary file.
+
+To execute commands directly, use the -c option. You can specify a single
+command, or multiple commands separated by a semicolon, as is normal in
+U-Boot. Be careful with quoting as the shall will normally process and
+swallow quotes. When -c is used, U-Boot exists after the command is complete,
+but you can force it to go to interactive mode instead with -i.
+
+
+Memory Emulation
+----------------
+
+Memory emulation is supported, with the size set by CONFIG_SYS_SDRAM_SIZE.
+The -m option can be used to read memory from a file on start-up and write
+it when shutting down. This allows preserving of memory contents across
+test runs. You can tell U-Boot to remove the memory file after it is read
+(on start-up) with the --rm_memory option.
+
+To access U-Boot's emulated memory within the code, use map_sysmem(). This
+function is used throughout U-Boot to ensure that emulated memory is used
+rather than the U-Boot application memory. This provides memory starting
+at 0 and extending to the size of the emulation.
+
+
+Storing State
+-------------
+
+With sandbox you can write drivers which emulate the operation of drivers on
+real devices. Some of these drivers may want to record state which is
+preserved across U-Boot runs. This is particularly useful for testing. For
+example, the contents of a SPI flash chip should not disappear just because
+U-Boot exits.
+
+State is stored in a device tree file in a simple format which is driver-
+specific. You then use the -s option to specify the state file. Use -r to
+make U-Boot read the state on start-up (otherwise it starts empty) and -w
+to write it on exit (otherwise the stored state is left unchanged and any
+changes U-Boot made will be lost). You can also use -n to tell U-Boot to
+ignore any problems with missing state. This is useful when first running
+since the state file will be empty.
+
+The device tree file has one node for each driver - the driver can store
+whatever properties it likes in there. See 'Writing Sandbox Drivers' below
+for more details on how to get drivers to read and write their state.
+
+
+Running and Booting
+-------------------
+
+Since there is no machine architecture, sandbox U-Boot cannot actually boot
+a kernel, but it does support the bootm command. Filesystems, memory
+commands, hashing, FIT images, verified boot and many other features are
+supported.
+
+When 'bootm' runs a kernel, sandbox will exit, as U-Boot does on a real
+machine. Of course in this case, no kernel is run.
+
+It is also possible to tell U-Boot that it has jumped from a temporary
+previous U-Boot binary, with the -j option. That binary is automatically
+removed by the U-Boot that gets the -j option. This allows you to write
+tests which emulate the action of chain-loading U-Boot, typically used in
+a situation where a second 'updatable' U-Boot is stored on your board. It
+is very risky to overwrite or upgrade the only U-Boot on a board, since a
+power or other failure will brick the board and require return to the
+manufacturer in the case of a consumer device.
+
+
+Supported Drivers
+-----------------
+
+U-Boot sandbox supports these emulations:
+
+- Block devices
+- Chrome OS EC
+- GPIO
+- Host filesystem (access files on the host from within U-Boot)
+- Keyboard (Chrome OS)
+- LCD
+- Serial (for console only)
+- Sound (incomplete - see sandbox_sdl_sound_init() for details)
+- SPI
+- SPI flash
+- TPM (Trusted Platform Module)
+
+Notable omissions are networking and I2C.
+
+A wide range of commands is implemented. Filesystems which use a block
+device are supported.
+
+Also sandbox uses generic board (CONFIG_SYS_GENERIC_BOARD) and supports
+driver model (CONFIG_DM) and associated commands.
+
+
+SPI Emulation
+-------------
+
+Sandbox supports SPI and SPI flash emulation.
+
+This is controlled by the spi_sf argument, the format of which is:
+
+   bus:cs:device:file
+
+   bus    - SPI bus number
+   cs     - SPI chip select number
+   device - SPI device emulation name
+   file   - File on disk containing the data
+
+For example:
+
+ dd if=/dev/zero of=spi.bin bs=1M count=4
+ ./u-boot --spi_sf 0:0:M25P16:spi.bin
+
+With this setup you can issue SPI flash commands as normal:
+
+=>sf probe
+SF: Detected M25P16 with page size 64 KiB, total 2 MiB
+=>sf read 0 0 10000
+SF: 65536 bytes @ 0x0 Read: OK
+=>
+
+Since this is a full SPI emulation (rather than just flash), you can
+also use low-level SPI commands:
+
+=>sspi 0:0 32 9f
+FF202015
+
+This is issuing a READ_ID command and getting back 20 (ST Micro) part
+0x2015 (the M25P16).
+
+Drivers are connected to a particular bus/cs using sandbox's state
+structure (see the 'spi' member). A set of operations must be provided
+for each driver.
+
+
+Configuration settings for the curious are:
+
+CONFIG_SANDBOX_SPI_MAX_BUS
+       The maximum number of SPI buses supported by the driver (default 1).
+
+CONFIG_SANDBOX_SPI_MAX_CS
+       The maximum number of chip selects supported by the driver
+       (default 10).
+
+CONFIG_SPI_IDLE_VAL
+       The idle value on the SPI bus
+
+
+Writing Sandbox Drivers
+-----------------------
+
+Generally you should put your driver in a file containing the word 'sandbox'
+and put it in the same directory as other drivers of its type. You can then
+implement the same hooks as the other drivers.
+
+To access U-Boot's emulated memory, use map_sysmem() as mentioned above.
+
+If your driver needs to store configuration or state (such as SPI flash
+contents or emulated chip registers), you can use the device tree as
+described above. Define handlers for this with the SANDBOX_STATE_IO macro.
+See arch/sandbox/include/asm/state.h for documentation. In short you provide
+a node name, compatible string and functions to read and write the state.
+Since writing the state can expand the device tree, you may need to use
+state_setprop() which does this automatically and avoids running out of
+space. See existing code for examples.
+
+
+Testing
+-------
+
+U-Boot sandbox can be used to run various tests, mostly in the test/
+directory. These include:
+
+  command_ut
+     - Unit tests for command parsing and handling
+  compression
+     - Unit tests for U-Boot's compression algorithms, useful for
+       security checking. It supports gzip, bzip2, lzma and lzo.
+  driver model
+     - test/dm/test-dm.sh to run these.
+  image
+     - Unit tests for images:
+          test/image/test-imagetools.sh - multi-file images
+          test/image/test-fit.py        - FIT images
+  tracing
+     - test/trace/test-trace.sh tests the tracing system (see README.trace)
+  verified boot
+      - See test/vboot/vboot_test.sh for this
+
+If you change or enhance any of the above subsystems, you shold write or
+expand a test and include it with your patch series submission. Test
+coverage in U-Boot is limited, as we need to work to improve it.
+
+Note that many of these tests are implemented as commands which you can
+run natively on your board if desired (and enabled).
+
+It would be useful to have a central script to run all of these.
+
+--
+Simon Glass <sjg@chromium.org>
+Updated 22-Mar-14
diff --git a/board/sandbox/sandbox/README.sandbox b/board/sandbox/sandbox/README.sandbox
deleted file mode 100644 (file)
index 6989557..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2011 The Chromium OS Authors.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-Native Execution of U-Boot
-==========================
-
-The 'sandbox' architecture is designed to allow U-Boot to run under Linux on
-almost any hardware. To achieve this it builds U-Boot (so far as possible)
-as a normal C application with a main() and normal C libraries.
-
-All of U-Boot's architecture-specific code therefore cannot be built as part
-of the sandbox U-Boot. The purpose of running U-Boot under Linux is to test
-all the generic code, not specific to any one architecture. The idea is to
-create unit tests which we can run to test this upper level code.
-
-CONFIG_SANDBOX is defined when building a native board.
-
-The chosen vendor and board names are also 'sandbox', so there is a single
-board in board/sandbox/sandbox.
-
-CONFIG_SANDBOX_BIG_ENDIAN should be defined when running on big-endian
-machines.
-
-Note that standalone/API support is not available at present.
-
-The serial driver is a very simple implementation which reads and writes to
-the console. It does not set the terminal into raw mode, so cursor keys and
-history will not work yet.
-
-
-SPI Emulation
--------------
-
-Sandbox supports SPI and SPI flash emulation.
-
-This is controlled by the spi_sf argument, the format of which is:
-
-   bus:cs:device:file
-
-   bus    - SPI bus number
-   cs     - SPI chip select number
-   device - SPI device emulation name
-   file   - File on disk containing the data
-
-For example:
-
- dd if=/dev/zero of=spi.bin bs=1M count=4
- ./u-boot --spi_sf 0:0:M25P16:spi.bin
-
-With this setup you can issue SPI flash commands as normal:
-
-=>sf probe
-SF: Detected M25P16 with page size 64 KiB, total 2 MiB
-=>sf read 0 0 10000
-SF: 65536 bytes @ 0x0 Read: OK
-=>
-
-Since this is a full SPI emulation (rather than just flash), you can
-also use low-level SPI commands:
-
-=>sspi 0:0 32 9f
-FF202015
-
-This is issuing a READ_ID command and getting back 20 (ST Micro) part
-0x2015 (the M25P16).
-
-Drivers are connected to a particular bus/cs using sandbox's state
-structure (see the 'spi' member). A set of operations must be provided
-for each driver.
-
-
-Configuration settings for the curious are:
-
-CONFIG_SANDBOX_SPI_MAX_BUS
-       The maximum number of SPI buses supported by the driver (default 1).
-
-CONFIG_SANDBOX_SPI_MAX_CS
-       The maximum number of chip selects supported by the driver
-       (default 10).
-
-CONFIG_SPI_IDLE_VAL
-       The idle value on the SPI bus
-
-
-Tests
------
-
-So far we have no tests, but when we do these will be documented here.
index 7e8731bb3b9a4eaac210a7ff3a1f7aa1e8c65928..2782bcc2a71febd7c4cc7e507b2d0645883a6dc0 100644 (file)
@@ -128,12 +128,6 @@ do_userbutton(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                button = 0;
 
        gpio_free(gpio);
-       if (!button) {
-               /* LED0 - RED=1: GPIO2_0 2*32 = 64 */
-               gpio_request(BOARD_DFU_BUTTON_LED, "");
-               gpio_direction_output(BOARD_DFU_BUTTON_LED, 1);
-               gpio_set_value(BOARD_DFU_BUTTON_LED, 1);
-       }
 
        return button;
 }
@@ -144,6 +138,46 @@ U_BOOT_CMD(
        ""
 );
 #endif
+/*
+ * This command sets led
+ * Input -     name of led
+ *             value of led
+ * Returns -   1 if input does not match
+ *             0 if led was set
+ */
+static int
+do_setled(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       int gpio = 0;
+       if (argc != 3)
+               goto exit;
+#if defined(BOARD_STATUS_LED)
+       if (!strcmp(argv[1], "stat"))
+               gpio = BOARD_STATUS_LED;
+#endif
+#if defined(BOARD_DFU_BUTTON_LED)
+       if (!strcmp(argv[1], "dfu"))
+               gpio = BOARD_DFU_BUTTON_LED;
+#endif
+       /* If argument does not mach exit */
+       if (gpio == 0)
+               goto exit;
+       gpio_request(gpio, "");
+       gpio_direction_output(gpio, 1);
+       if (!strcmp(argv[2], "1"))
+               gpio_set_value(gpio, 1);
+       else
+               gpio_set_value(gpio, 0);
+       return 0;
+exit:
+       return 1;
+}
+
+U_BOOT_CMD(
+       led, CONFIG_SYS_MAXARGS, 2, do_setled,
+       "Set led on or off",
+       "dfu val - set dfu led\nled stat val - set status led"
+);
 
 static int
 do_usertestwdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
similarity index 63%
rename from board/siemens/dxr2/board.c
rename to board/siemens/draco/board.c
index 38ac93d79573eeb4fde953a71b3cbfe59499d0a3..9be2e344f8da37188cfcf12230016b0b91a3883e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Board functions for TI AM335X based dxr2 board
+ * Board functions for TI AM335X based draco board
  * (C) Copyright 2013 Siemens Schweiz AG
  * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
  *
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_SPL_BUILD
-static struct dxr2_baseboard_id __attribute__((section(".data"))) settings;
-/* @303MHz-i0 */
+static struct draco_baseboard_id __attribute__((section(".data"))) settings;
+
+#if DDR_PLL_FREQ == 303
+/* Default@303MHz-i0 */
+const struct ddr3_data ddr3_default = {
+       0x33524444, 0x56312e35, 0x0080, 0x0000, 0x003A, 0x003F, 0x009F,
+       0x0079, 0x0888A39B, 0x26247FDA, 0x501F821F, 0x00100206, 0x61A44A32,
+       0x0000093B, 0x0000014A,
+       "default name @303MHz           \0",
+       "default marking                \0",
+};
+#elif DDR_PLL_FREQ == 400
+/* Default@400MHz-i0 */
 const struct ddr3_data ddr3_default = {
-       0x33524444, 0x56312e34, 0x0080, 0x0000, 0x0038, 0x003E, 0x00A4,
-       0x0075, 0x0888A39B, 0x26247FDA, 0x501F821F, 0x00100206, 0x61A44A32,
+       0x33524444, 0x56312e35, 0x0080, 0x0000, 0x0039, 0x0046, 0x00ab,
+       0x0080, 0x0AAAA4DB, 0x26307FDA, 0x501F821F, 0x00100207, 0x61A45232,
        0x00000618, 0x0000014A,
+       "default name @400MHz           \0",
+       "default marking                \0",
 };
+#endif
 
 static void set_default_ddr3_timings(void)
 {
@@ -53,8 +67,12 @@ static void set_default_ddr3_timings(void)
 
 static void print_ddr3_timings(void)
 {
-       printf("\n\nDDR3 Timing parameters:\n");
-       printf("Diff     Eeprom  Default\n");
+       printf("\nDDR3\n");
+       printf("clock:\t\t%d MHz\n", DDR_PLL_FREQ);
+       printf("device:\t\t%s\n", settings.ddr3.manu_name);
+       printf("marking:\t%s\n", settings.ddr3.manu_marking);
+       printf("timing parameters\n");
+       printf("diff\teeprom\tdefault\n");
        PRINTARGS(magic);
        PRINTARGS(version);
        PRINTARGS(ddr3_sratio);
@@ -78,9 +96,9 @@ static void print_ddr3_timings(void)
 
 static void print_chip_data(void)
 {
-       printf("\n");
-       printf("Device: '%s'\n", settings.chip.sdevname);
-       printf("HW version: '%s'\n", settings.chip.shwver);
+       printf("\nCPU BOARD\n");
+       printf("device: \t'%s'\n", settings.chip.sdevname);
+       printf("hw version: \t'%s'\n", settings.chip.shwver);
 }
 #endif /* CONFIG_SPL_BUILD */
 
@@ -112,20 +130,18 @@ static int read_eeprom(void)
                printf("Using DDR3 settings from EEPROM\n");
        } else {
                if (ddr3_default.magic != settings.ddr3.magic)
-                       printf("Error: No valid DDR3 data in eeprom.\n");
+                       printf("Warning: No valid DDR3 data in eeprom.\n");
                if (ddr3_default.version != settings.ddr3.version)
-                       printf("Error: DDR3 data version does not match.\n");
+                       printf("Warning: DDR3 data version does not match.\n");
 
                printf("Using default settings\n");
                set_default_ddr3_timings();
        }
 
-       if (MAGIC_CHIP == settings.chip.magic) {
-               printf("Valid chip data in eeprom\n");
+       if (MAGIC_CHIP == settings.chip.magic)
                print_chip_data();
-       } else {
-               printf("Error: No chip data in eeprom\n");
-       }
+       else
+               printf("Warning: No chip data in eeprom\n");
 
        print_ddr3_timings();
 #endif
@@ -135,48 +151,48 @@ static int read_eeprom(void)
 #ifdef CONFIG_SPL_BUILD
 static void board_init_ddr(void)
 {
-struct emif_regs dxr2_ddr3_emif_reg_data = {
+struct emif_regs draco_ddr3_emif_reg_data = {
        .zq_config = 0x50074BE4,
 };
 
-struct ddr_data dxr2_ddr3_data = {
+struct ddr_data draco_ddr3_data = {
 };
 
-struct cmd_control dxr2_ddr3_cmd_ctrl_data = {
+struct cmd_control draco_ddr3_cmd_ctrl_data = {
 };
 
-struct ctrl_ioregs dxr2_ddr3_ioregs = {
+struct ctrl_ioregs draco_ddr3_ioregs = {
 };
 
        /* pass values from eeprom */
-       dxr2_ddr3_emif_reg_data.sdram_tim1 = settings.ddr3.sdram_tim1;
-       dxr2_ddr3_emif_reg_data.sdram_tim2 = settings.ddr3.sdram_tim2;
-       dxr2_ddr3_emif_reg_data.sdram_tim3 = settings.ddr3.sdram_tim3;
-       dxr2_ddr3_emif_reg_data.emif_ddr_phy_ctlr_1 =
+       draco_ddr3_emif_reg_data.sdram_tim1 = settings.ddr3.sdram_tim1;
+       draco_ddr3_emif_reg_data.sdram_tim2 = settings.ddr3.sdram_tim2;
+       draco_ddr3_emif_reg_data.sdram_tim3 = settings.ddr3.sdram_tim3;
+       draco_ddr3_emif_reg_data.emif_ddr_phy_ctlr_1 =
                settings.ddr3.emif_ddr_phy_ctlr_1;
-       dxr2_ddr3_emif_reg_data.sdram_config = settings.ddr3.sdram_config;
-       dxr2_ddr3_emif_reg_data.ref_ctrl = settings.ddr3.ref_ctrl;
-
-       dxr2_ddr3_data.datardsratio0 = settings.ddr3.dt0rdsratio0;
-       dxr2_ddr3_data.datawdsratio0 = settings.ddr3.dt0wdsratio0;
-       dxr2_ddr3_data.datafwsratio0 = settings.ddr3.dt0fwsratio0;
-       dxr2_ddr3_data.datawrsratio0 = settings.ddr3.dt0wrsratio0;
-
-       dxr2_ddr3_cmd_ctrl_data.cmd0csratio = settings.ddr3.ddr3_sratio;
-       dxr2_ddr3_cmd_ctrl_data.cmd0iclkout = settings.ddr3.iclkout;
-       dxr2_ddr3_cmd_ctrl_data.cmd1csratio = settings.ddr3.ddr3_sratio;
-       dxr2_ddr3_cmd_ctrl_data.cmd1iclkout = settings.ddr3.iclkout;
-       dxr2_ddr3_cmd_ctrl_data.cmd2csratio = settings.ddr3.ddr3_sratio;
-       dxr2_ddr3_cmd_ctrl_data.cmd2iclkout = settings.ddr3.iclkout;
-
-       dxr2_ddr3_ioregs.cm0ioctl = settings.ddr3.ioctr_val,
-       dxr2_ddr3_ioregs.cm1ioctl = settings.ddr3.ioctr_val,
-       dxr2_ddr3_ioregs.cm2ioctl = settings.ddr3.ioctr_val,
-       dxr2_ddr3_ioregs.dt0ioctl = settings.ddr3.ioctr_val,
-       dxr2_ddr3_ioregs.dt1ioctl = settings.ddr3.ioctr_val,
-
-       config_ddr(DDR_PLL_FREQ, &dxr2_ddr3_ioregs, &dxr2_ddr3_data,
-                  &dxr2_ddr3_cmd_ctrl_data, &dxr2_ddr3_emif_reg_data, 0);
+       draco_ddr3_emif_reg_data.sdram_config = settings.ddr3.sdram_config;
+       draco_ddr3_emif_reg_data.ref_ctrl = settings.ddr3.ref_ctrl;
+
+       draco_ddr3_data.datardsratio0 = settings.ddr3.dt0rdsratio0;
+       draco_ddr3_data.datawdsratio0 = settings.ddr3.dt0wdsratio0;
+       draco_ddr3_data.datafwsratio0 = settings.ddr3.dt0fwsratio0;
+       draco_ddr3_data.datawrsratio0 = settings.ddr3.dt0wrsratio0;
+
+       draco_ddr3_cmd_ctrl_data.cmd0csratio = settings.ddr3.ddr3_sratio;
+       draco_ddr3_cmd_ctrl_data.cmd0iclkout = settings.ddr3.iclkout;
+       draco_ddr3_cmd_ctrl_data.cmd1csratio = settings.ddr3.ddr3_sratio;
+       draco_ddr3_cmd_ctrl_data.cmd1iclkout = settings.ddr3.iclkout;
+       draco_ddr3_cmd_ctrl_data.cmd2csratio = settings.ddr3.ddr3_sratio;
+       draco_ddr3_cmd_ctrl_data.cmd2iclkout = settings.ddr3.iclkout;
+
+       draco_ddr3_ioregs.cm0ioctl = settings.ddr3.ioctr_val,
+       draco_ddr3_ioregs.cm1ioctl = settings.ddr3.ioctr_val,
+       draco_ddr3_ioregs.cm2ioctl = settings.ddr3.ioctr_val,
+       draco_ddr3_ioregs.dt0ioctl = settings.ddr3.ioctr_val,
+       draco_ddr3_ioregs.dt1ioctl = settings.ddr3.ioctr_val,
+
+       config_ddr(DDR_PLL_FREQ, &draco_ddr3_ioregs, &draco_ddr3_data,
+                  &draco_ddr3_cmd_ctrl_data, &draco_ddr3_emif_reg_data, 0);
 }
 
 static void spl_siemens_board_init(void)
similarity index 71%
rename from board/siemens/dxr2/board.h
rename to board/siemens/draco/board.h
index abf543232957140af3defaf66b4c5d23ddc65c28..ff8ab764c51c62cfb5b65b530430cc87406ddd73 100644 (file)
 #define MAGIC_CHIP     0x50494843
 
 /* Automatic generated definition */
-/* Wed, 18 Sep 2013 18:58:27 +0200 */
-/* From file: draco/ddr3-data-micron-v2.txt */
+/* Wed, 16 Apr 2014 16:50:41 +0200 */
+/* From file: draco/ddr3-data-universal-default@303MHz-i0-ES3.txt */
 struct ddr3_data {
        unsigned int magic;                     /* 0x33524444 */
-       unsigned int version;                   /* 0x56312e34 */
-       unsigned short int ddr3_sratio;         /* 0x0100 */
-       unsigned short int iclkout;             /* 0x0001 */
+       unsigned int version;                   /* 0x56312e35 */
+       unsigned short int ddr3_sratio;         /* 0x0080 */
+       unsigned short int iclkout;             /* 0x0000 */
        unsigned short int dt0rdsratio0;        /* 0x003A */
-       unsigned short int dt0wdsratio0;        /* 0x008A */
-       unsigned short int dt0fwsratio0;        /* 0x010B */
-       unsigned short int dt0wrsratio0;        /* 0x00C4 */
+       unsigned short int dt0wdsratio0;        /* 0x003F */
+       unsigned short int dt0fwsratio0;        /* 0x009F */
+       unsigned short int dt0wrsratio0;        /* 0x0079 */
        unsigned int sdram_tim1;                /* 0x0888A39B */
        unsigned int sdram_tim2;                /* 0x26247FDA */
        unsigned int sdram_tim3;                /* 0x501F821F */
        unsigned int emif_ddr_phy_ctlr_1;       /* 0x00100206 */
-       unsigned int sdram_config;              /* 0x61C04AB2 */
-       unsigned int ref_ctrl;                  /* 0x00000618 */
-       unsigned int ioctr_val;                 /* 0x0000018B */
+       unsigned int sdram_config;              /* 0x61A44A32 */
+       unsigned int ref_ctrl;                  /* 0x0000093B */
+       unsigned int ioctr_val;                 /* 0x0000014A */
+       char manu_name[32];                     /* "default@303MHz \0" */
+       char manu_marking[32];                  /* "default \0" */
 };
 
 struct chip_data {
@@ -48,7 +50,7 @@ struct chip_data {
        char shwver[7];
 };
 
-struct dxr2_baseboard_id {
+struct draco_baseboard_id {
        struct ddr3_data ddr3;
        struct chip_data chip;
 };
similarity index 99%
rename from board/siemens/dxr2/mux.c
rename to board/siemens/draco/mux.c
index f2314b5d3e533cf521f09a2d540aab19a7a39cc5..eaa3c70798ea8e60ecc1c86c87a5d1bc650eb33a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * pinmux setup for siemens dxr2 board
+ * pinmux setup for siemens draco board
  *
  * (C) Copyright 2013 Siemens Schweiz AG
  * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
index 98083d52cd9d6fc163de36998d13236dbc45c00d..64e69dc93ddc9f9823508f1a0427f5ac25ad8189 100644 (file)
@@ -70,11 +70,11 @@ struct cmd_control pxm2_ddr3_cmd_ctrl_data = {
 };
 
 const struct ctrl_ioregs ioregs = {
-       .cm0ioctl               = DXR2_IOCTRL_VAL,
-       .cm1ioctl               = DXR2_IOCTRL_VAL,
-       .cm2ioctl               = DXR2_IOCTRL_VAL,
-       .dt0ioctl               = DXR2_IOCTRL_VAL,
-       .dt1ioctl               = DXR2_IOCTRL_VAL,
+       .cm0ioctl               = DDR_IOCTRL_VAL,
+       .cm1ioctl               = DDR_IOCTRL_VAL,
+       .cm2ioctl               = DDR_IOCTRL_VAL,
+       .dt0ioctl               = DDR_IOCTRL_VAL,
+       .dt1ioctl               = DDR_IOCTRL_VAL,
 };
 
        config_ddr(DDR_PLL_FREQ, &ioregs, &pxm2_ddr3_data,
index e0ada3f6a5fa6edaabb29e5c87c62582f7ee7ea7..1752df2c4fba3f33a29f33b8b99c750754bdb686 100644 (file)
@@ -400,7 +400,7 @@ static int conf_disp_pll(int m, int n)
 #if defined(DISPL_PLL_SPREAD_SPECTRUM)
        writel(0x64, &cmwkup->resv6[3]); /* 0x50 */
        writel(0x800, &cmwkup->resv6[2]); /* 0x4c */
-       writel(readl(&cmwkup->clkmoddplldisp) | (1 << 12),
+       writel(readl(&cmwkup->clkmoddplldisp) | CM_CLKMODE_DPLL_SSC_EN_MASK,
               &cmwkup->clkmoddplldisp); /* 0x98 */
 #endif
        return 0;
index c06c994777776cab3e5756a5348630ab0ea7a112..b256222e186487515537d9d60dd85a66c44f300b 100644 (file)
@@ -163,7 +163,7 @@ static int fpga_wr_fn(int assert_write, int flush, int cookie)
        return assert_write;
 }
 
-static Xilinx_Spartan3_Slave_Serial_fns x600_fpga_fns = {
+static xilinx_spartan3_slave_serial_fns x600_fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_clk_fn,
@@ -173,7 +173,7 @@ static Xilinx_Spartan3_Slave_Serial_fns x600_fpga_fns = {
        fpga_post_config_fn,
 };
 
-static Xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
+static xilinx_desc fpga[CONFIG_FPGA_COUNT] = {
        XILINX_XC3S1200E_DESC(slave_serial, &x600_fpga_fns, 0)
 };
 
diff --git a/board/sunxi/Makefile b/board/sunxi/Makefile
new file mode 100644 (file)
index 0000000..cbf8f08
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+#
+# Based on some other board Makefile
+#
+# (C) Copyright 2000-2003
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+obj-y  += board.o
+obj-$(CONFIG_SUNXI_GMAC)       += gmac.o
+obj-$(CONFIG_CUBIETRUCK)       += dram_cubietruck.o
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
new file mode 100644 (file)
index 0000000..b05d0b9
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * (C) Copyright 2012-2013 Henrik Nordstrom <henrik@henriknordstrom.net>
+ * (C) Copyright 2013 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Some board init for the Allwinner A10-evb board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/dram.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mmc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* add board specific code here */
+int board_init(void)
+{
+       int id_pfr1;
+
+       gd->bd->bi_boot_params = (PHYS_SDRAM_0 + 0x100);
+
+       asm volatile("mrc p15, 0, %0, c0, c1, 1" : "=r"(id_pfr1));
+       debug("id_pfr1: 0x%08x\n", id_pfr1);
+       /* Generic Timer Extension available? */
+       if ((id_pfr1 >> 16) & 0xf) {
+               debug("Setting CNTFRQ\n");
+               /* CNTFRQ == 24 MHz */
+               asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r"(24000000));
+       }
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = get_ram_size((long *)PHYS_SDRAM_0, PHYS_SDRAM_0_SIZE);
+
+       return 0;
+}
+
+#ifdef CONFIG_GENERIC_MMC
+static void mmc_pinmux_setup(int sdc)
+{
+       unsigned int pin;
+
+       switch (sdc) {
+       case 0:
+               /* D1-PF0, D0-PF1, CLK-PF2, CMD-PF3, D3-PF4, D4-PF5 */
+               for (pin = SUNXI_GPF(0); pin <= SUNXI_GPF(5); pin++) {
+                       sunxi_gpio_set_cfgpin(pin, SUNXI_GPF0_SDC0);
+                       sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
+                       sunxi_gpio_set_drv(pin, 2);
+               }
+               break;
+
+       case 1:
+               /* CMD-PH22, CLK-PH23, D0~D3-PH24~27 : 5 */
+               for (pin = SUNXI_GPH(22); pin <= SUNXI_GPH(27); pin++) {
+                       sunxi_gpio_set_cfgpin(pin, SUN4I_GPH22_SDC1);
+                       sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
+                       sunxi_gpio_set_drv(pin, 2);
+               }
+               break;
+
+       case 2:
+               /* CMD-PC6, CLK-PC7, D0-PC8, D1-PC9, D2-PC10, D3-PC11 */
+               for (pin = SUNXI_GPC(6); pin <= SUNXI_GPC(11); pin++) {
+                       sunxi_gpio_set_cfgpin(pin, SUNXI_GPC6_SDC2);
+                       sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
+                       sunxi_gpio_set_drv(pin, 2);
+               }
+               break;
+
+       case 3:
+               /* CMD-PI4, CLK-PI5, D0~D3-PI6~9 : 2 */
+               for (pin = SUNXI_GPI(4); pin <= SUNXI_GPI(9); pin++) {
+                       sunxi_gpio_set_cfgpin(pin, SUN4I_GPI4_SDC3);
+                       sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
+                       sunxi_gpio_set_drv(pin, 2);
+               }
+               break;
+
+       default:
+               printf("sunxi: invalid MMC slot %d for pinmux setup\n", sdc);
+               break;
+       }
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       mmc_pinmux_setup(CONFIG_MMC_SUNXI_SLOT);
+       sunxi_mmc_init(CONFIG_MMC_SUNXI_SLOT);
+#if !defined (CONFIG_SPL_BUILD) && defined (CONFIG_MMC_SUNXI_SLOT_EXTRA)
+       mmc_pinmux_setup(CONFIG_MMC_SUNXI_SLOT_EXTRA);
+       sunxi_mmc_init(CONFIG_MMC_SUNXI_SLOT_EXTRA);
+#endif
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_SPL_BUILD
+void sunxi_board_init(void)
+{
+       unsigned long ramsize;
+
+       printf("DRAM:");
+       ramsize = sunxi_dram_init();
+       printf(" %lu MiB\n", ramsize >> 20);
+       if (!ramsize)
+               hang();
+}
+#endif
diff --git a/board/sunxi/dram_cubietruck.c b/board/sunxi/dram_cubietruck.c
new file mode 100644 (file)
index 0000000..fbcd687
--- /dev/null
@@ -0,0 +1,31 @@
+/* this file is generated, don't edit it yourself */
+
+#include <common.h>
+#include <asm/arch/dram.h>
+
+static struct dram_para dram_para = {
+       .clock = 432,
+       .type = 3,
+       .rank_num = 1,
+       .density = 4096,
+       .io_width = 8,
+       .bus_width = 32,
+       .cas = 9,
+       .zq = 0x7f,
+       .odt_en = 0,
+       .size = 2048,
+       .tpr0 = 0x42d899b7,
+       .tpr1 = 0xa090,
+       .tpr2 = 0x22a00,
+       .tpr3 = 0x0,
+       .tpr4 = 0x1,
+       .tpr5 = 0x0,
+       .emr1 = 0x4,
+       .emr2 = 0x10,
+       .emr3 = 0x0,
+};
+
+unsigned long sunxi_dram_init(void)
+{
+       return dramc_init(&dram_para);
+}
diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
new file mode 100644 (file)
index 0000000..e48328d
--- /dev/null
@@ -0,0 +1,32 @@
+#include <common.h>
+#include <netdev.h>
+#include <miiphy.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/gpio.h>
+
+int sunxi_gmac_initialize(bd_t *bis)
+{
+       int pin;
+       struct sunxi_ccm_reg *const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       /* Set up clock gating */
+       setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);
+
+       /* Set MII clock */
+       setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
+               CCM_GMAC_CTRL_GPIT_RGMII);
+
+       /* Configure pin mux settings for GMAC */
+       for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
+               /* skip unused pins in RGMII mode */
+               if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
+                       continue;
+               sunxi_gpio_set_cfgpin(pin, SUN7I_GPA0_GMAC);
+               sunxi_gpio_set_drv(pin, 3);
+       }
+
+       return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
+}
index 5964059dd1d44cb121e3692a5d02e3058afec10a..5d25fcd0a913629c48eb0723fbb7f31f98b26b32 100644 (file)
@@ -11,7 +11,6 @@
 #include <net.h>
 #include <netdev.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include <asm/mach-common/bits/otp.h>
 #include <asm/sdh.h>
 
@@ -47,7 +46,7 @@ static void board_init_enetaddr(uchar *mac_addr)
 
        if (!valid_mac) {
                puts("Warning: Generating 'random' MAC address\n");
-               bfin_gen_rand_mac(mac_addr);
+               eth_random_addr(mac_addr);
        }
 
        eth_setenv_enetaddr("ethaddr", mac_addr);
index 38aaae6870bdacf779a3b7ad9787544f21d1d10d..a4f0f7121b19d58dc758475b738c241795e44e45 100644 (file)
@@ -12,7 +12,6 @@
 #include <net.h>
 #include <netdev.h>
 #include <asm/blackfin.h>
-#include <asm/net.h>
 #include "../cm-bf537e/gpio_cfi_flash.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -32,7 +31,7 @@ static void board_init_enetaddr(char *var)
                return;
 
        printf("Warning: %s: generating 'random' MAC address\n", var);
-       bfin_gen_rand_mac(enetaddr);
+       eth_random_addr(enetaddr);
        eth_setenv_enetaddr(var, enetaddr);
 }
 
index c32d554ea429c601dc33234be013583351f8cbc0..b4a0a72bd0fec0bea8e049ffba7adedd4f6ca5b5 100644 (file)
@@ -190,7 +190,7 @@ int fpga_clk_fn(int assert_clk, int flush, int cookie)
        return assert_clk;
 }
 
-Xilinx_Spartan3_Slave_Serial_fns mt_ventoux_fpga_fns = {
+xilinx_spartan3_slave_serial_fns mt_ventoux_fpga_fns = {
        fpga_pre_config_fn,
        fpga_pgm_fn,
        fpga_clk_fn,
@@ -200,7 +200,7 @@ Xilinx_Spartan3_Slave_Serial_fns mt_ventoux_fpga_fns = {
        fpga_post_config_fn,
 };
 
-Xilinx_desc fpga = XILINX_XC6SLX4_DESC(slave_serial,
+xilinx_desc fpga = XILINX_XC6SLX4_DESC(slave_serial,
                        (void *)&mt_ventoux_fpga_fns, 0);
 
 /* Initialize the FPGA */
index f1951dc5ef0a3f0ed2e5c1b39de6b4c1331278a7..3c8b7a5d2d0a9278158a947f73b143d8713d5989 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 Freescale Semiconductor, Inc.
+ * Copyright (C) 2014 O.S. Systems Software LTDA.
  *
  * Author: Fabio Estevam <fabio.estevam@freescale.com>
  *
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
 #include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/mxc_i2c.h>
 #include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/video.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
 #include <common.h>
 #include <fsl_esdhc.h>
-#include <ipu_pixfmt.h>
 #include <mmc.h>
 #include <miiphy.h>
 #include <netdev.h>
-#include <linux/fb.h>
 #include <phy.h>
 #include <input.h>
+#include <i2c.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -41,6 +43,10 @@ DECLARE_GLOBAL_DATA_PTR;
 #define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
        PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
 
+#define I2C_PAD_CTRL   (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
+       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+
 #define USDHC1_CD_GPIO         IMX_GPIO_NR(1, 2)
 #define USDHC3_CD_GPIO         IMX_GPIO_NR(3, 9)
 #define ETH_PHY_RESET          IMX_GPIO_NR(3, 29)
@@ -210,38 +216,120 @@ int board_phy_config(struct phy_device *phydev)
 }
 
 #if defined(CONFIG_VIDEO_IPUV3)
-static struct fb_videomode const hdmi = {
-       .name           = "HDMI",
-       .refresh        = 60,
-       .xres           = 1024,
-       .yres           = 768,
-       .pixclock       = 15385,
-       .left_margin    = 220,
-       .right_margin   = 40,
-       .upper_margin   = 21,
-       .lower_margin   = 7,
-       .hsync_len      = 60,
-       .vsync_len      = 10,
-       .sync           = FB_SYNC_EXT,
-       .vmode          = FB_VMODE_NONINTERLACED
+struct i2c_pads_info i2c2_pad_info = {
+       .scl = {
+               .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL
+                       | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_KEY_COL3__GPIO4_IO12
+                       | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(4, 12)
+       },
+       .sda = {
+               .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA
+                       | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13
+                       | MUX_PAD_CTRL(I2C_PAD_CTRL),
+               .gp = IMX_GPIO_NR(4, 13)
+       }
 };
 
-int board_video_skip(void)
-{
-       int ret;
+static iomux_v3_cfg_t const fwadapt_7wvga_pads[] = {
+       MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK,
+       MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02, /* HSync */
+       MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03, /* VSync */
+       MX6_PAD_DI0_PIN4__IPU1_DI0_PIN04
+               | MUX_PAD_CTRL(PAD_CTL_DSE_120ohm), /* Contrast */
+       MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15, /* DISP0_DRDY */
+
+       MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00,
+       MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01,
+       MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02,
+       MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03,
+       MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04,
+       MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05,
+       MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06,
+       MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07,
+       MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08,
+       MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09,
+       MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10,
+       MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11,
+       MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12,
+       MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13,
+       MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14,
+       MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15,
+       MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16,
+       MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17,
+
+       MX6_PAD_SD4_DAT2__GPIO2_IO10
+               | MUX_PAD_CTRL(NO_PAD_CTRL), /* DISP0_BKLEN */
+       MX6_PAD_SD4_DAT3__GPIO2_IO11
+               | MUX_PAD_CTRL(NO_PAD_CTRL), /* DISP0_VDDEN */
+};
 
-       ret = ipuv3_fb_init(&hdmi, 0, IPU_PIX_FMT_RGB24);
+static void do_enable_hdmi(struct display_info_t const *dev)
+{
+       imx_enable_hdmi_phy();
+}
 
-       if (ret) {
-               printf("HDMI cannot be configured: %d\n", ret);
-               return ret;
-       }
+static int detect_i2c(struct display_info_t const *dev)
+{
+       return (0 == i2c_set_bus_num(dev->bus)) &&
+                       (0 == i2c_probe(dev->addr));
+}
 
-       imx_enable_hdmi_phy();
+static void enable_fwadapt_7wvga(struct display_info_t const *dev)
+{
+       imx_iomux_v3_setup_multiple_pads(
+               fwadapt_7wvga_pads,
+               ARRAY_SIZE(fwadapt_7wvga_pads));
 
-       return ret;
+       gpio_direction_output(IMX_GPIO_NR(2, 10), 1);
+       gpio_direction_output(IMX_GPIO_NR(2, 11), 1);
 }
 
+struct display_info_t const displays[] = {{
+       .bus    = -1,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB24,
+       .detect = detect_hdmi,
+       .enable = do_enable_hdmi,
+       .mode   = {
+               .name           = "HDMI",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 220,
+               .right_margin   = 40,
+               .upper_margin   = 21,
+               .lower_margin   = 7,
+               .hsync_len      = 60,
+               .vsync_len      = 10,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} }, {
+       .bus    = 1,
+       .addr   = 0x10,
+       .pixfmt = IPU_PIX_FMT_RGB666,
+       .detect = detect_i2c,
+       .enable = enable_fwadapt_7wvga,
+       .mode   = {
+               .name           = "FWBADAPT-LCD-F07A-0102",
+               .refresh        = 60,
+               .xres           = 800,
+               .yres           = 480,
+               .pixclock       = 33260,
+               .left_margin    = 128,
+               .right_margin   = 128,
+               .upper_margin   = 22,
+               .lower_margin   = 22,
+               .hsync_len      = 1,
+               .vsync_len      = 1,
+               .sync           = 0,
+               .vmode          = FB_VMODE_NONINTERLACED
+} } };
+size_t display_count = ARRAY_SIZE(displays);
+
 static void setup_display(void)
 {
        struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -254,6 +342,10 @@ static void setup_display(void)
        reg |= (CHSCCDR_CLK_SEL_LDB_DI0
                << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
        writel(reg, &mxc_ccm->chsccdr);
+
+       /* Disable LCD backlight */
+       imx_iomux_v3_setup_pad(MX6_PAD_DI0_PIN4__GPIO4_IO20);
+       gpio_direction_input(IMX_GPIO_NR(4, 20));
 }
 #endif /* CONFIG_VIDEO_IPUV3 */
 
@@ -305,6 +397,8 @@ int board_init(void)
        /* address of boot parameters */
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
+       setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c2_pad_info);
+
        return 0;
 }
 
diff --git a/board/xilinx/zynq/.gitignore b/board/xilinx/zynq/.gitignore
new file mode 100644 (file)
index 0000000..68b8edd
--- /dev/null
@@ -0,0 +1 @@
+ps7_init.[ch]
index 3f19a1cd8b23d281cacb5f3a823f8e899fc79457..fd93f6317baf22b44fde522dd7db83d50755e9be 100644 (file)
@@ -6,4 +6,7 @@
 #
 
 obj-y  := board.o
-obj-$(CONFIG_SPL_BUILD)        += ps7_init.o
+
+# Please copy ps7_init.c/h from hw project to this directory
+obj-$(CONFIG_SPL_BUILD) += \
+               $(if $(wildcard $(srctree)/$(src)/ps7_init.c), ps7_init.o)
index 485a5e4a249251d4c478884143a754b90b4e1536..258632e52b0b602cad9c7368f66e01d87aa04ccb 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <common.h>
 #include <fdtdec.h>
+#include <fpga.h>
+#include <mmc.h>
 #include <netdev.h>
 #include <zynqpl.h>
 #include <asm/arch/hardware.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_FPGA
-Xilinx_desc fpga;
+#if (defined(CONFIG_FPGA) && !defined(CONFIG_SPL_BUILD)) || \
+    (defined(CONFIG_SPL_FPGA_SUPPORT) && defined(CONFIG_SPL_BUILD))
+static xilinx_desc fpga;
 
 /* It can be done differently */
-Xilinx_desc fpga010 = XILINX_XC7Z010_DESC(0x10);
-Xilinx_desc fpga015 = XILINX_XC7Z015_DESC(0x15);
-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);
+static xilinx_desc fpga010 = XILINX_XC7Z010_DESC(0x10);
+static xilinx_desc fpga015 = XILINX_XC7Z015_DESC(0x15);
+static xilinx_desc fpga020 = XILINX_XC7Z020_DESC(0x20);
+static xilinx_desc fpga030 = XILINX_XC7Z030_DESC(0x30);
+static xilinx_desc fpga045 = XILINX_XC7Z045_DESC(0x45);
+static xilinx_desc fpga100 = XILINX_XC7Z100_DESC(0x100);
 #endif
 
 int board_init(void)
 {
-#ifdef CONFIG_FPGA
+#if (defined(CONFIG_FPGA) && !defined(CONFIG_SPL_BUILD)) || \
+    (defined(CONFIG_SPL_FPGA_SUPPORT) && defined(CONFIG_SPL_BUILD))
        u32 idcode;
 
        idcode = zynq_slcr_get_idcode();
@@ -54,7 +58,8 @@ int board_init(void)
        }
 #endif
 
-#ifdef CONFIG_FPGA
+#if (defined(CONFIG_FPGA) && !defined(CONFIG_SPL_BUILD)) || \
+    (defined(CONFIG_SPL_FPGA_SUPPORT) && defined(CONFIG_SPL_BUILD))
        fpga_init();
        fpga_add(fpga_xilinx, &fpga);
 #endif
diff --git a/board/xilinx/zynq/ps7_init.c b/board/xilinx/zynq/ps7_init.c
deleted file mode 100644 (file)
index c47da09..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * (C) Copyright 2014 Xilinx, Inc. Michal Simek
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <asm/arch/spl.h>
-
-__weak void ps7_init(void)
-{
-       puts("Please copy ps7_init.c/h from hw project\n");
-}
diff --git a/board/xilinx/zynq/xil_io.h b/board/xilinx/zynq/xil_io.h
new file mode 100644 (file)
index 0000000..e59a977
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef XIL_IO_H           /* prevent circular inclusions */
+#define XIL_IO_H
+
+/*
+ * This empty file is here because ps7_init.c exported by hw project
+ * has #include "xil_io.h" line.
+ */
+
+#endif /* XIL_IO_H */
index 880d972523b9eb81c7e99065b904937c0fdaa6d8..866f51287bfe52d625644146418c58f1acc8881e 100644 (file)
 # Status, Arch, CPU:SPLCPU, SoC, Vendor, Board name, Target, Options, Maintainers
 ###########################################################################################################
 
-Active  aarch64     armv8          -           armltd          vexpress64          vexpress_aemv8a                      vexpress_aemv8a:ARM64                                                                                                             David Feng <fenghua@phytium.com.cn>
-Active  arc         arc700         -           synopsys        -                   axs101                               -                                                                                                                                 Alexey Brodkin <abrodkin@synopsys.com>
-Active  arc         arc700         -           synopsys        <none>              arcangel4                            -                                                                                                                                 Alexey Brodkin <abrodkin@synopsys.com>
-Active  arc         arc700         -           synopsys        <none>              arcangel4-be                         -                                                                                                                                 Alexey Brodkin <abrodkin@synopsys.com>
-Active  arm         arm1136        -           armltd          integrator          integratorcp_cm1136                  integratorcp:CM1136                                                                                                               Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm1136        mx31        -               -                   imx31_phycore                        -                                                                                                                                 -
-Active  arm         arm1136        mx31        davedenx        -                   qong                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  arm         arm1136        mx31        freescale       -                   mx31pdk                              -                                                                                                                                 Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         arm1136        mx31        hale            -                   tt01                                 -                                                                                                                                 Helmut Raiger <helmut.raiger@hale.at>
-Active  arm         arm1136        mx31        logicpd         -                   imx31_litekit                        -                                                                                                                                 -
-Active  arm         arm1136        mx35        -               -                   woodburn                             -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         arm1136        mx35        -               woodburn            woodburn_sd                          woodburn_sd:IMX_CONFIG=board/woodburn/imximage.cfg                                                                                -
-Active  arm         arm1136        mx35        CarMediaLab     -                   flea3                                -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         arm1136        mx35        freescale       -                   mx35pdk                              -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         arm1176        bcm2835     raspberrypi     rpi_b               rpi_b                                -                                                                                                                                 Stephen Warren <swarren@wwwdotorg.org>
-Active  arm         arm1176        tnetv107x   ti              tnetv107xevm        tnetv107x_evm                        -                                                                                                                                 Chan-Taek Park <c-park@ti.com>
-Active  arm         arm720t        -           armltd          integrator          integratorap_cm720t                  integratorap:CM720T                                                                                                               Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm920t        -           armltd          integrator          integratorap_cm920t                  integratorap:CM920T                                                                                                               Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm920t        -           armltd          integrator          integratorcp_cm920t                  integratorcp:CM920T                                                                                                               Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm920t        a320        faraday         -                   a320evb                              -                                                                                                                                 Po-Yu Chuang <ratbert@faraday-tech.com>
-Active  arm         arm920t        at91        atmel           at91rm9200ek        at91rm9200ek                         -                                                                                                                                 Andreas Bießmann <andreas.devel@gmail.com>
-Active  arm         arm920t        at91        atmel           at91rm9200ek        at91rm9200ek_ram                     at91rm9200ek:RAMBOOT                                                                                                              Andreas Bießmann <andreas.devel@gmail.com>
-Active  arm         arm920t        at91        BuS             eb_cpux9k2          eb_cpux9k2                           -                                                                                                                                 Jens Scharsig <esw@bus-elektronik.de>
-Active  arm         arm920t        at91        BuS             eb_cpux9k2          eb_cpux9k2_ram                       eb_cpux9k2:RAMBOOT                                                                                                                Jens Scharsig <esw@bus-elektronik.de>
-Active  arm         arm920t        at91        eukrea          cpuat91             cpuat91                              -                                                                                                                                 Eric Benard <eric@eukrea.com>
-Active  arm         arm920t        at91        eukrea          cpuat91             cpuat91_ram                          cpuat91:RAMBOOT                                                                                                                   Eric Benard <eric@eukrea.com>
-Active  arm         arm920t        imx         -               -                   scb9328                              -                                                                                                                                 Torsten Koschorrek <koschorrek@synertronixx.de>
-Active  arm         arm920t        ks8695      -               -                   cm4008                               -                                                                                                                                 Greg Ungerer <greg.ungerer@opengear.com>
-Active  arm         arm920t        ks8695      -               -                   cm41xx                               -                                                                                                                                 -
-Active  arm         arm920t        s3c24x0     mpl             vcma9               VCMA9                                -                                                                                                                                 David Müller <d.mueller@elsoft.ch>
-Active  arm         arm920t        s3c24x0     samsung         -                   smdk2410                             -                                                                                                                                 David Müller <d.mueller@elsoft.ch>
-Active  arm         arm926ejs      -           armltd          integrator          integratorap_cm926ejs                integratorap:CM926EJ_S                                                                                                            Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm926ejs      -           armltd          integrator          integratorcp_cm926ejs                integratorcp:CM924EJ_S                                                                                                            Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm926ejs      armada100   Marvell         -                   aspenite                             -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
-Active  arm         arm926ejs      armada100   Marvell         -                   gplugd                               -                                                                                                                                 Ajay Bhargav <ajay.bhargav@einfochips.com>
-Active  arm         arm926ejs      at91        -               -                   afeb9260                             -                                                                                                                                 Sergey Lapin <slapin@ossfans.org>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9260ek_dataflash_cs0          at91sam9260ek:AT91SAM9260,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9260ek_dataflash_cs1          at91sam9260ek:AT91SAM9260,SYS_USE_DATAFLASH_CS1                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9260ek_nandflash              at91sam9260ek:AT91SAM9260,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_2mmc_nandflash         at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH                                                                    Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_dataflash_cs0          at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_dataflash_cs1          at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_mmc                    at91sam9260ek:AT91SAM9G20,SYS_USE_MMC                                                                                             Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_nandflash              at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9xeek_dataflash_cs0           at91sam9260ek:AT91SAM9XE,SYS_USE_DATAFLASH_CS0                                                                                    Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9xeek_dataflash_cs1           at91sam9260ek:AT91SAM9XE,SYS_USE_DATAFLASH_CS1                                                                                    Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9xeek_nandflash               at91sam9260ek:AT91SAM9XE,SYS_USE_NANDFLASH                                                                                        Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9261ek_dataflash_cs0          at91sam9261ek:AT91SAM9261,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9261ek_dataflash_cs3          at91sam9261ek:AT91SAM9261,SYS_USE_DATAFLASH_CS3                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9261ek_nandflash              at91sam9261ek:AT91SAM9261,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9g10ek_dataflash_cs0          at91sam9261ek:AT91SAM9G10,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9g10ek_dataflash_cs3          at91sam9261ek:AT91SAM9G10,SYS_USE_DATAFLASH_CS3                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9g10ek_nandflash              at91sam9261ek:AT91SAM9G10,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_dataflash              at91sam9263ek:AT91SAM9263,SYS_USE_DATAFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_dataflash_cs0          at91sam9263ek:AT91SAM9263,SYS_USE_DATAFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_nandflash              at91sam9263ek:AT91SAM9263,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_norflash               at91sam9263ek:AT91SAM9263,SYS_USE_NORFLASH                                                                                        Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_norflash_boot          at91sam9263ek:AT91SAM9263,SYS_USE_BOOT_NORFLASH                                                                                   Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9m10g45ek    at91sam9m10g45ek_nandflash           at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH                                                                                 Bo Shen<voice.shen@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9n12ek       at91sam9n12ek_mmc                    at91sam9n12ek:AT91SAM9N12,SYS_USE_MMC                                                                                             Josh Wu <josh.wu@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9n12ek       at91sam9n12ek_nandflash              at91sam9n12ek:AT91SAM9N12,SYS_USE_NANDFLASH                                                                                       Josh Wu <josh.wu@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9n12ek       at91sam9n12ek_spiflash               at91sam9n12ek:AT91SAM9N12,SYS_USE_SPIFLASH                                                                                        Josh Wu <josh.wu@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9rlek        at91sam9rlek_dataflash               at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH                                                                                         Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9rlek        at91sam9rlek_nandflash               at91sam9rlek:AT91SAM9RL,SYS_USE_NANDFLASH                                                                                         Stelian Pop <stelian@popies.net>
-Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_dataflash               at91sam9x5ek:AT91SAM9X5,SYS_USE_DATAFLASH                                                                                         Bo Shen <voice.shen@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_mmc                     at91sam9x5ek:AT91SAM9X5,SYS_USE_MMC                                                                                               Bo Shen <voice.shen@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_nandflash               at91sam9x5ek:AT91SAM9X5,SYS_USE_NANDFLASH                                                                                         Bo Shen <voice.shen@atmel.com>
-Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_spiflash                at91sam9x5ek:AT91SAM9X5,SYS_USE_SPIFLASH                                                                                          Bo Shen <voice.shen@atmel.com>
-Active  arm         arm926ejs      at91        bluewater       -                   snapper9260                          snapper9260:AT91SAM9260                                                                                                           Ryan Mallon <ryan@bluewatersys.com>
-Active  arm         arm926ejs      at91        bluewater       snapper9260         snapper9g20                          snapper9260:AT91SAM9G20                                                                                                           Ryan Mallon <ryan@bluewatersys.com>
-Active  arm         arm926ejs      at91        BuS             vl_ma2sc            vl_ma2sc                             -                                                                                                                                 Jens Scharsig <esw@bus-elektronik.de>
-Active  arm         arm926ejs      at91        BuS             vl_ma2sc            vl_ma2sc_ram                         vl_ma2sc:RAMLOAD                                                                                                                  Jens Scharsig <esw@bus-elektronik.de>
-Active  arm         arm926ejs      at91        calao           sbc35_a9g20         sbc35_a9g20_eeprom                   sbc35_a9g20:AT91SAM9G20,SYS_USE_EEPROM                                                                                            Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Active  arm         arm926ejs      at91        calao           sbc35_a9g20         sbc35_a9g20_nandflash                sbc35_a9g20:AT91SAM9G20,SYS_USE_NANDFLASH                                                                                         Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9260_eeprom                     tny_a9260:AT91SAM9260,SYS_USE_EEPROM                                                                                              Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9260_nandflash                  tny_a9260:AT91SAM9260,SYS_USE_NANDFLASH                                                                                           Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9g20_eeprom                     tny_a9260:AT91SAM9G20,SYS_USE_EEPROM                                                                                              Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9g20_nandflash                  tny_a9260:AT91SAM9G20,SYS_USE_NANDFLASH                                                                                           Albin Tonnerre <albin.tonnerre@free-electrons.com>
-Active  arm         arm926ejs      at91        calao           usb_a9263           usb_a9263_dataflash                  usb_a9263:AT91SAM9263,SYS_USE_DATAFLASH                                                                                           Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
-Active  arm         arm926ejs      at91        egnite          ethernut5           ethernut5                            ethernut5:AT91SAM9XE                                                                                                              egnite GmbH <info@egnite.de>
-Active  arm         arm926ejs      at91        emk             top9000             top9000eval_xe                       top9000:EVAL9000                                                                                                                  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active  arm         arm926ejs      at91        emk             top9000             top9000su_xe                         top9000:SU9000                                                                                                                    Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active  arm         arm926ejs      at91        esd             meesc               meesc                                meesc:AT91SAM9263,SYS_USE_NANDFLASH                                                                                               Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active  arm         arm926ejs      at91        esd             meesc               meesc_dataflash                      meesc:AT91SAM9263,SYS_USE_DATAFLASH                                                                                               Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active  arm         arm926ejs      at91        esd             otc570              otc570                               otc570:AT91SAM9263,SYS_USE_NANDFLASH                                                                                              Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active  arm         arm926ejs      at91        esd             otc570              otc570_dataflash                     otc570:AT91SAM9263,SYS_USE_DATAFLASH                                                                                              Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260                              cpu9260:CPU9260                                                                                                                   Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260_128M                         cpu9260:CPU9260,CPU9260_128M                                                                                                      Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260_nand                         cpu9260:CPU9260,NANDBOOT                                                                                                          Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260_nand_128M                    cpu9260:CPU9260,CPU9260_128M,NANDBOOT                                                                                             Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20                              cpu9260:CPU9G20                                                                                                                   Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20_128M                         cpu9260:CPU9G20,CPU9G20_128M                                                                                                      Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20_nand                         cpu9260:CPU9G20,NANDBOOT                                                                                                          Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20_nand_128M                    cpu9260:CPU9G20,CPU9G20_128M,NANDBOOT                                                                                             Eric Benard <eric@eukrea.com>
-Active  arm         arm926ejs      at91        ronetix         pm9261              pm9261                               pm9261:AT91SAM9261                                                                                                                Ilko Iliev <iliev@ronetix.at>
-Active  arm         arm926ejs      at91        ronetix         pm9263              pm9263                               pm9263:AT91SAM9263                                                                                                                Ilko Iliev <iliev@ronetix.at>
-Active  arm         arm926ejs      at91        ronetix         pm9g45              pm9g45                               pm9g45:AT91SAM9G45                                                                                                                Ilko Iliev <iliev@ronetix.at>
-Active  arm         arm926ejs      at91        siemens         corvus              corvus                               corvus:AT91SAM9M10G45,SYS_USE_NANDFLASH                                                                                           Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      at91        siemens         taurus              axm                                  taurus:AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM                                                                                       Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      at91        siemens         taurus              taurus                               taurus:AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS                                                                                    Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      at91        taskit          stamp9g20           portuxg20                            stamp9g20:AT91SAM9G20,PORTUXG20                                                                                                   Markus Hubig <mhubig@imko.de>
-Active  arm         arm926ejs      at91        taskit          stamp9g20           stamp9g20                            stamp9g20:AT91SAM9G20                                                                                                             Markus Hubig <mhubig@imko.de>
-Active  arm         arm926ejs      davinci     ait             cam_enc_4xx         cam_enc_4xx                          -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      davinci     Barix           ipam390             ipam390                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      davinci     davinci         da8xxevm            da830evm                             -                                                                                                                                 Nick Thompson <nick.thompson@gefanuc.com>
-Active  arm         arm926ejs      davinci     davinci         da8xxevm            da850_am18xxevm                      da850evm:DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR_LEN=2,SYS_I2C_EEPROM_ADDR=0x50                                    Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         da8xxevm            da850evm                             da850evm:MAC_ADDR_IN_SPIFLASH                                                                                                     Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         da8xxevm            da850evm_direct_nor                  da850evm:MAC_ADDR_IN_SPIFLASH,USE_NOR,DIRECT_NOR_BOOT                                                                             Sudhakar Rajashekhara <sudhakar.raj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         da8xxevm            hawkboard                            -                                                                                                                                 Syed Mohammed Khasim <sm.khasim@gmail.com>:Sughosh Ganu <urwithsughosh@gmail.com>
-Active  arm         arm926ejs      davinci     davinci         da8xxevm            hawkboard_uart                       hawkboard:UART_U_BOOT                                                                                                             Syed Mohammed Khasim <sm.khasim@gmail.com>:Sughosh Ganu <urwithsughosh@gmail.com>
-Active  arm         arm926ejs      davinci     davinci         dm355evm            davinci_dm355evm                     -                                                                                                                                 Sandeep Paulraj <s-paulraj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         dm355leopard        davinci_dm355leopard                 -                                                                                                                                 Sandeep Paulraj <s-paulraj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         dm365evm            davinci_dm365evm                     -                                                                                                                                 Sandeep Paulraj <s-paulraj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         dm6467evm           davinci_dm6467evm                    davinci_dm6467evm:REFCLK_FREQ=27000000                                                                                            Sandeep Paulraj <s-paulraj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         dm6467evm           davinci_dm6467Tevm                   davinci_dm6467evm:DAVINCI_DM6467TEVM,REFCLK_FREQ=33000000                                                                         Sandeep Paulraj <s-paulraj@ti.com>
-Active  arm         arm926ejs      davinci     davinci         dvevm               davinci_dvevm                        -                                                                                                                                 -
-Active  arm         arm926ejs      davinci     davinci         ea20                ea20                                 -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         arm926ejs      davinci     davinci         schmoogie           davinci_schmoogie                    -                                                                                                                                 -
-Active  arm         arm926ejs      davinci     davinci         sffsdr              davinci_sffsdr                       -                                                                                                                                 -
-Active  arm         arm926ejs      davinci     davinci         sonata              davinci_sonata                       -                                                                                                                                 -
-Active  arm         arm926ejs      davinci     enbw            enbw_cmc            enbw_cmc                             -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      davinci     omicron         calimain            calimain                             -                                                                                                                                 Manfred Rudigier <manfred.rudigier@omicron.at>:Christian Riesch <christian.riesch@omicron.at>
-Active  arm         arm926ejs      kirkwood    buffalo         lsxl                lschlv2                              lsxl:LSCHLV2                                                                                                                      Michael Walle <michael@walle.cc>
-Active  arm         arm926ejs      kirkwood    buffalo         lsxl                lsxhl                                lsxl:LSXHL                                                                                                                        Michael Walle <michael@walle.cc>
-Active  arm         arm926ejs      kirkwood    cloudengines    -                   pogo_e02                             -                                                                                                                                 Dave Purdy <david.c.purdy@gmail.com>
-Active  arm         arm926ejs      kirkwood    d-link          -                   dns325                               -                                                                                                                                 Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
-Active  arm         arm926ejs      kirkwood    iomega          -                   iconnect                             -                                                                                                                                 Luka Perkov <luka@openwrt.org>
-Active  arm         arm926ejs      kirkwood    karo            tk71                tk71                                 -                                                                                                                                 -
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              km_kirkwood                          km_kirkwood:KM_KIRKWOOD                                                                                                           Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              km_kirkwood_128m16                   km_kirkwood:KM_KIRKWOOD_128M16                                                                                                    Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              km_kirkwood_pci                      km_kirkwood:KM_KIRKWOOD_PCI                                                                                                       Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmcoge5un                            km_kirkwood:KM_COGE5UN                                                                                                            Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmnusa                               km_kirkwood:KM_NUSA                                                                                                               Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmsugp1                              km_kirkwood:KM_SUGP1                                                                                                              Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmsuv31                              km_kirkwood:KM_SUV31                                                                                                              Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              mgcoge3un                            km_kirkwood:KM_MGCOGE3UN                                                                                                          Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    keymile         km_arm              portl2                               km_kirkwood:KM_PORTL2                                                                                                             Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  arm         arm926ejs      kirkwood    LaCie           net2big_v2          d2net_v2                             lacie_kw:D2NET_V2                                                                                                                 -
-Active  arm         arm926ejs      kirkwood    LaCie           net2big_v2          net2big_v2                           lacie_kw:NET2BIG_V2                                                                                                               Simon Guinot <simon.guinot@sequanux.org>
-Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         inetspace_v2                         lacie_kw:INETSPACE_V2                                                                                                             Simon Guinot <simon.guinot@sequanux.org>
-Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_lite_v2                     lacie_kw:NETSPACE_LITE_V2                                                                                                         -
-Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_max_v2                      lacie_kw:NETSPACE_MAX_V2                                                                                                          Simon Guinot <simon.guinot@sequanux.org>
-Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_mini_v2                     lacie_kw:NETSPACE_MINI_V2                                                                                                         -
-Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_v2                          lacie_kw:NETSPACE_V2                                                                                                              Simon Guinot <simon.guinot@sequanux.org>
-Active  arm         arm926ejs      kirkwood    LaCie           wireless_space      wireless_space                       -                                                                                                                                 -
-Active  arm         arm926ejs      kirkwood    Marvell         -                   dreamplug                            -                                                                                                                                 Jason Cooper <u-boot@lakedaemon.net>
-Active  arm         arm926ejs      kirkwood    Marvell         -                   guruplug                             -                                                                                                                                 Siddarth Gore <gores@marvell.com>
-Active  arm         arm926ejs      kirkwood    Marvell         -                   mv88f6281gtw_ge                      -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
-Active  arm         arm926ejs      kirkwood    Marvell         -                   rd6281a                              -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
-Active  arm         arm926ejs      kirkwood    Marvell         -                   sheevaplug                           -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
-Active  arm         arm926ejs      kirkwood    Marvell         openrd              openrd_base                          openrd:BOARD_IS_OPENRD_BASE                                                                                                       Prafulla Wadaskar <prafulla@marvell.com>
-Active  arm         arm926ejs      kirkwood    Marvell         openrd              openrd_client                        openrd:BOARD_IS_OPENRD_CLIENT                                                                                                     -
-Active  arm         arm926ejs      kirkwood    Marvell         openrd              openrd_ultimate                      openrd:BOARD_IS_OPENRD_ULTIMATE                                                                                                   -
-Active  arm         arm926ejs      kirkwood    raidsonic       ib62x0              ib62x0                               -                                                                                                                                 Luka Perkov <luka@openwrt.org>
-Active  arm         arm926ejs      kirkwood    Seagate         -                   dockstar                             -                                                                                                                                 Eric Cooper <ecc@cmu.edu>
-Active  arm         arm926ejs      kirkwood    Seagate         -                   goflexhome                           -                                                                                                                                 Suriyan Ramasami <suriyan.r@gmail.com>
-Active  arm         arm926ejs      lpc32xx     timll           devkit3250          devkit3250                           -                                                                                                                                 Vladimir Zapolskiy <vz@mleia.com>
-Active  arm         arm926ejs      mb86r0x     syteco          jadecpu             jadecpu                              -                                                                                                                                 Matthias Weisser <weisserm@arcor.de>
-Active  arm         arm926ejs      mx25        freescale       mx25pdk             mx25pdk                              mx25pdk:IMX_CONFIG=board/freescale/mx25pdk/imximage.cfg                                                                           Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         arm926ejs      mx25        karo            tx25                tx25                                 -                                                                                                                                 John Rigby <jcrigby@gmail.com>
-Active  arm         arm926ejs      mx25        syteco          zmx25               zmx25                                -                                                                                                                                 Matthias Weisser <weisserm@arcor.de>
-Active  arm         arm926ejs      mx27        armadeus        apf27               apf27                                -                                                                                                                                 Philippe Reynes <tremyfr@yahoo.fr>:Eric Jarrige <eric.jarrige@armadeus.org>
-Active  arm         arm926ejs      mx27        logicpd         imx27lite           imx27lite                            -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  arm         arm926ejs      mx27        logicpd         imx27lite           magnesium                            -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  arm         arm926ejs      mxs         bluegiga        apx4devkit          apx4devkit                           -                                                                                                                                 Lauri Hintsala <lauri.hintsala@bluegiga.com>
-Active  arm         arm926ejs      mxs         creative        xfi3                xfi3                                 -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         arm926ejs      mxs         denx            m28evk              m28evk                               -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         arm926ejs      mxs         freescale       mx23evk             mx23evk                              -                                                                                                                                 Otavio Salvador <otavio@ossystems.com.br>
-Active  arm         arm926ejs      mxs         freescale       mx28evk             mx28evk                              mx28evk:ENV_IS_IN_MMC                                                                                                             Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         arm926ejs      mxs         freescale       mx28evk             mx28evk_auart_console                mx28evk:MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_MMC                                                                  Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         arm926ejs      mxs         freescale       mx28evk             mx28evk_nand                         mx28evk:ENV_IS_IN_NAND                                                                                                            Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         arm926ejs      mxs         olimex          mx23_olinuxino      mx23_olinuxino                       -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         arm926ejs      mxs         ppcag           bg0900              bg0900                               -                                                                                                                                 Marek Vasut <marex@denx.de>
-Active  arm         arm926ejs      mxs         sandisk         sansa_fuze_plus     sansa_fuze_plus                      -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         arm926ejs      mxs         schulercontrol  sc_sps_1            sc_sps_1                             -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         arm926ejs      nomadik     st              nhk8815             nhk8815                              -                                                                                                                                 Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>:Alessandro Rubini <rubini@unipv.it>
-Active  arm         arm926ejs      nomadik     st              nhk8815             nhk8815_onenand                      nhk8815:BOOT_ONENAND                                                                                                              Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>:Alessandro Rubini <rubini@unipv.it>
-Active  arm         arm926ejs      omap        ti              -                   omap5912osk                          -                                                                                                                                 Rishi Bhattacharya <rishi@ti.com>
-Active  arm         arm926ejs      orion5x     LaCie           -                   edminiv2                             -                                                                                                                                 Albert ARIBAUD <albert.u.boot@aribaud.net>
-Active  arm         arm926ejs      pantheon    Marvell         -                   dkb                                  -                                                                                                                                 Lei Wen <leiwen@marvell.com>
-Active  arm         arm926ejs      spear       spear           -                   x600                                 -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  arm         arm926ejs      spear       spear           spear300            spear300                             spear3xx_evb:spear300                                                                                                             Vipin Kumar <vipin.kumar@st.com>
-Active  arm         arm926ejs      spear       spear           spear300            spear300_nand                        spear3xx_evb:spear300,nand                                                                                                        -
-Active  arm         arm926ejs      spear       spear           spear300            spear300_usbtty                      spear3xx_evb:spear300,usbtty                                                                                                      -
-Active  arm         arm926ejs      spear       spear           spear300            spear300_usbtty_nand                 spear3xx_evb:spear300,usbtty,nand                                                                                                 -
-Active  arm         arm926ejs      spear       spear           spear310            spear310                             spear3xx_evb:spear310                                                                                                             Vipin Kumar <vipin.kumar@st.com>
-Active  arm         arm926ejs      spear       spear           spear310            spear310_nand                        spear3xx_evb:spear310,nand                                                                                                        -
-Active  arm         arm926ejs      spear       spear           spear310            spear310_pnor                        spear3xx_evb:spear310,FLASH_PNOR                                                                                                  -
-Active  arm         arm926ejs      spear       spear           spear310            spear310_usbtty                      spear3xx_evb:spear310,usbtty                                                                                                      -
-Active  arm         arm926ejs      spear       spear           spear310            spear310_usbtty_nand                 spear3xx_evb:spear310,usbtty,nand                                                                                                 -
-Active  arm         arm926ejs      spear       spear           spear310            spear310_usbtty_pnor                 spear3xx_evb:spear310,usbtty,FLASH_PNOR                                                                                           -
-Active  arm         arm926ejs      spear       spear           spear320            spear320                             spear3xx_evb:spear320                                                                                                             Vipin Kumar <vipin.kumar@st.com>
-Active  arm         arm926ejs      spear       spear           spear320            spear320_nand                        spear3xx_evb:spear320,nand                                                                                                        -
-Active  arm         arm926ejs      spear       spear           spear320            spear320_pnor                        spear3xx_evb:spear320,FLASH_PNOR                                                                                                  -
-Active  arm         arm926ejs      spear       spear           spear320            spear320_usbtty                      spear3xx_evb:spear320,usbtty                                                                                                      -
-Active  arm         arm926ejs      spear       spear           spear320            spear320_usbtty_nand                 spear3xx_evb:spear320,usbtty,nand                                                                                                 -
-Active  arm         arm926ejs      spear       spear           spear320            spear320_usbtty_pnor                 spear3xx_evb:spear320,usbtty,FLASH_PNOR                                                                                           -
-Active  arm         arm926ejs      spear       spear           spear600            spear600                             spear6xx_evb:spear600                                                                                                             Vipin Kumar <vipin.kumar@st.com>
-Active  arm         arm926ejs      spear       spear           spear600            spear600_nand                        spear6xx_evb:spear600,nand                                                                                                        -
-Active  arm         arm926ejs      spear       spear           spear600            spear600_usbtty                      spear6xx_evb:spear600,usbtty                                                                                                      -
-Active  arm         arm926ejs      spear       spear           spear600            spear600_usbtty_nand                 spear6xx_evb:spear600,usbtty,nand                                                                                                 -
-Active  arm         arm926ejs      versatile   armltd          versatile           versatileab                          versatile:ARCH_VERSATILE_AB                                                                                                       -
-Active  arm         arm926ejs      versatile   armltd          versatile           versatilepb                          versatile:ARCH_VERSATILE_PB                                                                                                       -
-Active  arm         arm926ejs      versatile   armltd          versatile           versatileqemu                        versatile:ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB                                                                                   -
-Active  arm         arm946es       -           armltd          integrator          integratorap_cm946es                 integratorap:CM946ES                                                                                                              Linus Walleij <linus.walleij@linaro.org>
-Active  arm         arm946es       -           armltd          integrator          integratorcp_cm946es                 integratorcp:CM946ES                                                                                                              Linus Walleij <linus.walleij@linaro.org>
-Active  arm         armv7          -           armltd          vexpress            vexpress_ca15_tc2                    -                                                                                                                                 -
-Active  arm         armv7          -           armltd          vexpress            vexpress_ca5x2                       -                                                                                                                                 Matt Waddel <matt.waddel@linaro.org>
-Active  arm         armv7          -           armltd          vexpress            vexpress_ca9x4                       -                                                                                                                                 Matt Waddel <matt.waddel@linaro.org>
-Active  arm         armv7          am33xx      BuR             kwb                 kwb                                  kwb:SERIAL1,CONS_INDEX=1                                                                                                          Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active  arm         armv7          am33xx      BuR             tseries             tseries_mmc                          tseries:SERIAL1,CONS_INDEX=1,EMMC_BOOT                                                                                            Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active  arm         armv7          am33xx      BuR             tseries             tseries_nand                         tseries:SERIAL1,CONS_INDEX=1,NAND                                                                                                 Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active  arm         armv7          am33xx      BuR             tseries             tseries_spi                          tseries:SERIAL1,CONS_INDEX=1,SPI_BOOT,EMMC_BOOT                                                                                   Hannes Petermaier <hannes.petermaier@br-automation.com>
-Active  arm         armv7          am33xx      compulab        cm_t335             cm_t335                              -                                                                                                                                 Igor Grinberg <grinberg@compulab.co.il>
-Active  arm         armv7          am33xx      isee            igep0033            am335x_igep0033                      -                                                                                                                                 Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active  arm         armv7          am33xx      phytec          pcm051              pcm051_rev1                          pcm051:REV1                                                                                                                       Lars Poeschel <poeschel@lemonage.de>
-Active  arm         armv7          am33xx      phytec          pcm051              pcm051_rev3                          pcm051:REV3                                                                                                                       Lars Poeschel <poeschel@lemonage.de>
-Active  arm         armv7          am33xx      siemens         dxr2                dxr2                                 -                                                                                                                                 Roger Meier <r.meier@siemens.com>
-Active  arm         armv7          am33xx      siemens         pxm2                pxm2                                 -                                                                                                                                 Roger Meier <r.meier@siemens.com>
-Active  arm         armv7          am33xx      siemens         rut                 rut                                  -                                                                                                                                 Roger Meier <r.meier@siemens.com>
-Active  arm         armv7          am33xx      silica          pengwyn             pengwyn                              -                                                                                                                                 Lothar Felten <lothar.felten@gmail.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_boneblack                     am335x_evm:SERIAL1,CONS_INDEX=1,EMMC_BOOT                                                                                         Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm                           am335x_evm:SERIAL1,CONS_INDEX=1,NAND                                                                                              Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_nor                       am335x_evm:SERIAL1,CONS_INDEX=1,NAND,NOR                                                                                          Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_norboot                   am335x_evm:SERIAL1,CONS_INDEX=1,NOR,NOR_BOOT                                                                                      Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_spiboot                   am335x_evm:SERIAL1,CONS_INDEX=1,SPI_BOOT                                                                                          Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart1                     am335x_evm:SERIAL2,CONS_INDEX=2,NAND                                                                                              Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart2                     am335x_evm:SERIAL3,CONS_INDEX=3,NAND                                                                                              Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart3                     am335x_evm:SERIAL4,CONS_INDEX=4,NAND                                                                                              Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart4                     am335x_evm:SERIAL5,CONS_INDEX=5,NAND                                                                                              Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart5                     am335x_evm:SERIAL6,CONS_INDEX=6,NAND                                                                                              Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am335x              am335x_evm_usbspl                    am335x_evm:SERIAL1,CONS_INDEX=1,NAND,SPL_USBETH_SUPPORT                                                                           Tom Rini <trini@ti.com>
-Active  arm         armv7          am33xx      ti              am43xx              am43xx_evm                           am43xx_evm:SERIAL1,CONS_INDEX=1                                                                                                   Lokesh Vutla <lokeshvutla@ti.com>
-Active  arm         armv7          am33xx      ti              ti814x              ti814x_evm                           -                                                                                                                                 Matt Porter <matt.porter@linaro.org>
-Active  arm         armv7          am33xx      ti              ti816x              ti816x_evm                           -                                                                                                                                 -
-Active  arm         armv7          at91        atmel           sama5d3_xplained    sama5d3_xplained_mmc                 sama5d3_xplained:SAMA5D3,SYS_USE_MMC                                                                                              Bo Shen <voice.shen@atmel.com>
-Active  arm         armv7          at91        atmel           sama5d3_xplained    sama5d3_xplained_nandflash           sama5d3_xplained:SAMA5D3,SYS_USE_NANDFLASH                                                                                        Bo Shen <voice.shen@atmel.com>
-Active  arm         armv7          at91        atmel           sama5d3xek          sama5d3xek_mmc                       sama5d3xek:SAMA5D3,SYS_USE_MMC                                                                                                    Bo Shen <voice.shen@atmel.com>
-Active  arm         armv7          at91        atmel           sama5d3xek          sama5d3xek_nandflash                 sama5d3xek:SAMA5D3,SYS_USE_NANDFLASH                                                                                              Bo Shen <voice.shen@atmel.com>
-Active  arm         armv7          at91        atmel           sama5d3xek          sama5d3xek_spiflash                  sama5d3xek:SAMA5D3,SYS_USE_SERIALFLASH                                                                                            Bo Shen <voice.shen@atmel.com>
-Active  arm         armv7          bcm281xx    broadcom        bcm28155_ap         bcm28155_ap                          bcm28155_ap                                                                                                                       Tim Kryger <tim.kryger@linaro.org>
-Active  arm         armv7          exynos      samsung         arndale             arndale                              -                                                                                                                                 Inderpal Singh <inderpal.singh@linaro.org>
-Active  arm         armv7          exynos      samsung         origen              origen                               -                                                                                                                                 Chander Kashyap <k.chander@samsung.com>
-Active  arm         armv7          exynos      samsung         smdk5250            smdk5250                             -                                                                                                                                 Chander Kashyap <k.chander@samsung.com>
-Active  arm         armv7          exynos      samsung         smdk5250            snow                                 -                                                                                                                                 Rajeshwari Shinde <rajeshwari.s@samsung.com>
-Active  arm         armv7          exynos      samsung         smdk5420            smdk5420                             -                                                                                                                                 Rajeshwari Shinde <rajeshwari.s@samsung.com>
-Active  arm         armv7          exynos      samsung         smdkv310            smdkv310                             -                                                                                                                                 Chander Kashyap <k.chander@samsung.com>
-Active  arm         armv7          exynos      samsung         trats               trats                                -                                                                                                                                 Lukasz Majewski <l.majewski@samsung.com>
-Active  arm         armv7          exynos      samsung         trats2              trats2                               -                                                                                                                                 Piotr Wilczek <p.wilczek@samsung.com>
-Active  arm         armv7          exynos      samsung         universal_c210      s5pc210_universal                    -                                                                                                                                 Przemyslaw Marczak <p.marczak@samsung.com>
-Active  arm         armv7          highbank    -               highbank            highbank                             -                                                                                                                                 Rob Herring <rob.herring@calxeda.com>
-Active  arm         armv7          keystone    ti              k2hk_evm            k2hk_evm                             -                                                                                                                                 Vitaly Andrianov <vitalya@ti.com>
-Active  arm         armv7          mx5         denx            m53evk              m53evk                               m53evk:IMX_CONFIG=board/denx/m53evk/imximage.cfg                                                                                  Marek Vasut <marek.vasut@gmail.com>
-Active  arm         armv7          mx5         esg             ima3-mx53           ima3-mx53                            ima3-mx53:IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg                                                                             -
-Active  arm         armv7          mx5         freescale       mx51evk             mx51evk                              mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg                                                                           Stefano Babic <sbabic@denx.de>
-Active  arm         armv7          mx5         freescale       mx53ard             mx53ard                              mx53ard:IMX_CONFIG=board/freescale/mx53ard/imximage_dd3.cfg                                                                       Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx5         freescale       mx53evk             mx53evk                              mx53evk:IMX_CONFIG=board/freescale/mx53evk/imximage.cfg                                                                           Jason Liu <r64343@freescale.com>
-Active  arm         armv7          mx5         freescale       mx53loco            mx53loco                             mx53loco:IMX_CONFIG=board/freescale/mx53loco/imximage.cfg                                                                         Jason Liu <r64343@freescale.com>
-Active  arm         armv7          mx5         freescale       mx53smd             mx53smd                              mx53smd:IMX_CONFIG=board/freescale/mx53smd/imximage.cfg                                                                           Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx5         genesi          mx51_efikamx        mx51_efikamx                         mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg                                -
-Active  arm         armv7          mx5         genesi          mx51_efikamx        mx51_efikasb                         mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg                                -
-Active  arm         armv7          mx5         ttcontrol       vision2             vision2                              vision2:IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg                                                                     Stefano Babic <sbabic@denx.de>
-Active  arm         armv7          mx6         -               udoo                udoo_quad                            udoo:IMX_CONFIG=board/udoo/udoo.cfg,MX6Q,DDR_MB=1024                                                                              Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         -               wandboard           wandboard_dl                         wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024                                                  Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         -               wandboard           wandboard_quad                       wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048                                                  Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         -               wandboard           wandboard_solo                       wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512                                                     Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         barco           titanium            titanium                             titanium:IMX_CONFIG=board/barco/titanium/imximage.cfg                                                                             Stefan Roese <sr@denx.de>
-Active  arm         armv7          mx6         boundary        nitrogen6x          mx6qsabrelite                        nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,SABRELITE                                         Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6dl                          nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024                                                 Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6dl2g                        nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048                                               Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6q                           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024                                                   Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6q2g                         nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048                                                 Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6s                           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512                                                    Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6s1g                         nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024                                                 Eric Nelson <eric.nelson@boundarydevices.com>
-Active  arm         armv7          mx6         congatec        cgtqmx6eval         cgtqmx6qeval                         cgtqmx6eval:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q                                                          Leo Sartre <lsartre@adeneo-embedded.com>
-Active  arm         armv7          mx6         freescale       mx6qarm2            mx6qarm2                             mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg                                                                         Jason Liu <r64343@freescale.com>
-Active  arm         armv7          mx6         freescale       mx6qsabreauto       mx6qsabreauto                        mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,MX6Q                                                          Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         freescale       mx6sabresd          mx6dlsabresd                         mx6sabresd:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL                                                             Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         freescale       mx6sabresd          mx6qsabresd                          mx6sabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q                                                           Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         freescale       mx6slevk            mx6slevk                             mx6slevk:IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL                                                                   Fabio Estevam <fabio.estevam@freescale.com>
-Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanadl                          gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6DL,DDR_MB=512                                                  Tim Harvey <tharvey@gateworks.com>
-Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanadl1g                        gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6DL,DDR_MB=1024                                                 Tim Harvey <tharvey@gateworks.com>
-Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanaq                           gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=512                                                   Tim Harvey <tharvey@gateworks.com>
-Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanaq1g                         gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=1024                                                  Tim Harvey <tharvey@gateworks.com>
-Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanaq1gspi                      gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=1024,SPI_FLASH                                        Tim Harvey <tharvey@gateworks.com>
-Active  arm         armv7          mx6         solidrun        hummingboard        hummingboard_solo                    hummingboard:IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512                                                      Jon Nettleton <jon.nettleton@gmail.com>
-Active  arm         armv7          omap3       -               overo               omap3_overo                          -                                                                                                                                 Steve Sakoman <sakoman@gmail.com>
-Active  arm         armv7          omap3       -               pandora             omap3_pandora                        -                                                                                                                                 Grazvydas Ignotas <notasas@gmail.com>
-Active  arm         armv7          omap3       8dtech          eco5pk              eco5pk                               -                                                                                                                                 Raphael Assenat <raph@8d.com>
-Active  arm         armv7          omap3       comelit         dig297              dig297                               -                                                                                                                                 Luca Ceresoli <luca.ceresoli@comelit.it>
-Active  arm         armv7          omap3       compulab        cm_t35              cm_t35                               -                                                                                                                                 Igor Grinberg <grinberg@compulab.co.il>
-Active  arm         armv7          omap3       corscience      tricorder           tricorder                            -                                                                                                                                 Thomas Weber <weber@corscience.de>
-Active  arm         armv7          omap3       corscience      tricorder           tricorder_flash                      tricorder:FLASHCARD                                                                                                               Thomas Weber <weber@corscience.de>
-Active  arm         armv7          omap3       htkw            mcx                 mcx                                  -                                                                                                                                 Ilya Yanok <yanok@emcraft.com>
-Active  arm         armv7          omap3       isee            igep00x0            igep0020                             omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_ONENAND                                                                          Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active  arm         armv7          omap3       isee            igep00x0            igep0020_nand                        omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_NAND                                                                             -
-Active  arm         armv7          omap3       isee            igep00x0            igep0030                             omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND                                                                          Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active  arm         armv7          omap3       isee            igep00x0            igep0030_nand                        omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND                                                                             -
-Active  arm         armv7          omap3       isee            igep00x0            igep0032                             omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND                                                                          Enric Balletbo i Serra <eballetbo@iseebcn.com>
-Active  arm         armv7          omap3       logicpd         am3517evm           am3517_evm                           -                                                                                                                                 Vaibhav Hiremath <hvaibhav@ti.com>
-Active  arm         armv7          omap3       logicpd         omap3som            omap3_logic                          -                                                                                                                                 Peter Barada <peter.barada@logicpd.com>
-Active  arm         armv7          omap3       logicpd         zoom1               omap3_zoom1                          -                                                                                                                                 Nishanth Menon <nm@ti.com>
-Active  arm         armv7          omap3       matrix_vision   mvblx               omap3_mvblx                          -                                                                                                                                 Michael Jones <michael.jones@matrix-vision.de>
-Active  arm         armv7          omap3       nokia           rx51                nokia_rx51                           -                                                                                                                                 Pali Rohár <pali.rohar@gmail.com>
-Active  arm         armv7          omap3       technexion      tao3530             omap3_ha                             tao3530:SYS_BOARD_OMAP3_HA                                                                                                        Stefan Roese <sr@denx.de>
-Active  arm         armv7          omap3       technexion      tao3530             tao3530                              -                                                                                                                                 Tapani Utriainen <linuxfae@technexion.com>
-Active  arm         armv7          omap3       technexion      twister             twister                              -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         armv7          omap3       teejet          mt_ventoux          mt_ventoux                           -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         armv7          omap3       ti              am3517crane         am3517_crane                         -                                                                                                                                 Nagendra T S  <nagendra@mistralsolutions.com>
-Active  arm         armv7          omap3       ti              beagle              omap3_beagle                         omap3_beagle:NAND                                                                                                                 Tom Rini <trini@ti.com>
-Active  arm         armv7          omap3       ti              evm                 omap3_evm                            -                                                                                                                                 Tom Rini <trini@ti.com>
-Active  arm         armv7          omap3       ti              evm                 omap3_evm_quick_mmc                  -                                                                                                                                 -
-Active  arm         armv7          omap3       ti              evm                 omap3_evm_quick_nand                 -                                                                                                                                 -
-Active  arm         armv7          omap3       ti              sdp3430             omap3_sdp3430                        -                                                                                                                                 Nishanth Menon <nm@ti.com>
-Active  arm         armv7          omap3       timll           devkit8000          devkit8000                           -                                                                                                                                 Thomas Weber <weber@corscience.de>
-Active  arm         armv7          omap4       ti              panda               omap4_panda                          -                                                                                                                                 Sricharan R <r.sricharan@ti.com>
-Active  arm         armv7          omap4       ti              sdp4430             omap4_sdp4430                        -                                                                                                                                 Sricharan R <r.sricharan@ti.com>
-Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm                           dra7xx_evm:CONS_INDEX=1                                                                                                           Lokesh Vutla <lokeshvutla@ti.com>
-Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm_uart3                     dra7xx_evm:CONS_INDEX=3,SPL_YMODEM_SUPPORT                                                                                        Lokesh Vutla <lokeshvutla@ti.com>
-Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm_qspiboot                  dra7xx_evm:CONS_INDEX=1,QSPI_BOOT                                                                                                 Lokesh Vutla <lokeshvutla@ti.com>
-Active  arm         armv7          omap5       ti              omap5_uevm          omap5_uevm                           -                                                                                                                                 -
-Active  arm         armv7          rmobile     atmark-techno   armadillo-800eva    armadillo-800eva                     -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active  arm         armv7          rmobile     kmc             kzm9g               kzm9g                                -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>:Tetsuyuki Kobayashi <koba@kmckk.co.jp>
-Active  arm         armv7          rmobile     renesas         koelsch             koelsch                              -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active  arm         armv7          rmobile     renesas         koelsch             koelsch_nor                          koelsch:NORFLASH                                                                                                                  Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active  arm         armv7          rmobile     renesas         lager               lager                                -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active  arm         armv7          rmobile     renesas         lager               lager_nor                            lager:NORFLASH                                                                                                                    Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
-Active  arm         armv7          s5pc1xx     samsung         goni                s5p_goni                             -                                                                                                                                 Przemyslaw Marczak <p.marczak@samsung.com>
-Active  arm         armv7          s5pc1xx     samsung         smdkc100            smdkc100                             -                                                                                                                                 Minkyu Kang <mk7.kang@samsung.com>
-Active  arm         armv7          socfpga     altera          socfpga             socfpga_cyclone5                     -                                                                                                                                 -
-Active  arm         armv7          u8500       st-ericsson     snowball            snowball                             -                                                                                                                                 Mathieu Poirier <mathieu.poirier@linaro.org>
-Active  arm         armv7          u8500       st-ericsson     u8500               u8500_href                           -                                                                                                                                 -
-Active  arm         armv7          vf610       freescale       vf610twr            vf610twr                             vf610twr:IMX_CONFIG=board/freescale/vf610twr/imximage.cfg                                                                         Alison Wang <b18965@freescale.com>
-Active  arm         armv7          zynq        xilinx          zynq                zynq_microzed                        -                                                                                                                                 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active  arm         armv7          zynq        xilinx          zynq                zynq_zc70x                           -                                                                                                                                 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active  arm         armv7          zynq        xilinx          zynq                zynq_zc770_xm010                     zynq_zc770:ZC770_XM010                                                                                                            Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active  arm         armv7          zynq        xilinx          zynq                zynq_zc770_xm012                     zynq_zc770:ZC770_XM012                                                                                                            Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active  arm         armv7          zynq        xilinx          zynq                zynq_zc770_xm013                     zynq_zc770:ZC770_XM013                                                                                                            Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active  arm         armv7          zynq        xilinx          zynq                zynq_zed                             -                                                                                                                                 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-Active  arm         armv7:arm720t  tegra114    nvidia          dalmore             dalmore                              -                                                                                                                                 Tom Warren <twarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra124    nvidia          jetson-tk1          jetson-tk1                           jetson-tk1:BOARD_JETSON_TK1=                                                                                                      Stephen Warren <swarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra124    nvidia          venice2             venice2                              -                                                                                                                                 Tom Warren <twarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     avionic-design  medcom-wide         medcom-wide                          -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
-Active  arm         armv7:arm720t  tegra20     avionic-design  plutux              plutux                               -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
-Active  arm         armv7:arm720t  tegra20     avionic-design  tec                 tec                                  -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
-Active  arm         armv7:arm720t  tegra20     compal          paz00               paz00                                -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     compulab        trimslice           trimslice                            -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     nvidia          harmony             harmony                              -                                                                                                                                 Tom Warren <twarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     nvidia          seaboard            seaboard                             -                                                                                                                                 Tom Warren <twarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     nvidia          ventana             ventana                              -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     nvidia          whistler            whistler                             -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra20     toradex         colibri_t20_iris    colibri_t20_iris                     -                                                                                                                                 Lucas Stach <dev@lynxeye.de>
-Active  arm         armv7:arm720t  tegra30     avionic-design  tec-ng              tec-ng                               -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
-Active  arm         armv7:arm720t  tegra30     nvidia          beaver              beaver                               -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
-Active  arm         armv7:arm720t  tegra30     nvidia          cardhu              cardhu                               -                                                                                                                                 Tom Warren <twarren@nvidia.com>
-Active  arm         pxa            -           -               -                   balloon3                             -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           -               -                   h2200                                -                                                                                                                                 Lukasz Dalek <luk0104@gmail.com>
-Active  arm         pxa            -           -               -                   palmld                               -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           -               -                   palmtc                               -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           -               -                   palmtreo680                          -                                                                                                                                 Mike Dunn <mikedunn@newsguy.com>
-Active  arm         pxa            -           -               -                   pxa255_idp                           -                                                                                                                                 Cliff Brake <cliff.brake@gmail.com>
-Active  arm         pxa            -           -               -                   trizepsiv                            -                                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         pxa            -           -               -                   xaeniax                              -                                                                                                                                 -
-Active  arm         pxa            -           -               -                   zipitz2                              -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           -               trizepsiv           polaris                              trizepsiv:POLARIS                                                                                                                 Stefano Babic <sbabic@denx.de>
-Active  arm         pxa            -           -               vpac270             vpac270_nor_128                      vpac270:NOR,RAM_128M                                                                                                              Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           -               vpac270             vpac270_nor_256                      vpac270:NOR,RAM_256M                                                                                                              Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           -               vpac270             vpac270_ond_256                      vpac270:ONENAND,RAM_256M                                                                                                          Marek Vasut <marek.vasut@gmail.com>
-Active  arm         pxa            -           icpdas          lp8x4x              lp8x4x                               -                                                                                                                                 Sergey Yanovich <ynvich@gmail.com>
-Active  arm         pxa            -           toradex         -                   colibri_pxa270                       -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
-Active  arm         sa1100         -           -               -                   jornada                              -                                                                                                                                 Kristoffer Ericson <kristoffer.ericson@gmail.com>
-Active  avr32       at32ap         at32ap700x  atmel           -                   atngw100                             -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Active  avr32       at32ap         at32ap700x  atmel           -                   atngw100mkii                         -                                                                                                                                 Andreas Bießmann <andreas.devel@googlemail.com>
-Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1002                            -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1003                            -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1004                            -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1006                            -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-Active  avr32       at32ap         at32ap700x  earthlcd        -                   favr-32-ezkit                        -                                                                                                                                 Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
-Active  avr32       at32ap         at32ap700x  in-circuit      -                   grasshopper                          -                                                                                                                                 Andreas Bießmann <andreas.devel@googlemail.com>
-Active  avr32       at32ap         at32ap700x  mimc            -                   mimc200                              -                                                                                                                                 Mark Jackson <mpfj@mimc.co.uk>
-Active  avr32       at32ap         at32ap700x  miromico        -                   hammerhead                           -                                                                                                                                 Julien May <julien.may@miromico.ch>:Alex Raimondi <alex.raimondi@miromico.ch>
-Active  blackfin    blackfin       -           -               -                   bct-brettl2                          -                                                                                                                                 Peter Meerwald <devel@bct-electronic.com>
-Active  blackfin    blackfin       -           -               -                   bf506f-ezkit                         -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf518f-ezbrd                         -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf525-ucr2                           -                                                                                                                                 Haitao Zhang <hzhang@ucrobotics.com>:Chong Huang <chuang@ucrobotics.com>
-Active  blackfin    blackfin       -           -               -                   bf526-ezbrd                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf527-ad7160-eval                    -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf527-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf527-sdp                            -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf533-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf533-stamp                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf537-minotaur                       -                                                                                                                                 Martin Strubel <strubel@section5.ch>
-Active  blackfin    blackfin       -           -               -                   bf537-pnav                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf537-srv1                           -                                                                                                                                 Martin Strubel <strubel@section5.ch>
-Active  blackfin    blackfin       -           -               -                   bf537-stamp                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf538f-ezkit                         -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf548-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf561-acvilon                        -                                                                                                                                 Anton Shurpin <shurpin.aa@niistt.ru>:Valentin Yakovenkov <yakovenkov@niistt.ru>
-Active  blackfin    blackfin       -           -               -                   bf561-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   bf609-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
-Active  blackfin    blackfin       -           -               -                   blackstamp                           -                                                                                                                                 Wojtek Skulski <skulski@pas.rochester.edu>:Wojtek Skulski <info@skutek.com>:Benjamin Matthews <mben12@gmail.com>
-Active  blackfin    blackfin       -           -               -                   blackvme                             -                                                                                                                                 Wojtek Skulski <skulski@pas.rochester.edu>:Wojtek Skulski <info@skutek.com>:Benjamin Matthews <mben12@gmail.com>
-Active  blackfin    blackfin       -           -               -                   br4                                  -                                                                                                                                 Dimitar Penev <dpn@switchfin.org>
-Active  blackfin    blackfin       -           -               -                   dnp5370                              -                                                                                                                                 M.Hasewinkel (MHA) <info@ssv-embedded.de>
-Active  blackfin    blackfin       -           -               -                   ibf-dsp561                           -                                                                                                                                 I-SYST Micromodule <support@i-syst.com>
-Active  blackfin    blackfin       -           -               -                   ip04                                 -                                                                                                                                 Brent Kandetzki <brentk@teleco.com>
-Active  blackfin    blackfin       -           -               -                   pr1                                  -                                                                                                                                 Dimitar Penev <dpn@switchfin.org>
-Active  blackfin    blackfin       -           -               bf527-ezkit         bf527-ezkit-v2                       bf527-ezkit:BF527_EZKIT_REV_2_1                                                                                                   Sonic Zhang <sonic.adi@gmail.com>
-Active  m68k        mcf5227x       -           freescale       m52277evb           M52277EVB                            M52277EVB:SYS_SPANSION_BOOT,SYS_TEXT_BASE=0x00000000                                                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf5227x       -           freescale       m52277evb           M52277EVB_stmicro                    M52277EVB:CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x43E00000                                                                        TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf523x        -           freescale       m5235evb            M5235EVB                             M5235EVB:SYS_TEXT_BASE=0xFFE00000                                                                                                 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf523x        -           freescale       m5235evb            M5235EVB_Flash32                     M5235EVB:NORFLASH_PS32BIT,SYS_TEXT_BASE=0xFFC00000                                                                                TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf52x2        -           -               cobra5272           cobra5272                            -                                                                                                                                 -
-Active  m68k        mcf52x2        -           BuS             eb_cpu5282          eb_cpu5282                           eb_cpu5282:SYS_TEXT_BASE=0xFF000000,SYS_MONITOR_BASE=0xFF000400                                                                   Jens Scharsig <esw@bus-elektronik.de>
-Active  m68k        mcf52x2        -           BuS             eb_cpu5282          eb_cpu5282_internal                  eb_cpu5282:SYS_TEXT_BASE=0xF0000000,SYS_MONITOR_BASE=0xF0000418                                                                   Jens Scharsig <esw@bus-elektronik.de>
-Active  m68k        mcf52x2        -           esd             tasreg              TASREG                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  m68k        mcf52x2        -           freescale       m5208evbe           M5208EVBE                            -                                                                                                                                 -
-Active  m68k        mcf52x2        -           freescale       m5249evb            M5249EVB                             -                                                                                                                                 -
-Active  m68k        mcf52x2        -           freescale       m5253demo           M5253DEMO                            -                                                                                                                                 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf52x2        -           freescale       m5253evbe           M5253EVBE                            -                                                                                                                                 Hayden Fraser <Hayden.Fraser@freescale.com>
-Active  m68k        mcf52x2        -           freescale       m5272c3             M5272C3                              -                                                                                                                                 -
-Active  m68k        mcf52x2        -           freescale       m5275evb            M5275EVB                             -                                                                                                                                 -
-Active  m68k        mcf52x2        -           freescale       m5282evb            M5282EVB                             -                                                                                                                                 -
-Active  m68k        mcf532x        -           astro           mcf5373l            astro_mcf5373l                       -                                                                                                                                 Wolfgang Wegner <w.wegner@astro-kom.de>
-Active  m68k        mcf532x        -           freescale       m53017evb           M53017EVB                            -                                                                                                                                 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf532x        -           freescale       m5329evb            M5329AFEE                            M5329EVB:NANDFLASH_SIZE=0                                                                                                         TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf532x        -           freescale       m5329evb            M5329BFEE                            M5329EVB:NANDFLASH_SIZE=16                                                                                                        TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf532x        -           freescale       m5373evb            M5373EVB                             M5373EVB:NANDFLASH_SIZE=16                                                                                                        TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR                            M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                               -
-Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_nand_mii                   M54418TWR:SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000                                                        -
-Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_nand_rmii                  M54418TWR:SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                                        -
-Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_nand_rmii_lowfreq          M54418TWR:SYS_NAND_BOOT,LOW_MCFCLK,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                             -
-Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_serial_mii                 M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000                                               -
-Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_serial_rmii                M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                               -
-Active  m68k        mcf5445x       -           freescale       m54451evb           M54451EVB                            M54451EVB:SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=24000000                                                                      -
-Active  m68k        mcf5445x       -           freescale       m54451evb           M54451EVB_stmicro                    M54451EVB:CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x47e00000,SYS_INPUT_CLKSRC=24000000                                              -
-Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB                            M54455EVB:SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=33333333                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_a66                        M54455EVB:SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=66666666                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_i66                        M54455EVB:SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=66666666                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_intel                      M54455EVB:SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=33333333                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_stm33                      M54455EVB:SYS_STMICRO_BOOT,CF_SBF,SYS_TEXT_BASE=0x4FE00000,SYS_INPUT_CLKSRC=33333333                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475AFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475BFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16                                                            TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475CFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL                                      TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475DFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL                                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475EFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL                                                    TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475FFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475GFE                             M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=4,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485AFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485BFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16                                                            TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485CFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL                                      TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485DFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL                                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485EFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL                                                    TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485FFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485GFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=4,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485HFE                             M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO                                                  TsiChung Liew <Tsi-Chung.Liew@freescale.com>
-Active  microblaze  microblaze     -           xilinx          microblaze-generic  microblaze-generic                   -                                                                                                                                 Michal Simek <monstr@monstr.eu>
-Active  mips        mips32         -           -               qemu-mips           qemu_mips                            qemu-mips:SYS_BIG_ENDIAN                                                                                                          Vlad Lungu <vlad.lungu@windriver.com>
-Active  mips        mips32         -           -               qemu-mips           qemu_mipsel                          qemu-mips:SYS_LITTLE_ENDIAN                                                                                                       -
-Active  mips        mips32         -           imgtec          malta               malta                                malta:SYS_BIG_ENDIAN                                                                                                              Paul Burton <paul.burton@imgtec.com>
-Active  mips        mips32         -           imgtec          malta               maltael                              malta:SYS_LITTLE_ENDIAN                                                                                                           Paul Burton <paul.burton@imgtec.com>
-Active  mips        mips32         -           micronas        vct                 vct_platinum                         vct:VCT_PLATINUM                                                                                                                  -
-Active  mips        mips32         -           micronas        vct                 vct_platinum_onenand                 vct:VCT_PLATINUM,VCT_ONENAND                                                                                                      -
-Active  mips        mips32         -           micronas        vct                 vct_platinum_onenand_small           vct:VCT_PLATINUM,VCT_ONENAND,VCT_SMALL_IMAGE                                                                                      -
-Active  mips        mips32         -           micronas        vct                 vct_platinum_small                   vct:VCT_PLATINUM,VCT_SMALL_IMAGE                                                                                                  -
-Active  mips        mips32         -           micronas        vct                 vct_platinumavc                      vct:VCT_PLATINUMAVC                                                                                                               -
-Active  mips        mips32         -           micronas        vct                 vct_platinumavc_onenand              vct:VCT_PLATINUMAVC,VCT_ONENAND                                                                                                   -
-Active  mips        mips32         -           micronas        vct                 vct_platinumavc_onenand_small        vct:VCT_PLATINUMAVC,VCT_ONENAND,VCT_SMALL_IMAGE                                                                                   -
-Active  mips        mips32         -           micronas        vct                 vct_platinumavc_small                vct:VCT_PLATINUMAVC,VCT_SMALL_IMAGE                                                                                               -
-Active  mips        mips32         -           micronas        vct                 vct_premium                          vct:VCT_PREMIUM                                                                                                                   -
-Active  mips        mips32         -           micronas        vct                 vct_premium_onenand                  vct:VCT_PREMIUM,VCT_ONENAND                                                                                                       -
-Active  mips        mips32         -           micronas        vct                 vct_premium_onenand_small            vct:VCT_PREMIUM,VCT_ONENAND,VCT_SMALL_IMAGE                                                                                       -
-Active  mips        mips32         -           micronas        vct                 vct_premium_small                    vct:VCT_PREMIUM,VCT_SMALL_IMAGE                                                                                                   -
-Active  mips        mips32         au1x00      -               dbau1x00            dbau1000                             dbau1x00:DBAU1000                                                                                                                 Thomas Lange <thomas@corelatus.se>
-Active  mips        mips32         au1x00      -               dbau1x00            dbau1100                             dbau1x00:DBAU1100                                                                                                                 Thomas Lange <thomas@corelatus.se>
-Active  mips        mips32         au1x00      -               dbau1x00            dbau1500                             dbau1x00:DBAU1500                                                                                                                 Thomas Lange <thomas@corelatus.se>
-Active  mips        mips32         au1x00      -               dbau1x00            dbau1550                             dbau1x00:DBAU1550                                                                                                                 Thomas Lange <thomas@corelatus.se>
-Active  mips        mips32         au1x00      -               dbau1x00            dbau1550_el                          dbau1x00:DBAU1550,SYS_LITTLE_ENDIAN                                                                                               Thomas Lange <thomas@corelatus.se>
-Active  mips        mips32         au1x00      -               pb1x00              pb1000                               pb1x00:PB1000                                                                                                                     -
-Active  mips        mips64         -           -               qemu-mips           qemu_mips64                          qemu-mips64:SYS_BIG_ENDIAN                                                                                                        -
-Active  mips        mips64         -           -               qemu-mips           qemu_mips64el                        qemu-mips64:SYS_LITTLE_ENDIAN                                                                                                     -
-Active  nds32       n1213          ag101       AndesTech       adp-ag101           adp-ag101                            -                                                                                                                                 Andes <uboot@andestech.com>
-Active  nds32       n1213          ag101       AndesTech       adp-ag101p          adp-ag101p                           -                                                                                                                                 Andes <uboot@andestech.com>
-Active  nds32       n1213          ag102       AndesTech       adp-ag102           adp-ag102                            -                                                                                                                                 Andes <uboot@andestech.com>
-Active  nios2       nios2          -           altera          nios2-generic       nios2-generic                        -                                                                                                                                 Scott McNutt <smcnutt@psyent.com>
-Active  nios2       nios2          -           psyent          pci5441             PCI5441                              -                                                                                                                                 Scott McNutt <smcnutt@psyent.com>
-Active  nios2       nios2          -           psyent          pk1c20              PK1C20                               -                                                                                                                                 Scott McNutt <smcnutt@psyent.com>
-Active  openrisc    or1200         -           openrisc        openrisc-generic    openrisc-generic                     -                                                                                                                                 Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
-Active  powerpc     74xx_7xx       -           -               -                   ppmc7xx                              -                                                                                                                                 -
-Active  powerpc     74xx_7xx       -           -               evb64260            P3G4                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     74xx_7xx       -           eltec           elppc               ELPPC                                -                                                                                                                                 -
-Active  powerpc     74xx_7xx       -           esd             cpci750             CPCI750                              -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     74xx_7xx       -           freescale       mpc7448hpc2         mpc7448hpc2                          -                                                                                                                                 Roy Zang <tie-fei.zang@freescale.com>
-Active  powerpc     74xx_7xx       -           Marvell         db64360             DB64360                              -                                                                                                                                 -
-Active  powerpc     74xx_7xx       -           Marvell         db64460             DB64460                              -                                                                                                                                 -
-Active  powerpc     74xx_7xx       -           prodrive        p3mx                p3m7448                              p3mx:P3M7448                                                                                                                      Stefan Roese <sr@denx.de>
-Active  powerpc     74xx_7xx       -           prodrive        p3mx                p3m750                               p3mx:P3M750                                                                                                                       Stefan Roese <sr@denx.de>
-Active  powerpc     mpc512x        -           -               -                   pdm360ng                             -                                                                                                                                 Michael Weiss <michael.weiss@ifm.com>
-Active  powerpc     mpc512x        -           davedenx        -                   aria                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc512x        -           esd             -                   mecp5123                             -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     mpc512x        -           freescale       mpc5121ads          mpc5121ads                           -                                                                                                                                 -
-Active  powerpc     mpc512x        -           freescale       mpc5121ads          mpc5121ads_rev2                      mpc5121ads:MPC5121ADS_REV2                                                                                                        -
-Active  powerpc     mpc512x        -           ifm             ac14xx              ac14xx                               -                                                                                                                                 Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xx         -           -               cmi                 cmi_mpc5xx                           -                                                                                                                                 -
-Active  powerpc     mpc5xx         -           mpl             pati                PATI                                 -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               -                   canmb                                -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               -                   cm5200                               -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               -                   inka4x0                              -                                                                                                                                 Detlev Zundel <dzu@denx.de>
-Active  powerpc     mpc5xxx        -           -               -                   ipek01                               -                                                                                                                                 Wolfgang Grandegger <wg@denx.de>
-Active  powerpc     mpc5xxx        -           -               -                   jupiter                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc5xxx        -           -               -                   motionpro                            -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               -                   munices                              -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               -                   v38b                                 -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               a3m071              a3m071                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     mpc5xxx        -           -               a3m071              a4m2k                                a3m071:A4M2K                                                                                                                      Stefan Roese <sr@denx.de>
-Active  powerpc     mpc5xxx        -           -               a4m072              a4m072                               -                                                                                                                                 Sergei Poselenov <sposelenov@emcraft.com>
-Active  powerpc     mpc5xxx        -           -               bc3450              BC3450                               -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               galaxy5200          galaxy5200                           galaxy5200:galaxy5200                                                                                                             Eric Millbrandt <emillbrandt@dekaresearch.com>
-Active  powerpc     mpc5xxx        -           -               galaxy5200          galaxy5200_LOWBOOT                   galaxy5200:galaxy5200_LOWBOOT                                                                                                     Eric Millbrandt <emillbrandt@dekaresearch.com>
-Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200                         IceCube                                                                                                                           Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_DDR                     IceCube:MPC5200_DDR                                                                                                               -
-Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_DDR_LOWBOOT             IceCube:SYS_TEXT_BASE=0xFF800000,MPC5200_DDR                                                                                      -
-Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_DDR_LOWBOOT08           IceCube:SYS_TEXT_BASE=0xFF800000,MPC5200_DDR                                                                                      -
-Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_LOWBOOT                 IceCube:SYS_TEXT_BASE=0xFF000000                                                                                                  -
-Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_LOWBOOT08               IceCube:SYS_TEXT_BASE=0xFF800000                                                                                                  -
-Active  powerpc     mpc5xxx        -           -               icecube             Lite5200                             IceCube                                                                                                                           -
-Active  powerpc     mpc5xxx        -           -               icecube             Lite5200_LOWBOOT                     IceCube:SYS_TEXT_BASE=0xFF000000                                                                                                  -
-Active  powerpc     mpc5xxx        -           -               icecube             Lite5200_LOWBOOT08                   IceCube:SYS_TEXT_BASE=0xFF800000                                                                                                  -
-Active  powerpc     mpc5xxx        -           -               icecube             lite5200b                            IceCube:MPC5200_DDR,LITE5200B                                                                                                     -
-Active  powerpc     mpc5xxx        -           -               icecube             lite5200b_LOWBOOT                    IceCube:MPC5200_DDR,LITE5200B,SYS_TEXT_BASE=0xFF000000                                                                            -
-Active  powerpc     mpc5xxx        -           -               icecube             lite5200b_PM                         IceCube:MPC5200_DDR,LITE5200B,LITE5200B_PM                                                                                        -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200                               -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12                         mcc200:CONSOLE_COM12                                                                                                              -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12_highboot                mcc200:CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000                                                                                     -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12_highboot_SDRAM          mcc200:CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM                                                                        -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12_SDRAM                   mcc200:CONSOLE_COM12,MCC200_SDRAM                                                                                                 -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_highboot                      mcc200:SYS_TEXT_BASE=0xFFF00000                                                                                                   -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_highboot_SDRAM                mcc200:SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM                                                                                      -
-Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_SDRAM                         mcc200:MCC200_SDRAM                                                                                                               -
-Active  powerpc     mpc5xxx        -           -               mcc200              prs200                               mcc200:PRS200,MCC200_SDRAM                                                                                                        -
-Active  powerpc     mpc5xxx        -           -               mcc200              prs200_DDR                           mcc200:PRS200                                                                                                                     -
-Active  powerpc     mpc5xxx        -           -               mcc200              prs200_highboot                      mcc200:PRS200,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM                                                                               -
-Active  powerpc     mpc5xxx        -           -               mcc200              prs200_highboot_DDR                  mcc200:PRS200,SYS_TEXT_BASE=0xFFF00000                                                                                            -
-Active  powerpc     mpc5xxx        -           -               pm520               PM520                                -                                                                                                                                 Josef Wagner <Wagner@Microsys.de>
-Active  powerpc     mpc5xxx        -           -               pm520               PM520_DDR                            PM520:MPC5200_DDR                                                                                                                 Josef Wagner <Wagner@Microsys.de>
-Active  powerpc     mpc5xxx        -           -               pm520               PM520_ROMBOOT                        PM520:BOOT_ROM                                                                                                                    Josef Wagner <Wagner@Microsys.de>
-Active  powerpc     mpc5xxx        -           -               pm520               PM520_ROMBOOT_DDR                    PM520:MPC5200_DDR,BOOT_ROM                                                                                                        Josef Wagner <Wagner@Microsys.de>
-Active  powerpc     mpc5xxx        -           -               total5200           Total5200                            Total5200:TOTAL5200_REV=1                                                                                                         -
-Active  powerpc     mpc5xxx        -           -               total5200           Total5200_lowboot                    Total5200:TOTAL5200_REV=1,SYS_TEXT_BASE=0xFE000000                                                                                -
-Active  powerpc     mpc5xxx        -           -               total5200           Total5200_Rev2                       Total5200:TOTAL5200_REV=2                                                                                                         -
-Active  powerpc     mpc5xxx        -           -               total5200           Total5200_Rev2_lowboot               Total5200:TOTAL5200_REV=2,SYS_TEXT_BASE=0xFE000000                                                                                -
-Active  powerpc     mpc5xxx        -           emk             top5200             EVAL5200                             TOP5200:EVAL5200                                                                                                                  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active  powerpc     mpc5xxx        -           emk             top5200             MINI5200                             TOP5200:MINI5200                                                                                                                  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active  powerpc     mpc5xxx        -           emk             top5200             TOP5200                              TOP5200:TOP5200                                                                                                                   Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active  powerpc     mpc5xxx        -           esd             -                   cpci5200                             -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     mpc5xxx        -           esd             -                   mecp5200                             -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     mpc5xxx        -           esd             -                   pf5200                               -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2D                                  o2d                                                                                                                               Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2D300                               o2d300                                                                                                                            Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2DNT2                               o2dnt2                                                                                                                            Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2DNT2_RAMBOOT                       o2dnt2:SYS_TEXT_BASE=0x00100000                                                                                                   Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2I                                  o2i                                                                                                                               Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT                                o2mnt                                                                                                                             Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT_O2M110                         o2mnt:IFM_SENSOR_TYPE="O2M110"                                                                                                    Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT_O2M112                         o2mnt:IFM_SENSOR_TYPE="O2M112"                                                                                                    Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT_O2M113                         o2mnt:IFM_SENSOR_TYPE="O2M113"                                                                                                    Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O3DNT                                o3dnt                                                                                                                             Anatolij Gustschin <agust@denx.de>
-Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc                            -                                                                                                                                 Werner Pfister <Pfister_Werner@intercontrol.de>
-Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc_RAMBOOT                    digsy_mtc:SYS_TEXT_BASE=0x00100000                                                                                                Werner Pfister <Pfister_Werner@intercontrol.de>
-Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc_rev5                       digsy_mtc:DIGSY_REV5                                                                                                              Werner Pfister <Pfister_Werner@intercontrol.de>
-Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc_rev5_RAMBOOT               digsy_mtc:SYS_TEXT_BASE=0x00100000,DIGSY_REV5                                                                                     Werner Pfister <Pfister_Werner@intercontrol.de>
-Active  powerpc     mpc5xxx        -           manroland       -                   hmi1001                              -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           manroland       -                   mucmc52                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc5xxx        -           manroland       -                   uc101                                -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc5xxx        -           phytec          pcm030              pcm030                               -                                                                                                                                 Jon Smirl <jonsmirl@gmail.com>
-Active  powerpc     mpc5xxx        -           phytec          pcm030              pcm030_LOWBOOT                       pcm030:SYS_TEXT_BASE=0xFF000000                                                                                                   Jon Smirl <jonsmirl@gmail.com>
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             aev                                  -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             cam5200                              TQM5200:CAM5200,TQM5200S,TQM5200_B                                                                                                -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             cam5200_niosflash                    TQM5200:CAM5200,TQM5200S,TQM5200_B,CAM5200_NIOSFLASH                                                                              -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             charon                               -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             fo300                                TQM5200:FO300                                                                                                                     -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             MiniFAP                              TQM5200:MINIFAP                                                                                                                   -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TB5200                               -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TB5200_B                             TB5200:TQM5200_B                                                                                                                  -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200                              -                                                                                                                                 -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200_B                            TQM5200:TQM5200_B                                                                                                                 -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200_B_HIGHBOOT                   TQM5200:TQM5200_B,SYS_TEXT_BASE=0xFFF00000                                                                                        -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200_STK100                       TQM5200:STK52XX_REV100                                                                                                            -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200S                             TQM5200:TQM5200_B,TQM5200S                                                                                                        -
-Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200S_HIGHBOOT                    TQM5200:TQM5200_B,TQM5200S,SYS_TEXT_BASE=0xFFF00000                                                                               -
-Active  powerpc     mpc824x        -           -               -                   utx8245                              -                                                                                                                                 Greg Allen <gallen@arlut.utexas.edu>
-Active  powerpc     mpc824x        -           -               a3000               A3000                                -                                                                                                                                 -
-Active  powerpc     mpc824x        -           -               cpc45               CPC45                                -                                                                                                                                 Josef Wagner <Wagner@Microsys.de>
-Active  powerpc     mpc824x        -           -               cpc45               CPC45_ROMBOOT                        CPC45:BOOT_ROM                                                                                                                    Josef Wagner <Wagner@Microsys.de>
-Active  powerpc     mpc824x        -           -               cu824               CU824                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc824x        -           -               eXalion             eXalion                              -                                                                                                                                 Torsten Demke <torsten.demke@fci.com>
-Active  powerpc     mpc824x        -           -               mvblue              MVBLUE                               -                                                                                                                                 -
-Active  powerpc     mpc824x        -           -               sandpoint           Sandpoint8240                        -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               -                   atc                                  -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               -                   ep8260                               -                                                                                                                                 Frank Panno <fpanno@delphintech.com>
-Active  powerpc     mpc8260        -           -               -                   ep82xxm                              -                                                                                                                                 -
-Active  powerpc     mpc8260        -           -               -                   gw8260                               -                                                                                                                                 Oliver Brown <obrown@adventnetworks.com>
-Active  powerpc     mpc8260        -           -               -                   hymod                                -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
-Active  powerpc     mpc8260        -           -               -                   sacsng                               -                                                                                                                                 Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
-Active  powerpc     mpc8260        -           -               cogent              cogent_mpc8260                       -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
-Active  powerpc     mpc8260        -           -               cpu86               CPU86                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               cpu86               CPU86_ROMBOOT                        CPU86:BOOT_ROM                                                                                                                    Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               cpu87               CPU87                                -                                                                                                                                 -
-Active  powerpc     mpc8260        -           -               cpu87               CPU87_ROMBOOT                        CPU87:BOOT_ROM                                                                                                                    -
-Active  powerpc     mpc8260        -           -               ep8248              ep8248                               -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
-Active  powerpc     mpc8260        -           ids             ids8247             IDS8247                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc8260        -           -               iphase4539          IPHASE4539                           -                                                                                                                                 Wolfgang Grandegger <wg@denx.de>
-Active  powerpc     mpc8260        -           -               muas3001            muas3001                             -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc8260        -           -               muas3001            muas3001_dev                         muas3001:MUAS_DEV_BOARD                                                                                                           Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM825                                PM826:PCI,SYS_TEXT_BASE=0xFF000000                                                                                                Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM825_BIGFLASH                       PM826:PCI,FLASH_32MB,SYS_TEXT_BASE=0x40000000                                                                                     Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM825_ROMBOOT                        PM826:PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                       Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM825_ROMBOOT_BIGFLASH               PM826:PCI,BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000                                                                            Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM826                                PM826:SYS_TEXT_BASE=0xFF000000                                                                                                    Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM826_BIGFLASH                       PM826:FLASH_32MB,SYS_TEXT_BASE=0x40000000                                                                                         Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM826_ROMBOOT                        PM826:BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                           Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm826               PM826_ROMBOOT_BIGFLASH               PM826:BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000                                                                                Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           -               pm828               PM828                                -                                                                                                                                 -
-Active  powerpc     mpc8260        -           -               pm828               PM828_PCI                            PM828:PCI                                                                                                                         -
-Active  powerpc     mpc8260        -           -               pm828               PM828_ROMBOOT                        PM828:BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                           -
-Active  powerpc     mpc8260        -           -               pm828               PM828_ROMBOOT_PCI                    PM828:PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                       -
-Active  powerpc     mpc8260        -           freescale       mpc8266ads          MPC8266ADS                           -                                                                                                                                 Rune Torgersen <runet@innovsys.com>
-Active  powerpc     mpc8260        -           funkwerk        vovpn-gw            VoVPN-GW_66MHz                       VoVPN-GW:CLKIN_66MHz                                                                                                              -
-Active  powerpc     mpc8260        -           keymile         km82xx              mgcoge                               km82xx:MGCOGE                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc8260        -           keymile         km82xx              mgcoge3ne                            km82xx:MGCOGE3NE                                                                                                                  Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8255_AA                           TQM8260:MPC8255,300MHz                                                                                                            Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AA                           TQM8260:MPC8260,200MHz                                                                                                            Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AB                           TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x                                                                                       Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AC                           TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x                                                                                       Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AD                           TQM8260:MPC8260,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AE                           TQM8260:MPC8260,266MHz                                                                                                            Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AF                           TQM8260:MPC8260,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AG                           TQM8260:MPC8260,300MHz                                                                                                            Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AH                           TQM8260:MPC8260,300MHz,L2_CACHE,BUSMODE_60x                                                                                       Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AI                           TQM8260:MPC8260,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8265_AA                           TQM8260:MPC8265,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8260        -           tqc             tqm8272             TQM8272                              -                                                                                                                                 -
-Active  powerpc     mpc83xx        -           -               -                   mpc8308_p1m                          -                                                                                                                                 Ilya Yanok <yanok@emcraft.com>
-Active  powerpc     mpc83xx        -           -               sbc8349             sbc8349                              -                                                                                                                                 Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc83xx        -           -               sbc8349             sbc8349_PCI_33                       sbc8349:PCI,PCI_33M                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc83xx        -           -               sbc8349             sbc8349_PCI_66                       sbc8349:PCI,PCI_66M                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc83xx        -           -               ve8313              ve8313                               -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc83xx        -           esd             vme8349             caddy2                               vme8349:CADDY2                                                                                                                    Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     mpc83xx        -           esd             vme8349             vme8349                              -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8308rdb          MPC8308RDB                           -                                                                                                                                 Ilya Yanok <yanok@emcraft.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_33                       MPC8313ERDB:SYS_33MHZ                                                                                                             -
-Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_66                       MPC8313ERDB:SYS_66MHZ                                                                                                             -
-Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_NAND_33                  MPC8313ERDB:SYS_33MHZ,NAND                                                                                                        -
-Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_NAND_66                  MPC8313ERDB:SYS_66MHZ,NAND                                                                                                        -
-Active  powerpc     mpc83xx        -           freescale       mpc8315erdb         MPC8315ERDB                          -                                                                                                                                 Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8315erdb         MPC8315ERDB_NAND                     MPC8315ERDB:NAND_U_BOOT                                                                                                           Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8323erdb         MPC8323ERDB                          -                                                                                                                                 Michael Barkowski <michael.barkowski@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS                          -                                                                                                                                 Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_ATM                      MPC832XEMDS:PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1                                                                                         Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_HOST_33                  MPC832XEMDS:PCI,PCI_33M,PQ_MDS_PIB=1                                                                                              Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_HOST_66                  MPC832XEMDS:PCI,PCI_66M,PQ_MDS_PIB=1                                                                                              Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_SLAVE                    MPC832XEMDS:PCI,PCISLAVE                                                                                                          Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8349emds         MPC8349EMDS                          -                                                                                                                                 Kim Phillips <kim.phillips@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8349itx          MPC8349ITX                           MPC8349ITX:MPC8349ITX                                                                                                             -
-Active  powerpc     mpc83xx        -           freescale       mpc8349itx          MPC8349ITX_LOWBOOT                   MPC8349ITX:MPC8349ITX,SYS_TEXT_BASE=0xFE000000                                                                                    -
-Active  powerpc     mpc83xx        -           freescale       mpc8349itx          MPC8349ITXGP                         MPC8349ITX:MPC8349ITXGP,SYS_TEXT_BASE=0xFE000000                                                                                  -
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33                       MPC8360EMDS:CLKIN_33MHZ                                                                                                           Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_ATM                   MPC8360EMDS:CLKIN_33MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1                                                                             Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_HOST_33               MPC8360EMDS:CLKIN_33MHZ,PCI,PCI_33M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_HOST_66               MPC8360EMDS:CLKIN_33MHZ,PCI,PCI_66M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_SLAVE                 MPC8360EMDS:CLKIN_33MHZ,PCI,PCISLAVE                                                                                              Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66                       MPC8360EMDS:CLKIN_66MHZ                                                                                                           Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_ATM                   MPC8360EMDS:CLKIN_66MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1                                                                             Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_HOST_33               MPC8360EMDS:CLKIN_66MHZ,PCI,PCI_33M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_HOST_66               MPC8360EMDS:CLKIN_66MHZ,PCI,PCI_66M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_SLAVE                 MPC8360EMDS:CLKIN_66MHZ,PCI,PCISLAVE                                                                                              Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc837xemds         MPC837XEMDS                          -                                                                                                                                 Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc837xemds         MPC837XEMDS_HOST                     MPC837XEMDS:PCI                                                                                                                   Dave Liu <daveliu@freescale.com>
-Active  powerpc     mpc83xx        -           freescale       mpc837xerdb         MPC837XERDB                          -                                                                                                                                 Joe D'Abbraccio <ljd015@freescale.com>
-Active  powerpc     mpc83xx        -           ids             ids8313             ids8313                              ids8313:SYS_TEXT_BASE=0xFFF00000                                                                                                  Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc83xx        -           keymile         km83xx              kmcoge5ne                            km8360:KMCOGE5NE                                                                                                                  Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           keymile         km83xx              kmeter1                              km8360:KMETER1                                                                                                                    Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           keymile         km83xx              kmopti2                              tuxx1:KMOPTI2                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           keymile         km83xx              kmsupx5                              tuxx1:KMSUPX5                                                                                                                     Heiko Schocher <hs@denx.de>
-Active  powerpc     mpc83xx        -           keymile         km83xx              kmvect1                              suvd3:KMVECT1                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           keymile         km83xx              suvd3                                suvd3:SUVD3                                                                                                                       Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           keymile         km83xx              tuge1                                tuxx1:TUGE1                                                                                                                       Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           keymile         km83xx              tuxx1                                tuxx1:TUXX1                                                                                                                       Holger Brunck <holger.brunck@keymile.com>
-Active  powerpc     mpc83xx        -           sheldon         simpc8313           SIMPC8313_LP                         SIMPC8313:NAND_LP                                                                                                                 Ron Madrid <info@sheldoninst.com>
-Active  powerpc     mpc83xx        -           sheldon         simpc8313           SIMPC8313_SP                         SIMPC8313:NAND_SP                                                                                                                 Ron Madrid <info@sheldoninst.com>
-Active  powerpc     mpc83xx        -           tqc             tqm834x             TQM834x                              -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548                              -                                                                                                                                 Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_33                       sbc8548:PCI,33                                                                                                                    Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_33_PCIE                  sbc8548:PCI,33,PCIE                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_66                       sbc8548:PCI,66                                                                                                                    Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_66_PCIE                  sbc8548:PCI,66,PCIE                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc85xx        -           -               socrates            socrates                             -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           exmeritus       hww1u1a             HWW1U1A                              -                                                                                                                                 Kyle Moffett <Kyle.D.Moffett@boeing.com>
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS                             B4860QDS:PPC_B4420                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_NAND                        B4860QDS:PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                      -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_SPIFLASH                    B4860QDS:PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS                             B4860QDS:PPC_B4860                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SECURE_BOOT                 B4860QDS:PPC_B4860,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_NAND                        B4860QDS:PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SPIFLASH                    B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SRIO_PCIE_BOOT              B4860QDS:PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_NAND                      BSC9131RDB:BSC9131RDB,NAND                                                                                                        Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_NAND_SYSCLK100            BSC9131RDB:BSC9131RDB,NAND,SYS_CLK_100                                                                                            Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_SPIFLASH                  BSC9131RDB:BSC9131RDB,SPIFLASH                                                                                                    Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_SPIFLASH_SYSCLK100        BSC9131RDB:BSC9131RDB,SPIFLASH,SYS_CLK_100                                                                                        Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK100            BSC9132QDS:BSC9132QDS,NAND,SYS_CLK_100_DDR_100                                                                                    Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK133            BSC9132QDS:BSC9132QDS,NAND,SYS_CLK_100_DDR_133                                                                                    Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK100             BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100                                                                                         Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK133             BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133                                                                                         Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK100          BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100                                                                                  Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK133          BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133                                                                                  Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK100        BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100                                                                                Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK133        BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133                                                                                Naveen Burmi <NaveenBurmi@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK100_SECURE      BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                             Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK133_SECURE      BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                             Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK100_SECURE   BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                      Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK133_SECURE   BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                      Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK100_SECURE BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK133_SECURE BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK100_SECURE     BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK133_SECURE     BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE                             C29XPCIE:C29XPCIE,36BIT                                                                                                           Po Liu <po.liu@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE_NAND                        C29XPCIE:C29XPCIE,36BIT,NAND                                                                                                      Po Liu <po.liu@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE_SPIFLASH                    C29XPCIE:C29XPCIE,36BIT,SPIFLASH                                                                                                  Po Liu <po.liu@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS                              -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_NAND                         P3041DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SDCARD                       P3041DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SECURE_BOOT                  P3041DS:SECURE_BOOT                                                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SPIFLASH                     P3041DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SRIO_PCIE_BOOT               P3041DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS                              -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SDCARD                       P4080DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SECURE_BOOT                  P4080DS:SECURE_BOOT                                                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SPIFLASH                     P4080DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SRIO_PCIE_BOOT               P4080DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS                              -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_NAND                         P5020DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SDCARD                       P5020DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SECURE_BOOT                  P5020DS:SECURE_BOOT                                                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SPIFLASH                     P5020DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SRIO_PCIE_BOOT               P5020DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS                              -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS_NAND                         P5040DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS_SDCARD                       P5040DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
-Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS_SPIFLASH                     P5040DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
-Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS                            -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_36BIT                      MPC8536DS:36BIT                                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_NAND                       MPC8536DS:NAND                                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_SDCARD                     MPC8536DS:SDCARD                                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_SPIFLASH                   MPC8536DS:SPIFLASH                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       mpc8540ads          MPC8540ADS                           -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       mpc8541cds          MPC8541CDS                           -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       mpc8541cds          MPC8541CDS_legacy                    MPC8541CDS:LEGACY                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       mpc8544ds           MPC8544DS                            -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8548cds          MPC8548CDS                           -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8548cds          MPC8548CDS_36BIT                     MPC8548CDS:36BIT                                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       mpc8548cds          MPC8548CDS_legacy                    MPC8548CDS:LEGACY                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8555cds          MPC8555CDS                           -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       mpc8555cds          MPC8555CDS_legacy                    MPC8555CDS:LEGACY                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       mpc8560ads          MPC8560ADS                           -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       mpc8568mds          MPC8568MDS                           -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8569mds          MPC8569MDS                           -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8569mds          MPC8569MDS_ATM                       MPC8569MDS:ATM                                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       mpc8569mds          MPC8569MDS_NAND                      MPC8569MDS:NAND                                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       mpc8572ds           MPC8572DS                            -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       mpc8572ds           MPC8572DS_36BIT                      MPC8572DS:36BIT                                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       mpc8572ds           MPC8572DS_NAND                       MPC8572DS:NAND                                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NAND               P1010RDB:P1010RDB_PA,36BIT,NAND                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NAND_SECBOOT       P1010RDB:P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT                                                                               -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NOR                P1010RDB:P1010RDB_PA,36BIT                                                                                                        -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NOR_SECBOOT        P1010RDB:P1010RDB_PA,36BIT,SECURE_BOOT                                                                                            -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_SDCARD             P1010RDB:P1010RDB_PA,36BIT,SDCARD                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_SPIFLASH           P1010RDB:P1010RDB_PA,36BIT,SPIFLASH                                                                                               -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_SPIFLASH_SECBOOT   P1010RDB:P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NAND                     P1010RDB:P1010RDB_PA,NAND                                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NAND_SECBOOT             P1010RDB:P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NOR                      P1010RDB:P1010RDB_PA                                                                                                              -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NOR_SECBOOT              P1010RDB:P1010RDB_PA,SECURE_BOOT                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_SDCARD                   P1010RDB:P1010RDB_PA,SDCARD                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_SPIFLASH                 P1010RDB:P1010RDB_PA,SPIFLASH                                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_SPIFLASH_SECBOOT         P1010RDB:P1010RDB_PA,SPIFLASH,SECURE_BOOT                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NAND               P1010RDB:P1010RDB_PB,36BIT,NAND                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NAND_SECBOOT       P1010RDB:P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT                                                                               -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NOR                P1010RDB:P1010RDB_PB,36BIT                                                                                                        -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NOR_SECBOOT        P1010RDB:P1010RDB_PB,36BIT,SECURE_BOOT                                                                                            -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_SDCARD             P1010RDB:P1010RDB_PB,36BIT,SDCARD                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_SPIFLASH           P1010RDB:P1010RDB_PB,36BIT,SPIFLASH                                                                                               -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_SPIFLASH_SECBOOT   P1010RDB:P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NAND                     P1010RDB:P1010RDB_PB,NAND                                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NAND_SECBOOT             P1010RDB:P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NOR                      P1010RDB:P1010RDB_PB                                                                                                              -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NOR_SECBOOT              P1010RDB:P1010RDB_PB,SECURE_BOOT                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_SDCARD                   P1010RDB:P1010RDB_PB,SDCARD                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_SPIFLASH                 P1010RDB:P1010RDB_PB,SPIFLASH                                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_SPIFLASH_SECBOOT         P1010RDB:P1010RDB_PB,SPIFLASH,SECURE_BOOT                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS                              -                                                                                                                                 Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT                        P1022DS:36BIT                                                                                                                     Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT_NAND                   P1022DS:36BIT,NAND                                                                                                                Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT_SDCARD                 P1022DS:36BIT,SDCARD                                                                                                              Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT_SPIFLASH               P1022DS:36BIT,SPIFLASH                                                                                                            Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_NAND                         P1022DS:NAND                                                                                                                      Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_SDCARD                       P1022DS:SDCARD                                                                                                                    Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_SPIFLASH                     P1022DS:SPIFLASH                                                                                                                  Timur Tabi <timur@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1023rdb            P1023RDB                             -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1023rds            P1023RDS                             -                                                                                                                                 Roy Zang <tie-fei.zang@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1023rds            P1023RDS_NAND                        P1023RDS:NAND                                                                                                                     Roy Zang <tie-fei.zang@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB                             P1_P2_RDB:P1011RDB                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_36BIT                       P1_P2_RDB:P1011RDB,36BIT                                                                                                          -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_36BIT_SDCARD                P1_P2_RDB:P1011RDB,36BIT,SDCARD                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_36BIT_SPIFLASH              P1_P2_RDB:P1011RDB,36BIT,SPIFLASH                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_NAND                        P1_P2_RDB:P1011RDB,NAND                                                                                                           -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_SDCARD                      P1_P2_RDB:P1011RDB,SDCARD                                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_SPIFLASH                    P1_P2_RDB:P1011RDB,SPIFLASH                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB                             P1_P2_RDB:P1020RDB                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_36BIT                       P1_P2_RDB:P1020RDB,36BIT                                                                                                          -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_36BIT_SDCARD                P1_P2_RDB:P1020RDB,36BIT,SDCARD                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_36BIT_SPIFLASH              P1_P2_RDB:P1020RDB,36BIT,SPIFLASH                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_NAND                        P1_P2_RDB:P1020RDB,NAND                                                                                                           -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_SDCARD                      P1_P2_RDB:P1020RDB,SDCARD                                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_SPIFLASH                    P1_P2_RDB:P1020RDB,SPIFLASH                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB                             P1_P2_RDB:P2010RDB                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_36BIT                       P1_P2_RDB:P2010RDB,36BIT                                                                                                          -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_36BIT_SDCARD                P1_P2_RDB:P2010RDB,36BIT,SDCARD                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_36BIT_SPIFLASH              P1_P2_RDB:P2010RDB,36BIT,SPIFLASH                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_NAND                        P1_P2_RDB:P2010RDB,NAND                                                                                                           -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_SDCARD                      P1_P2_RDB:P2010RDB,SDCARD                                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_SPIFLASH                    P1_P2_RDB:P2010RDB,SPIFLASH                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB                             P1_P2_RDB:P2020RDB                                                                                                                Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_36BIT                       P1_P2_RDB:P2020RDB,36BIT                                                                                                          -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_36BIT_SDCARD                P1_P2_RDB:P2020RDB,36BIT,SDCARD                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_36BIT_SPIFLASH              P1_P2_RDB:P2020RDB,36BIT,SPIFLASH                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_NAND                        P1_P2_RDB:P2020RDB,NAND                                                                                                           -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_SDCARD                      P1_P2_RDB:P2020RDB,SDCARD                                                                                                         -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_SPIFLASH                    P1_P2_RDB:P2020RDB,SPIFLASH                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC                          p1_p2_rdb_pc:P1020MBG                                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC_36BIT                    p1_p2_rdb_pc:P1020MBG,36BIT                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC_36BIT_SDCARD             p1_p2_rdb_pc:P1020MBG,SDCARD,36BIT                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC_SDCARD                   p1_p2_rdb_pc:P1020MBG,SDCARD                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC                          p1_p2_rdb_pc:P1020RDB_PC                                                                                                          -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT                    p1_p2_rdb_pc:P1020RDB_PC,36BIT                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT_NAND               p1_p2_rdb_pc:P1020RDB_PC,36BIT,NAND                                                                                               -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT_SDCARD             p1_p2_rdb_pc:P1020RDB_PC,36BIT,SDCARD                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT_SPIFLASH           p1_p2_rdb_pc:P1020RDB_PC,36BIT,SPIFLASH                                                                                           -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_NAND                     p1_p2_rdb_pc:P1020RDB_PC,NAND                                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_SDCARD                   p1_p2_rdb_pc:P1020RDB_PC,SDCARD                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_SPIFLASH                 p1_p2_rdb_pc:P1020RDB_PC,SPIFLASH                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD                          p1_p2_rdb_pc:P1020RDB_PD                                                                                                          -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD_NAND                     p1_p2_rdb_pc:P1020RDB_PD,NAND                                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD_SDCARD                   p1_p2_rdb_pc:P1020RDB_PD,SDCARD                                                                                                   -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD_SPIFLASH                 p1_p2_rdb_pc:P1020RDB_PD,SPIFLASH                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC                          p1_p2_rdb_pc:P1020UTM                                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC_36BIT                    p1_p2_rdb_pc:P1020UTM,36BIT                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC_36BIT_SDCARD             p1_p2_rdb_pc:P1020UTM,36BIT,SDCARD                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC_SDCARD                   p1_p2_rdb_pc:P1020UTM,SDCARD                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC                          p1_p2_rdb_pc:P1021RDB                                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT                    p1_p2_rdb_pc:P1021RDB,36BIT                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT_NAND               p1_p2_rdb_pc:P1021RDB,36BIT,NAND                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT_SDCARD             p1_p2_rdb_pc:P1021RDB,36BIT,SDCARD                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT_SPIFLASH           p1_p2_rdb_pc:P1021RDB,36BIT,SPIFLASH                                                                                              -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_NAND                     p1_p2_rdb_pc:P1021RDB,NAND                                                                                                        -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_SDCARD                   p1_p2_rdb_pc:P1021RDB,SDCARD                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_SPIFLASH                 p1_p2_rdb_pc:P1021RDB,SPIFLASH                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB                             p1_p2_rdb_pc:P1024RDB                                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_36BIT                       p1_p2_rdb_pc:P1024RDB,36BIT                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_NAND                        p1_p2_rdb_pc:P1024RDB,NAND                                                                                                        -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_SDCARD                      p1_p2_rdb_pc:P1024RDB,SDCARD                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_SPIFLASH                    p1_p2_rdb_pc:P1024RDB,SPIFLASH                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB                             p1_p2_rdb_pc:P1025RDB                                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_36BIT                       p1_p2_rdb_pc:P1025RDB,36BIT                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_NAND                        p1_p2_rdb_pc:P1025RDB,NAND                                                                                                        -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_SDCARD                      p1_p2_rdb_pc:P1025RDB,SDCARD                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_SPIFLASH                    p1_p2_rdb_pc:P1025RDB,SPIFLASH                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC                          p1_p2_rdb_pc:P2020RDB                                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT                    p1_p2_rdb_pc:P2020RDB,36BIT                                                                                                       -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT_NAND               p1_p2_rdb_pc:P2020RDB,36BIT,NAND                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT_SDCARD             p1_p2_rdb_pc:P2020RDB,36BIT,SDCARD                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT_SPIFLASH           p1_p2_rdb_pc:P2020RDB,36BIT,SPIFLASH                                                                                              -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_NAND                     p1_p2_rdb_pc:P2020RDB,NAND                                                                                                        -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_SDCARD                   p1_p2_rdb_pc:P2020RDB,SDCARD                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_SPIFLASH                 p1_p2_rdb_pc:P2020RDB,SPIFLASH                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p1_twr              TWR-P1025                            p1_twr:TWR_P1025                                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       p2020come           P2020COME_SDCARD                     P2020COME:SDCARD                                                                                                                  Ira W. Snyder <iws@ovro.caltech.edu>
-Active  powerpc     mpc85xx        -           freescale       p2020come           P2020COME_SPIFLASH                   P2020COME:SPIFLASH                                                                                                                Ira W. Snyder <iws@ovro.caltech.edu>
-Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS                              -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_36BIT                        P2020DS:36BIT                                                                                                                     -
-Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_DDR2                         P2020DS:DDR2                                                                                                                      -
-Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_SDCARD                       P2020DS:SDCARD                                                                                                                    -
-Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_SPIFLASH                     P2020DS:SPIFLASH                                                                                                                  -
-Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB                             -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_NAND                        P2041RDB:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                -
-Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SDCARD                      P2041RDB:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                              -
-Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SECURE_BOOT                 P2041RDB:SECURE_BOOT                                                                                                              -
-Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SPIFLASH                    P2041RDB:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                            -
-Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SRIO_PCIE_BOOT              P2041RDB:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                            -
-Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS                             T1040QDS:PPC_T1040                                                                                                                Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS_D4                          T1040QDS:PPC_T1040,SYS_FSL_DDR4                                                                                                   Poonam Aggrwal <poonam.aggrwal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS_SECURE_BOOT                 T1040QDS:PPC_T1040,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB                             T104xRDB:PPC_T1040,T1040RDB                                                                                                       Priyanka Jain  <Priyanka.Jain@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_NAND                        T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                            Priyanka Jain  <Priyanka.Jain@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SDCARD                      T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SECURE_BOOT                 T104xRDB:PPC_T1040,SECURE_BOOT,T1040RDB                                                                                           Aneesh Bansal  <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SPIFLASH                    T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                        Priyanka Jain  <Priyanka.Jain@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI                          T104xRDB:PPC_T1042,T1042RDB_PI                                                                                                             Priyanka Jain  <Priyanka.Jain@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_NAND                     T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                         Priyanka Jain  <Priyanka.Jain@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_SDCARD                   T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
-Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_SPIFLASH                 T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                     Priyanka Jain  <Priyanka.Jain@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS                             T208xQDS:PPC_T2080                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SECURE_BOOT                 T208xQDS:PPC_T2080,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_NAND                        T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SDCARD                      T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SPIFLASH                    T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SRIO_PCIE_BOOT              T208xQDS:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS                             T208xQDS:PPC_T2081                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_NAND                        T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SDCARD                      T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                             -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SPIFLASH                    T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                                           -
-Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SRIO_PCIE_BOOT              T208xQDS:PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB                             T208xRDB:PPC_T2080                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_NAND                        T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SDCARD                      T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SPIFLASH                    T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH
-Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SRIO_PCIE_BOOT              T208xRDB:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS                             T4240QDS:PPC_T4160                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SECURE_BOOT                 T4240QDS:PPC_T4160,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_NAND                        T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                    -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SDCARD                      T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                    -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SPIFLASH                    T4240QDS:PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240EMU                             T4240EMU:PPC_T4240                                                                                                                York Sun <yorksun@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS                             T4240QDS:PPC_T4240                                                                                                                -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SECURE_BOOT                 T4240QDS:PPC_T4240,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_NAND                       T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                      -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SDCARD                      T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                    -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SPIFLASH                    T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SRIO_PCIE_BOOT              T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
-Active  powerpc     mpc85xx        -           freescale       qemu-ppce500        qemu-ppce500                         -                                                                                                                                 Alexander Graf <agraf@suse.de>
-Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_36BIT_SDCARD          controlcenterd:36BIT,SDCARD                                                                                                       Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_36BIT_SDCARD_DEVELOP  controlcenterd:36BIT,SDCARD,DEVELOP                                                                                               Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_TRAILBLAZER           controlcenterd:TRAILBLAZER,SPIFLASH                                                                                               Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_TRAILBLAZER_DEVELOP   controlcenterd:TRAILBLAZER,SPIFLASH,DEVELOP                                                                                       Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     mpc85xx        -           keymile         kmp204x             kmcoge4                              kmp204x:KMCOGE4                                                                                                                   Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  powerpc     mpc85xx        -           keymile         kmp204x             kmlion1                              kmp204x:KMLION1                                                                                                                   Valentin Longchamp <valentin.longchamp@keymile.com>
-Active  powerpc     mpc85xx        -           stx             stxgp3              stxgp3                               -                                                                                                                                 Dan Malek <dan@embeddedalley.com>
-Active  powerpc     mpc85xx        -           stx             stxssa              stxssa                               -                                                                                                                                 Dan Malek <dan@embeddedalley.com>
-Active  powerpc     mpc85xx        -           stx             stxssa              stxssa_4M                            stxssa:STXSSA_4M                                                                                                                  Dan Malek <dan@embeddedalley.com>
-Active  powerpc     mpc85xx        -           xes             -                   xpedite520x                          -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           xes             -                   xpedite537x                          -                                                                                                                                 -
-Active  powerpc     mpc85xx        -           xes             -                   xpedite550x                          -                                                                                                                                 -
-Active  powerpc     mpc86xx        -           -               -                   sbc8641d                             -                                                                                                                                 Paul Gortmaker <paul.gortmaker@windriver.com>
-Active  powerpc     mpc86xx        -           freescale       mpc8610hpcd         MPC8610HPCD                          -                                                                                                                                 -
-Active  powerpc     mpc86xx        -           freescale       mpc8641hpcn         MPC8641HPCN                          -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc86xx        -           freescale       mpc8641hpcn         MPC8641HPCN_36BIT                    MPC8641HPCN:PHYS_64BIT                                                                                                            Kumar Gala <kumar.gala@freescale.com>
-Active  powerpc     mpc86xx        -           xes             -                   xpedite517x                          -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               -                   hermes                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               -                   lwmon                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               -                   quantum                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               -                   RRvision                             -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               -                   spc1920                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               -                   svm_sc8xx                            -                                                                                                                                 John Zhan <zhanz@sinovee.com>
-Active  powerpc     mpc8xx         -           -               -                   v37                                  -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               cogent              cogent_mpc8xx                        -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
-Active  powerpc     mpc8xx         -           -               esteem192e          ESTEEM192E                           -                                                                                                                                 Conn Clark <clark@esteem.com>
-Active  powerpc     mpc8xx         -           -               fads                MPC86xADS                            -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               fads                MPC885ADS                            -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               flagadm             FLAGADM                              -                                                                                                                                 Kári Davíðsson <kd@flaga.is>
-Active  powerpc     mpc8xx         -           -               gen860t             GEN860T                              -                                                                                                                                 Keith Outwater <Keith_Outwater@mvis.com>
-Active  powerpc     mpc8xx         -           -               gen860t             GEN860T_SC                           GEN860T:SC                                                                                                                        Keith Outwater <Keith_Outwater@mvis.com>
-Active  powerpc     mpc8xx         -           -               icu862              ICU862                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               icu862              ICU862_100MHz                        ICU862:100MHz                                                                                                                     Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ip860               IP860                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ivm                 IVML24                               IVML24:IVML24_16M                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ivm                 IVML24_128                           IVML24:IVML24_32M                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ivm                 IVML24_256                           IVML24:IVML24_64M                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ivm                 IVMS8                                IVMS8:IVMS8_16M                                                                                                                   Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ivm                 IVMS8_128                            IVMS8:IVMS8_32M                                                                                                                   Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               ivm                 IVMS8_256                            IVMS8:IVMS8_64M                                                                                                                   Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               netphone            NETPHONE                             NETPHONE:NETPHONE_VERSION=1                                                                                                       -
-Active  powerpc     mpc8xx         -           -               netphone            NETPHONE_V2                          NETPHONE:NETPHONE_VERSION=2                                                                                                       -
-Active  powerpc     mpc8xx         -           -               netta               NETTA                                -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_6412                           NETTA:NETTA_6412=1                                                                                                                -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_6412_SWAPHOOK                  NETTA:NETTA_6412=1,NETTA_SWAPHOOK=1                                                                                               -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN                           NETTA:NETTA_ISDN=1                                                                                                                -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN_6412                      NETTA:NETTA_ISDN=1,NETTA_6412=1                                                                                                   -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN_6412_SWAPHOOK             NETTA:NETTA_ISDN=1,NETTA_6412=1,NETTA_SWAPHOOK=1                                                                                  -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN_SWAPHOOK                  NETTA:NETTA_ISDN=1,NETTA_SWAPHOOK=1                                                                                               -
-Active  powerpc     mpc8xx         -           -               netta               NETTA_SWAPHOOK                       NETTA:NETTA_SWAPHOOK=1                                                                                                            -
-Active  powerpc     mpc8xx         -           -               netta2              NETTA2                               NETTA2:NETTA2_VERSION=1                                                                                                           -
-Active  powerpc     mpc8xx         -           -               netta2              NETTA2_V2                            NETTA2:NETTA2_VERSION=2                                                                                                           -
-Active  powerpc     mpc8xx         -           -               netvia              NETVIA                               NETVIA:NETVIA_VERSION=1                                                                                                           Pantelis Antoniou <panto@intracom.gr>
-Active  powerpc     mpc8xx         -           -               netvia              NETVIA_V2                            NETVIA:NETVIA_VERSION=2                                                                                                           Pantelis Antoniou <panto@intracom.gr>
-Active  powerpc     mpc8xx         -           -               r360mpi             R360MPI                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               rbc823              RBC823                               -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW                           -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_64                        RPXlite_DW:RPXlite_64MHz                                                                                                          -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_64_LCD                    RPXlite_DW:RPXlite_64MHz,LCD,NEC_NL6448BC20                                                                                       -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_LCD                       RPXlite_DW:LCD,NEC_NL6448BC20                                                                                                     -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM                     RPXlite_DW:ENV_IS_IN_NVRAM                                                                                                        -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM_64                  RPXlite_DW:RPXlite_64MHz,ENV_IS_IN_NVRAM                                                                                          -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM_64_LCD              RPXlite_DW:RPXlite_64MHz,LCD,NEC_NL6448BC20,ENV_IS_IN_NVRAM                                                                       -
-Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM_LCD                 RPXlite_DW:LCD,NEC_NL6448BC20,ENV_IS_IN_NVRAM                                                                                     -
-Active  powerpc     mpc8xx         -           -               RRvision            RRvision_LCD                         RRvision:LCD,SHARP_LQ104V7DS01                                                                                                    Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           -               sixnet              SXNI855T                             -                                                                                                                                 Dave Ellis <DGE@sixnetio.com>
-Active  powerpc     mpc8xx         -           -               spd8xx              SPD823TS                             -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           eltec           mhpc                MHPC                                 -                                                                                                                                 Frank Gottschling <fgottschling@eltec.de>
-Active  powerpc     mpc8xx         -           emk             top860              TOP860                               -                                                                                                                                 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
-Active  powerpc     mpc8xx         -           kup             kup4k               KUP4K                                -                                                                                                                                 Klaus Heydeck <heydeck@kieback-peter.de>
-Active  powerpc     mpc8xx         -           kup             kup4x               KUP4X                                -                                                                                                                                 Klaus Heydeck <heydeck@kieback-peter.de>
-Active  powerpc     mpc8xx         -           LEOX            elpt860             ELPT860                              -                                                                                                                                 The LEOX team <team@leox.org>
-Active  powerpc     mpc8xx         -           manroland       -                   uc100                                -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     mpc8xx         -           snmc            qs850               QS823                                -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           snmc            qs850               QS850                                -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           snmc            qs860t              QS860T                               -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           stx             stxxtc              stxxtc                               -                                                                                                                                 Dan Malek <dan@embeddedalley.com>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              FPS850L                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              FPS860L                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              NSCU                                 -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              SM850                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TK885D                               -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM823L                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM823L_LCD                          TQM823L:LCD,NEC_NL6448BC20                                                                                                        Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM823M                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM850L                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM850M                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM855L                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM855M                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM860L                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM860M                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM862L                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM862M                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM866M                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM885D                              -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              TTTech                               TQM823L:LCD,SHARP_LQ104V7DS01                                                                                                     Wolfgang Denk <wd@denx.de>
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              virtlab2                             -                                                                                                                                 -
-Active  powerpc     mpc8xx         -           tqc             tqm8xx              wtk                                  TQM823L:LCD,SHARP_LQ065T9DR51U                                                                                                    Wolfgang Denk <wd@denx.de>
-Active  powerpc     ppc4xx         -           -               -                   csb272                               -                                                                                                                                 Tolunay Orkun <torkun@nextio.com>
-Active  powerpc     ppc4xx         -           -               -                   csb472                               -                                                                                                                                 Tolunay Orkun <torkun@nextio.com>
-Active  powerpc     ppc4xx         -           -               -                   korat                                -                                                                                                                                 Larry Johnson <lrj@acm.org>
-Active  powerpc     ppc4xx         -           -               -                   lwmon5                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           -               -                   pcs440ep                             -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           -               -                   quad100hd                            -                                                                                                                                 Gary Jennejohn <garyj@denx.de>
-Active  powerpc     ppc4xx         -           -               -                   sbc405                               -                                                                                                                                 -
-Active  powerpc     ppc4xx         -           -               -                   sc3                                  -                                                                                                                                 Heiko Schocher <hs@denx.de>
-Active  powerpc     ppc4xx         -           -               -                   t3corp                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           -               -                   zeus                                 -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           -               g2000               G2000                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           -               jse                 JSE                                  -                                                                                                                                 Stephen Williams <steve@icarus.com>
-Active  powerpc     ppc4xx         -           -               korat               korat_perm                           korat:KORAT_PERMANENT                                                                                                             Larry Johnson <lrj@acm.org>
-Active  powerpc     ppc4xx         -           -               lwmon5              lcd4_lwmon5                          lwmon5:LCD4_LWMON5                                                                                                                Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           -               w7o                 W7OLMC                               -                                                                                                                                 Erik Theisen <etheisen@mindspring.com>
-Active  powerpc     ppc4xx         -           -               w7o                 W7OLMG                               -                                                                                                                                 Erik Theisen <etheisen@mindspring.com>
-Active  powerpc     ppc4xx         -           amcc            -                   acadia                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   bamboo                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   bubinga                              -                                                                                                                                 -
-Active  powerpc     ppc4xx         -           amcc            -                   ebony                                -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   katmai                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   luan                                 -                                                                                                                                 John Otken <jotken@softadvances.com>
-Active  powerpc     ppc4xx         -           amcc            -                   makalu                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   ocotea                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   redwood                              -                                                                                                                                 Feng Kan <fkan@amcc.com>
-Active  powerpc     ppc4xx         -           amcc            -                   taihu                                -                                                                                                                                 John Otken <jotken@softadvances.com>
-Active  powerpc     ppc4xx         -           amcc            -                   taishan                              -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            -                   yucca                                -                                                                                                                                 -
-Active  powerpc     ppc4xx         -           amcc            canyonlands         arches                               canyonlands:ARCHES                                                                                                                Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            canyonlands         canyonlands                          canyonlands:CANYONLANDS                                                                                                           Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            canyonlands         glacier                              canyonlands:GLACIER                                                                                                               Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            kilauea             haleakala                            kilauea:HALEAKALA                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            kilauea             kilauea                              kilauea:KILAUEA                                                                                                                   Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            sequoia             rainier                              sequoia:RAINIER                                                                                                                   Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            sequoia             rainier_ramboot                      sequoia:RAINIER,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds                               Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            sequoia             sequoia                              sequoia:SEQUOIA                                                                                                                   Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            sequoia             sequoia_ramboot                      sequoia:SEQUOIA,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds                               Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            walnut              sycamore                             walnut                                                                                                                            Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            walnut              walnut                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            yosemite            yellowstone                          yosemite:YELLOWSTONE                                                                                                              Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           amcc            yosemite            yosemite                             yosemite:YOSEMITE                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           avnet           fx12mm              fx12mm                               fx12mm:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,INIT_TLB=board/xilinx/ppc405-generic/init.o                       Georg Schardt <schardt@team-ctech.de>
-Active  powerpc     ppc4xx         -           avnet           fx12mm              fx12mm_flash                         fx12mm:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc405-generic/init.o                       Georg Schardt <schardt@team-ctech.de>
-Active  powerpc     ppc4xx         -           avnet           v5fx30teval         v5fx30teval                          v5fx30teval:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o  Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           avnet           v5fx30teval         v5fx30teval_flash                    v5fx30teval:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o                  Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      CATcenter                            CATcenter:PPCHAMELEON_MODULE_MODEL=1                                                                                              -
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      CATcenter_25                         CATcenter:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25                                                                           -
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      CATcenter_33                         CATcenter:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33                                                                           -
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB                       -                                                                                                                                 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_BA_25                 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_25                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_BA_33                 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_33                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_HI_25                 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_25                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_HI_33                 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_33                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_ME_25                 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_ME_33                 PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
-Active  powerpc     ppc4xx         -           esd             apc405              APC405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             ar405               AR405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             ash405              ASH405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cms700              CMS700                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cpci2dp             CPCI2DP                              -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cpci405             CPCI405                              -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cpci405             CPCI4052                             -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cpci405             CPCI405AB                            -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cpci405             CPCI405DT                            -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             cpciiser4           CPCIISER4                            -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             dp405               DP405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             du405               DU405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             du440               DU440                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             hh405               HH405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             hub405              HUB405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             ocrtc               OCRTC                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             pci405              PCI405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             plu405              PLU405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             pmc405              PMC405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             pmc405de            PMC405DE                             -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             pmc440              PMC440                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             voh405              VOH405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             vom405              VOM405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           esd             wuh405              WUH405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-Active  powerpc     ppc4xx         -           gdsys           -                   dlvision                             -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           -                   gdppc440etx                          -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           405ep               dlvision-10g                         -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           405ep               io                                   -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           405ep               iocon                                -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           405ep               neo                                  -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           405ex               io64                                 -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           intip               devconcenter                         intip:DEVCONCENTER                                                                                                                Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           gdsys           intip               intip                                intip:INTIB                                                                                                                       Dirk Eibach <eibach@gdsys.de>
-Active  powerpc     ppc4xx         -           mosaixtech      -                   icon                                 -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           mpl             mip405              MIP405                               -                                                                                                                                 Denis Peter <d.peter@mpl.ch>
-Active  powerpc     ppc4xx         -           mpl             mip405              MIP405T                              MIP405:MIP405T                                                                                                                    Denis Peter <d.peter@mpl.ch>
-Active  powerpc     ppc4xx         -           mpl             pip405              PIP405                               -                                                                                                                                 Denis Peter <d.peter@mpl.ch>
-Active  powerpc     ppc4xx         -           prodrive        -                   alpr                                 -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           prodrive        -                   p3p440                               -                                                                                                                                 Stefan Roese <sr@denx.de>
-Active  powerpc     ppc4xx         -           xes             -                   xpedite1000                          -                                                                                                                                 Peter Tyser <ptyser@xes-inc.com>
-Active  powerpc     ppc4xx         -           xilinx          ml507               ml507                                ml507:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o        Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           xilinx          ml507               ml507_flash                          ml507:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o                        Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           xilinx          ppc405-generic      xilinx-ppc405-generic                xilinx-ppc405-generic:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000                                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           xilinx          ppc405-generic      xilinx-ppc405-generic_flash          xilinx-ppc405-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC                                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           xilinx          ppc440-generic      xilinx-ppc440-generic                xilinx-ppc440-generic:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  powerpc     ppc4xx         -           xilinx          ppc440-generic      xilinx-ppc440-generic_flash          xilinx-ppc440-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC                                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
-Active  sandbox     sandbox        -           sandbox         sandbox             sandbox                              -                                                                                                                                 Simon Glass <sjg@chromium.org>
-Active  sh          sh2            -           renesas         rsk7203             rsk7203                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh2            -           renesas         rsk7264             rsk7264                              -                                                                                                                                 Phil Edworthy <phil.edworthy@renesas.com>
-Active  sh          sh2            -           renesas         rsk7269             rsk7269                              -                                                                                                                                 -
-Active  sh          sh3            -           -               mpr2                mpr2                                 -                                                                                                                                 Mark Jonas <mark.jonas@de.bosch.com>
-Active  sh          sh3            -           -               ms7720se            ms7720se                             -                                                                                                                                 Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
-Active  sh          sh3            -           -               shmin               shmin                                -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           -               espt                espt                                 -                                                                                                                                 -
-Active  sh          sh4            -           -               ms7722se            ms7722se                             -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           -               ms7750se            ms7750se                             -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           alphaproject    ap_sh4a_4a          ap_sh4a_4a                           -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         ap325rxa            ap325rxa                             -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         ecovec              ecovec                               -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         MigoR               MigoR                                -                                                                                                                                 -
-Active  sh          sh4            -           renesas         r0p7734             r0p7734                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         r2dplus             r2dplus                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         r7780mp             r7780mp                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         sh7752evb           sh7752evb                            -                                                                                                                                 -
-Active  sh          sh4            -           renesas         sh7753evb           sh7753evb                            -                                                                                                                                 -
-Active  sh          sh4            -           renesas         sh7757lcr           sh7757lcr                            -                                                                                                                                 -
-Active  sh          sh4            -           renesas         sh7763rdp           sh7763rdp                            -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Active  sh          sh4            -           renesas         sh7785lcr           sh7785lcr                            -                                                                                                                                 -
-Active  sh          sh4            -           renesas         sh7785lcr           sh7785lcr_32bit                      sh7785lcr:SH_32BIT=1                                                                                                              -
-Active  sparc       leon2          -           gaisler         -                   grsim_leon2                          -                                                                                                                                 -
-Active  sparc       leon3          -           gaisler         -                   gr_cpci_ax2000                       -                                                                                                                                 -
-Active  sparc       leon3          -           gaisler         -                   gr_ep2s60                            -                                                                                                                                 -
-Active  sparc       leon3          -           gaisler         -                   gr_xc3s_1500                         -                                                                                                                                 -
-Active  sparc       leon3          -           gaisler         -                   grsim                                -                                                                                                                                 -
-Active  x86         x86            coreboot    chromebook-x86  coreboot            coreboot-x86                         coreboot:SYS_TEXT_BASE=0x01110000                                                                                                 -
+Active  aarch64     armv8          -           armltd          vexpress64          vexpress_aemv8a                       vexpress_aemv8a:ARM64                                                                                                             David Feng <fenghua@phytium.com.cn>
+Active  arc         arc700         -           synopsys        -                   axs101                                -                                                                                                                                 Alexey Brodkin <abrodkin@synopsys.com>
+Active  arc         arc700         -           synopsys        <none>              arcangel4                             -                                                                                                                                 Alexey Brodkin <abrodkin@synopsys.com>
+Active  arc         arc700         -           synopsys        <none>              arcangel4-be                          -                                                                                                                                 Alexey Brodkin <abrodkin@synopsys.com>
+Active  arm         arm1136        -           armltd          integrator          integratorcp_cm1136                   integratorcp:CM1136                                                                                                               Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm1136        mx31        -               -                   imx31_phycore                         -                                                                                                                                 -
+Active  arm         arm1136        mx31        davedenx        -                   qong                                  -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  arm         arm1136        mx31        freescale       -                   mx31pdk                               -                                                                                                                                 Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         arm1136        mx31        hale            -                   tt01                                  -                                                                                                                                 Helmut Raiger <helmut.raiger@hale.at>
+Active  arm         arm1136        mx31        logicpd         -                   imx31_litekit                         -                                                                                                                                 -
+Active  arm         arm1136        mx35        -               -                   woodburn                              -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         arm1136        mx35        -               woodburn            woodburn_sd                           woodburn_sd:IMX_CONFIG=board/woodburn/imximage.cfg                                                                                -
+Active  arm         arm1136        mx35        CarMediaLab     -                   flea3                                 -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         arm1136        mx35        freescale       -                   mx35pdk                               -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         arm1176        bcm2835     raspberrypi     rpi_b               rpi_b                                 -                                                                                                                                 Stephen Warren <swarren@wwwdotorg.org>
+Active  arm         arm1176        tnetv107x   ti              tnetv107xevm        tnetv107x_evm                         -                                                                                                                                 Chan-Taek Park <c-park@ti.com>
+Active  arm         arm720t        -           armltd          integrator          integratorap_cm720t                   integratorap:CM720T                                                                                                               Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm920t        -           armltd          integrator          integratorap_cm920t                   integratorap:CM920T                                                                                                               Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm920t        -           armltd          integrator          integratorcp_cm920t                   integratorcp:CM920T                                                                                                               Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm920t        a320        faraday         -                   a320evb                               -                                                                                                                                 Po-Yu Chuang <ratbert@faraday-tech.com>
+Active  arm         arm920t        at91        atmel           at91rm9200ek        at91rm9200ek                          -                                                                                                                                 Andreas Bießmann <andreas.devel@gmail.com>
+Active  arm         arm920t        at91        atmel           at91rm9200ek        at91rm9200ek_ram                      at91rm9200ek:RAMBOOT                                                                                                              Andreas Bießmann <andreas.devel@gmail.com>
+Active  arm         arm920t        at91        BuS             eb_cpux9k2          eb_cpux9k2                            -                                                                                                                                 Jens Scharsig <esw@bus-elektronik.de>
+Active  arm         arm920t        at91        BuS             eb_cpux9k2          eb_cpux9k2_ram                        eb_cpux9k2:RAMBOOT                                                                                                                Jens Scharsig <esw@bus-elektronik.de>
+Active  arm         arm920t        at91        eukrea          cpuat91             cpuat91                               -                                                                                                                                 Eric Benard <eric@eukrea.com>
+Active  arm         arm920t        at91        eukrea          cpuat91             cpuat91_ram                           cpuat91:RAMBOOT                                                                                                                   Eric Benard <eric@eukrea.com>
+Active  arm         arm920t        imx         -               -                   scb9328                               -                                                                                                                                 Torsten Koschorrek <koschorrek@synertronixx.de>
+Active  arm         arm920t        ks8695      -               -                   cm4008                                -                                                                                                                                 Greg Ungerer <greg.ungerer@opengear.com>
+Active  arm         arm920t        ks8695      -               -                   cm41xx                                -                                                                                                                                 -
+Active  arm         arm920t        s3c24x0     mpl             vcma9               VCMA9                                 -                                                                                                                                 David Müller <d.mueller@elsoft.ch>
+Active  arm         arm920t        s3c24x0     samsung         -                   smdk2410                              -                                                                                                                                 David Müller <d.mueller@elsoft.ch>
+Active  arm         arm926ejs      -           armltd          integrator          integratorap_cm926ejs                 integratorap:CM926EJ_S                                                                                                            Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm926ejs      -           armltd          integrator          integratorcp_cm926ejs                 integratorcp:CM924EJ_S                                                                                                            Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm926ejs      armada100   Marvell         -                   aspenite                              -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
+Active  arm         arm926ejs      armada100   Marvell         -                   gplugd                                -                                                                                                                                 Ajay Bhargav <ajay.bhargav@einfochips.com>
+Active  arm         arm926ejs      at91        -               -                   afeb9260                              -                                                                                                                                 Sergey Lapin <slapin@ossfans.org>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9260ek_dataflash_cs0           at91sam9260ek:AT91SAM9260,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9260ek_dataflash_cs1           at91sam9260ek:AT91SAM9260,SYS_USE_DATAFLASH_CS1                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9260ek_nandflash               at91sam9260ek:AT91SAM9260,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_2mmc_nandflash          at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH                                                                    Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_dataflash_cs0           at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_dataflash_cs1           at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_mmc                     at91sam9260ek:AT91SAM9G20,SYS_USE_MMC                                                                                             Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9g20ek_nandflash               at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9xeek_dataflash_cs0            at91sam9260ek:AT91SAM9XE,SYS_USE_DATAFLASH_CS0                                                                                    Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9xeek_dataflash_cs1            at91sam9260ek:AT91SAM9XE,SYS_USE_DATAFLASH_CS1                                                                                    Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9260ek       at91sam9xeek_nandflash                at91sam9260ek:AT91SAM9XE,SYS_USE_NANDFLASH                                                                                        Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9261ek_dataflash_cs0           at91sam9261ek:AT91SAM9261,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9261ek_dataflash_cs3           at91sam9261ek:AT91SAM9261,SYS_USE_DATAFLASH_CS3                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9261ek_nandflash               at91sam9261ek:AT91SAM9261,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9g10ek_dataflash_cs0           at91sam9261ek:AT91SAM9G10,SYS_USE_DATAFLASH_CS0                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9g10ek_dataflash_cs3           at91sam9261ek:AT91SAM9G10,SYS_USE_DATAFLASH_CS3                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9261ek       at91sam9g10ek_nandflash               at91sam9261ek:AT91SAM9G10,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_dataflash               at91sam9263ek:AT91SAM9263,SYS_USE_DATAFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_dataflash_cs0           at91sam9263ek:AT91SAM9263,SYS_USE_DATAFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_nandflash               at91sam9263ek:AT91SAM9263,SYS_USE_NANDFLASH                                                                                       Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_norflash                at91sam9263ek:AT91SAM9263,SYS_USE_NORFLASH                                                                                        Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9263ek       at91sam9263ek_norflash_boot           at91sam9263ek:AT91SAM9263,SYS_USE_BOOT_NORFLASH                                                                                   Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9m10g45ek    at91sam9m10g45ek_nandflash            at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH                                                                                 Bo Shen<voice.shen@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9m10g45ek    at91sam9m10g45ek_mmc                  at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_MMC                                                                                       Bo Shen<voice.shen@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9n12ek       at91sam9n12ek_mmc                     at91sam9n12ek:AT91SAM9N12,SYS_USE_MMC                                                                                             Josh Wu <josh.wu@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9n12ek       at91sam9n12ek_nandflash               at91sam9n12ek:AT91SAM9N12,SYS_USE_NANDFLASH                                                                                       Josh Wu <josh.wu@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9n12ek       at91sam9n12ek_spiflash                at91sam9n12ek:AT91SAM9N12,SYS_USE_SPIFLASH                                                                                        Josh Wu <josh.wu@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9rlek        at91sam9rlek_dataflash                at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH                                                                                         Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9rlek        at91sam9rlek_nandflash                at91sam9rlek:AT91SAM9RL,SYS_USE_NANDFLASH                                                                                         Stelian Pop <stelian@popies.net>
+Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_dataflash                at91sam9x5ek:AT91SAM9X5,SYS_USE_DATAFLASH                                                                                         Bo Shen <voice.shen@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_mmc                      at91sam9x5ek:AT91SAM9X5,SYS_USE_MMC                                                                                               Bo Shen <voice.shen@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_nandflash                at91sam9x5ek:AT91SAM9X5,SYS_USE_NANDFLASH                                                                                         Bo Shen <voice.shen@atmel.com>
+Active  arm         arm926ejs      at91        atmel           at91sam9x5ek        at91sam9x5ek_spiflash                 at91sam9x5ek:AT91SAM9X5,SYS_USE_SPIFLASH                                                                                          Bo Shen <voice.shen@atmel.com>
+Active  arm         arm926ejs      at91        bluewater       -                   snapper9260                           snapper9260:AT91SAM9260                                                                                                           Ryan Mallon <ryan@bluewatersys.com>
+Active  arm         arm926ejs      at91        bluewater       snapper9260         snapper9g20                           snapper9260:AT91SAM9G20                                                                                                           Ryan Mallon <ryan@bluewatersys.com>
+Active  arm         arm926ejs      at91        BuS             vl_ma2sc            vl_ma2sc                              -                                                                                                                                 Jens Scharsig <esw@bus-elektronik.de>
+Active  arm         arm926ejs      at91        BuS             vl_ma2sc            vl_ma2sc_ram                          vl_ma2sc:RAMLOAD                                                                                                                  Jens Scharsig <esw@bus-elektronik.de>
+Active  arm         arm926ejs      at91        calao           sbc35_a9g20         sbc35_a9g20_eeprom                    sbc35_a9g20:AT91SAM9G20,SYS_USE_EEPROM                                                                                            Albin Tonnerre <albin.tonnerre@free-electrons.com>
+Active  arm         arm926ejs      at91        calao           sbc35_a9g20         sbc35_a9g20_nandflash                 sbc35_a9g20:AT91SAM9G20,SYS_USE_NANDFLASH                                                                                         Albin Tonnerre <albin.tonnerre@free-electrons.com>
+Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9260_eeprom                      tny_a9260:AT91SAM9260,SYS_USE_EEPROM                                                                                              Albin Tonnerre <albin.tonnerre@free-electrons.com>
+Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9260_nandflash                   tny_a9260:AT91SAM9260,SYS_USE_NANDFLASH                                                                                           Albin Tonnerre <albin.tonnerre@free-electrons.com>
+Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9g20_eeprom                      tny_a9260:AT91SAM9G20,SYS_USE_EEPROM                                                                                              Albin Tonnerre <albin.tonnerre@free-electrons.com>
+Active  arm         arm926ejs      at91        calao           tny_a9260           tny_a9g20_nandflash                   tny_a9260:AT91SAM9G20,SYS_USE_NANDFLASH                                                                                           Albin Tonnerre <albin.tonnerre@free-electrons.com>
+Active  arm         arm926ejs      at91        calao           usb_a9263           usb_a9263_dataflash                   usb_a9263:AT91SAM9263,SYS_USE_DATAFLASH                                                                                           Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
+Active  arm         arm926ejs      at91        egnite          ethernut5           ethernut5                             ethernut5:AT91SAM9XE                                                                                                              egnite GmbH <info@egnite.de>
+Active  arm         arm926ejs      at91        emk             top9000             top9000eval_xe                        top9000:EVAL9000                                                                                                                  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+Active  arm         arm926ejs      at91        emk             top9000             top9000su_xe                          top9000:SU9000                                                                                                                    Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+Active  arm         arm926ejs      at91        esd             meesc               meesc                                 meesc:AT91SAM9263,SYS_USE_NANDFLASH                                                                                               Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+Active  arm         arm926ejs      at91        esd             meesc               meesc_dataflash                       meesc:AT91SAM9263,SYS_USE_DATAFLASH                                                                                               Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+Active  arm         arm926ejs      at91        esd             otc570              otc570                                otc570:AT91SAM9263,SYS_USE_NANDFLASH                                                                                              Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+Active  arm         arm926ejs      at91        esd             otc570              otc570_dataflash                      otc570:AT91SAM9263,SYS_USE_DATAFLASH                                                                                              Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260                               cpu9260:CPU9260                                                                                                                   Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260_128M                          cpu9260:CPU9260,CPU9260_128M                                                                                                      Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260_nand                          cpu9260:CPU9260,NANDBOOT                                                                                                          Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9260_nand_128M                     cpu9260:CPU9260,CPU9260_128M,NANDBOOT                                                                                             Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20                               cpu9260:CPU9G20                                                                                                                   Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20_128M                          cpu9260:CPU9G20,CPU9G20_128M                                                                                                      Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20_nand                          cpu9260:CPU9G20,NANDBOOT                                                                                                          Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        eukrea          cpu9260             cpu9G20_nand_128M                     cpu9260:CPU9G20,CPU9G20_128M,NANDBOOT                                                                                             Eric Benard <eric@eukrea.com>
+Active  arm         arm926ejs      at91        ronetix         pm9261              pm9261                                pm9261:AT91SAM9261                                                                                                                Ilko Iliev <iliev@ronetix.at>
+Active  arm         arm926ejs      at91        ronetix         pm9263              pm9263                                pm9263:AT91SAM9263                                                                                                                Ilko Iliev <iliev@ronetix.at>
+Active  arm         arm926ejs      at91        ronetix         pm9g45              pm9g45                                pm9g45:AT91SAM9G45                                                                                                                Ilko Iliev <iliev@ronetix.at>
+Active  arm         arm926ejs      at91        siemens         corvus              corvus                                corvus:AT91SAM9M10G45,SYS_USE_NANDFLASH                                                                                           Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      at91        siemens         taurus              axm                                   taurus:AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM                                                                                       Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      at91        siemens         taurus              taurus                                taurus:AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS                                                                                    Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      at91        taskit          stamp9g20           portuxg20                             stamp9g20:AT91SAM9G20,PORTUXG20                                                                                                   Markus Hubig <mhubig@imko.de>
+Active  arm         arm926ejs      at91        taskit          stamp9g20           stamp9g20                             stamp9g20:AT91SAM9G20                                                                                                             Markus Hubig <mhubig@imko.de>
+Active  arm         arm926ejs      davinci     ait             cam_enc_4xx         cam_enc_4xx                           -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      davinci     Barix           ipam390             ipam390                               -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      davinci     davinci         da8xxevm            da830evm                              -                                                                                                                                 Nick Thompson <nick.thompson@gefanuc.com>
+Active  arm         arm926ejs      davinci     davinci         da8xxevm            da850_am18xxevm                       da850evm:DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR_LEN=2,SYS_I2C_EEPROM_ADDR=0x50                                    Sudhakar Rajashekhara <sudhakar.raj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         da8xxevm            da850evm                              da850evm:MAC_ADDR_IN_SPIFLASH                                                                                                     Sudhakar Rajashekhara <sudhakar.raj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         da8xxevm            da850evm_direct_nor                   da850evm:MAC_ADDR_IN_SPIFLASH,USE_NOR,DIRECT_NOR_BOOT                                                                             Sudhakar Rajashekhara <sudhakar.raj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         da8xxevm            hawkboard                             -                                                                                                                                 Syed Mohammed Khasim <sm.khasim@gmail.com>:Sughosh Ganu <urwithsughosh@gmail.com>
+Active  arm         arm926ejs      davinci     davinci         da8xxevm            hawkboard_uart                        hawkboard:UART_U_BOOT                                                                                                             Syed Mohammed Khasim <sm.khasim@gmail.com>:Sughosh Ganu <urwithsughosh@gmail.com>
+Active  arm         arm926ejs      davinci     davinci         dm355evm            davinci_dm355evm                      -                                                                                                                                 Sandeep Paulraj <s-paulraj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         dm355leopard        davinci_dm355leopard                  -                                                                                                                                 Sandeep Paulraj <s-paulraj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         dm365evm            davinci_dm365evm                      -                                                                                                                                 Sandeep Paulraj <s-paulraj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         dm6467evm           davinci_dm6467evm                     davinci_dm6467evm:REFCLK_FREQ=27000000                                                                                            Sandeep Paulraj <s-paulraj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         dm6467evm           davinci_dm6467Tevm                    davinci_dm6467evm:DAVINCI_DM6467TEVM,REFCLK_FREQ=33000000                                                                         Sandeep Paulraj <s-paulraj@ti.com>
+Active  arm         arm926ejs      davinci     davinci         dvevm               davinci_dvevm                         -                                                                                                                                 -
+Active  arm         arm926ejs      davinci     davinci         ea20                ea20                                  -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         arm926ejs      davinci     davinci         schmoogie           davinci_schmoogie                     -                                                                                                                                 -
+Active  arm         arm926ejs      davinci     davinci         sffsdr              davinci_sffsdr                        -                                                                                                                                 -
+Active  arm         arm926ejs      davinci     davinci         sonata              davinci_sonata                        -                                                                                                                                 -
+Active  arm         arm926ejs      davinci     enbw            enbw_cmc            enbw_cmc                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      davinci     omicron         calimain            calimain                              -                                                                                                                                 Manfred Rudigier <manfred.rudigier@omicron.at>:Christian Riesch <christian.riesch@omicron.at>
+Active  arm         arm926ejs      kirkwood    buffalo         lsxl                lschlv2                               lsxl:LSCHLV2                                                                                                                      Michael Walle <michael@walle.cc>
+Active  arm         arm926ejs      kirkwood    buffalo         lsxl                lsxhl                                 lsxl:LSXHL                                                                                                                        Michael Walle <michael@walle.cc>
+Active  arm         arm926ejs      kirkwood    cloudengines    -                   pogo_e02                              -                                                                                                                                 Dave Purdy <david.c.purdy@gmail.com>
+Active  arm         arm926ejs      kirkwood    d-link          -                   dns325                                -                                                                                                                                 Stefan Herbrechtsmeier <stefan@code.herbrechtsmeier.net>
+Active  arm         arm926ejs      kirkwood    iomega          -                   iconnect                              -                                                                                                                                 Luka Perkov <luka@openwrt.org>
+Active  arm         arm926ejs      kirkwood    karo            tk71                tk71                                  -                                                                                                                                 -
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              km_kirkwood                           km_kirkwood:KM_KIRKWOOD                                                                                                           Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              km_kirkwood_128m16                    km_kirkwood:KM_KIRKWOOD_128M16                                                                                                    Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              km_kirkwood_pci                       km_kirkwood:KM_KIRKWOOD_PCI                                                                                                       Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmcoge5un                             km_kirkwood:KM_COGE5UN                                                                                                            Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmnusa                                km_kirkwood:KM_NUSA                                                                                                               Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmsugp1                               km_kirkwood:KM_SUGP1                                                                                                              Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              kmsuv31                               km_kirkwood:KM_SUV31                                                                                                              Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              mgcoge3un                             km_kirkwood:KM_MGCOGE3UN                                                                                                          Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm              portl2                                km_kirkwood:KM_PORTL2                                                                                                             Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  arm         arm926ejs      kirkwood    LaCie           net2big_v2          d2net_v2                              lacie_kw:D2NET_V2                                                                                                                 -
+Active  arm         arm926ejs      kirkwood    LaCie           net2big_v2          net2big_v2                            lacie_kw:NET2BIG_V2                                                                                                               Simon Guinot <simon.guinot@sequanux.org>
+Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         inetspace_v2                          lacie_kw:INETSPACE_V2                                                                                                             Simon Guinot <simon.guinot@sequanux.org>
+Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_lite_v2                      lacie_kw:NETSPACE_LITE_V2                                                                                                         -
+Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_max_v2                       lacie_kw:NETSPACE_MAX_V2                                                                                                          Simon Guinot <simon.guinot@sequanux.org>
+Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_mini_v2                      lacie_kw:NETSPACE_MINI_V2                                                                                                         -
+Active  arm         arm926ejs      kirkwood    LaCie           netspace_v2         netspace_v2                           lacie_kw:NETSPACE_V2                                                                                                              Simon Guinot <simon.guinot@sequanux.org>
+Active  arm         arm926ejs      kirkwood    LaCie           wireless_space      wireless_space                        -                                                                                                                                 -
+Active  arm         arm926ejs      kirkwood    Marvell         -                   dreamplug                             -                                                                                                                                 Jason Cooper <u-boot@lakedaemon.net>
+Active  arm         arm926ejs      kirkwood    Marvell         -                   guruplug                              -                                                                                                                                 Siddarth Gore <gores@marvell.com>
+Active  arm         arm926ejs      kirkwood    Marvell         -                   mv88f6281gtw_ge                       -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
+Active  arm         arm926ejs      kirkwood    Marvell         -                   rd6281a                               -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
+Active  arm         arm926ejs      kirkwood    Marvell         -                   sheevaplug                            -                                                                                                                                 Prafulla Wadaskar <prafulla@marvell.com>
+Active  arm         arm926ejs      kirkwood    Marvell         openrd              openrd_base                           openrd:BOARD_IS_OPENRD_BASE                                                                                                       Prafulla Wadaskar <prafulla@marvell.com>
+Active  arm         arm926ejs      kirkwood    Marvell         openrd              openrd_client                         openrd:BOARD_IS_OPENRD_CLIENT                                                                                                     -
+Active  arm         arm926ejs      kirkwood    Marvell         openrd              openrd_ultimate                       openrd:BOARD_IS_OPENRD_ULTIMATE                                                                                                   -
+Active  arm         arm926ejs      kirkwood    raidsonic       ib62x0              ib62x0                                -                                                                                                                                 Luka Perkov <luka@openwrt.org>
+Active  arm         arm926ejs      kirkwood    Seagate         -                   dockstar                              -                                                                                                                                 Eric Cooper <ecc@cmu.edu>
+Active  arm         arm926ejs      kirkwood    Seagate         -                   goflexhome                            -                                                                                                                                 Suriyan Ramasami <suriyan.r@gmail.com>
+Active  arm         arm926ejs      lpc32xx     timll           devkit3250          devkit3250                            -                                                                                                                                 Vladimir Zapolskiy <vz@mleia.com>
+Active  arm         arm926ejs      mb86r0x     syteco          jadecpu             jadecpu                               -                                                                                                                                 Matthias Weisser <weisserm@arcor.de>
+Active  arm         arm926ejs      mx25        freescale       mx25pdk             mx25pdk                               mx25pdk:IMX_CONFIG=board/freescale/mx25pdk/imximage.cfg                                                                           Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         arm926ejs      mx25        karo            tx25                tx25                                  -                                                                                                                                 John Rigby <jcrigby@gmail.com>
+Active  arm         arm926ejs      mx25        syteco          zmx25               zmx25                                 -                                                                                                                                 Matthias Weisser <weisserm@arcor.de>
+Active  arm         arm926ejs      mx27        armadeus        apf27               apf27                                 -                                                                                                                                 Philippe Reynes <tremyfr@yahoo.fr>:Eric Jarrige <eric.jarrige@armadeus.org>
+Active  arm         arm926ejs      mx27        logicpd         imx27lite           imx27lite                             -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  arm         arm926ejs      mx27        logicpd         imx27lite           magnesium                             -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  arm         arm926ejs      mxs         bluegiga        apx4devkit          apx4devkit                            -                                                                                                                                 Lauri Hintsala <lauri.hintsala@bluegiga.com>
+Active  arm         arm926ejs      mxs         creative        xfi3                xfi3                                  -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         arm926ejs      mxs         denx            m28evk              m28evk                                -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         arm926ejs      mxs         freescale       mx23evk             mx23evk                               -                                                                                                                                 Otavio Salvador <otavio@ossystems.com.br>
+Active  arm         arm926ejs      mxs         freescale       mx28evk             mx28evk                               mx28evk:ENV_IS_IN_MMC                                                                                                             Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         arm926ejs      mxs         freescale       mx28evk             mx28evk_auart_console                 mx28evk:MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_MMC                                                                  Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         arm926ejs      mxs         freescale       mx28evk             mx28evk_nand                          mx28evk:ENV_IS_IN_NAND                                                                                                            Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         arm926ejs      mxs         olimex          mx23_olinuxino      mx23_olinuxino                        -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         arm926ejs      mxs         ppcag           bg0900              bg0900                                -                                                                                                                                 Marek Vasut <marex@denx.de>
+Active  arm         arm926ejs      mxs         sandisk         sansa_fuze_plus     sansa_fuze_plus                       -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         arm926ejs      mxs         schulercontrol  sc_sps_1            sc_sps_1                              -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         arm926ejs      nomadik     st              nhk8815             nhk8815                               -                                                                                                                                 Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>:Alessandro Rubini <rubini@unipv.it>
+Active  arm         arm926ejs      nomadik     st              nhk8815             nhk8815_onenand                       nhk8815:BOOT_ONENAND                                                                                                              Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>:Alessandro Rubini <rubini@unipv.it>
+Active  arm         arm926ejs      omap        ti              -                   omap5912osk                           -                                                                                                                                 Rishi Bhattacharya <rishi@ti.com>
+Active  arm         arm926ejs      orion5x     LaCie           -                   edminiv2                              -                                                                                                                                 Albert ARIBAUD <albert.u.boot@aribaud.net>
+Active  arm         arm926ejs      pantheon    Marvell         -                   dkb                                   -                                                                                                                                 Lei Wen <leiwen@marvell.com>
+Active  arm         arm926ejs      spear       spear           -                   x600                                  -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  arm         arm926ejs      spear       spear           spear300            spear300                              spear3xx_evb:spear300                                                                                                             Vipin Kumar <vipin.kumar@st.com>
+Active  arm         arm926ejs      spear       spear           spear300            spear300_nand                         spear3xx_evb:spear300,nand                                                                                                        -
+Active  arm         arm926ejs      spear       spear           spear300            spear300_usbtty                       spear3xx_evb:spear300,usbtty                                                                                                      -
+Active  arm         arm926ejs      spear       spear           spear300            spear300_usbtty_nand                  spear3xx_evb:spear300,usbtty,nand                                                                                                 -
+Active  arm         arm926ejs      spear       spear           spear310            spear310                              spear3xx_evb:spear310                                                                                                             Vipin Kumar <vipin.kumar@st.com>
+Active  arm         arm926ejs      spear       spear           spear310            spear310_nand                         spear3xx_evb:spear310,nand                                                                                                        -
+Active  arm         arm926ejs      spear       spear           spear310            spear310_pnor                         spear3xx_evb:spear310,FLASH_PNOR                                                                                                  -
+Active  arm         arm926ejs      spear       spear           spear310            spear310_usbtty                       spear3xx_evb:spear310,usbtty                                                                                                      -
+Active  arm         arm926ejs      spear       spear           spear310            spear310_usbtty_nand                  spear3xx_evb:spear310,usbtty,nand                                                                                                 -
+Active  arm         arm926ejs      spear       spear           spear310            spear310_usbtty_pnor                  spear3xx_evb:spear310,usbtty,FLASH_PNOR                                                                                           -
+Active  arm         arm926ejs      spear       spear           spear320            spear320                              spear3xx_evb:spear320                                                                                                             Vipin Kumar <vipin.kumar@st.com>
+Active  arm         arm926ejs      spear       spear           spear320            spear320_nand                         spear3xx_evb:spear320,nand                                                                                                        -
+Active  arm         arm926ejs      spear       spear           spear320            spear320_pnor                         spear3xx_evb:spear320,FLASH_PNOR                                                                                                  -
+Active  arm         arm926ejs      spear       spear           spear320            spear320_usbtty                       spear3xx_evb:spear320,usbtty                                                                                                      -
+Active  arm         arm926ejs      spear       spear           spear320            spear320_usbtty_nand                  spear3xx_evb:spear320,usbtty,nand                                                                                                 -
+Active  arm         arm926ejs      spear       spear           spear320            spear320_usbtty_pnor                  spear3xx_evb:spear320,usbtty,FLASH_PNOR                                                                                           -
+Active  arm         arm926ejs      spear       spear           spear600            spear600                              spear6xx_evb:spear600                                                                                                             Vipin Kumar <vipin.kumar@st.com>
+Active  arm         arm926ejs      spear       spear           spear600            spear600_nand                         spear6xx_evb:spear600,nand                                                                                                        -
+Active  arm         arm926ejs      spear       spear           spear600            spear600_usbtty                       spear6xx_evb:spear600,usbtty                                                                                                      -
+Active  arm         arm926ejs      spear       spear           spear600            spear600_usbtty_nand                  spear6xx_evb:spear600,usbtty,nand                                                                                                 -
+Active  arm         arm926ejs      versatile   armltd          versatile           versatileab                           versatile:ARCH_VERSATILE_AB                                                                                                       -
+Active  arm         arm926ejs      versatile   armltd          versatile           versatilepb                           versatile:ARCH_VERSATILE_PB                                                                                                       -
+Active  arm         arm926ejs      versatile   armltd          versatile           versatileqemu                         versatile:ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB                                                                                   -
+Active  arm         arm946es       -           armltd          integrator          integratorap_cm946es                  integratorap:CM946ES                                                                                                              Linus Walleij <linus.walleij@linaro.org>
+Active  arm         arm946es       -           armltd          integrator          integratorcp_cm946es                  integratorcp:CM946ES                                                                                                              Linus Walleij <linus.walleij@linaro.org>
+Active  arm         armv7          -           armltd          vexpress            vexpress_ca15_tc2                     -                                                                                                                                 -
+Active  arm         armv7          -           armltd          vexpress            vexpress_ca5x2                        -                                                                                                                                 Matt Waddel <matt.waddel@linaro.org>
+Active  arm         armv7          -           armltd          vexpress            vexpress_ca9x4                        -                                                                                                                                 Matt Waddel <matt.waddel@linaro.org>
+Active  arm         armv7          am33xx      BuR             kwb                 kwb                                   kwb:SERIAL1,CONS_INDEX=1                                                                                                          Hannes Petermaier <hannes.petermaier@br-automation.com>
+Active  arm         armv7          am33xx      BuR             tseries             tseries_mmc                           tseries:SERIAL1,CONS_INDEX=1,EMMC_BOOT                                                                                            Hannes Petermaier <hannes.petermaier@br-automation.com>
+Active  arm         armv7          am33xx      BuR             tseries             tseries_nand                          tseries:SERIAL1,CONS_INDEX=1,NAND                                                                                                 Hannes Petermaier <hannes.petermaier@br-automation.com>
+Active  arm         armv7          am33xx      BuR             tseries             tseries_spi                           tseries:SERIAL1,CONS_INDEX=1,SPI_BOOT,EMMC_BOOT                                                                                   Hannes Petermaier <hannes.petermaier@br-automation.com>
+Active  arm         armv7          am33xx      compulab        cm_t335             cm_t335                               -                                                                                                                                 Igor Grinberg <grinberg@compulab.co.il>
+Active  arm         armv7          am33xx      gumstix         pepper              pepper                                -                                                                                                                                 Ash Charles <ash@gumstix.com>
+Active  arm         armv7          am33xx      isee            igep0033            am335x_igep0033                       -                                                                                                                                 Enric Balletbo i Serra <eballetbo@iseebcn.com>
+Active  arm         armv7          am33xx      phytec          pcm051              pcm051_rev1                           pcm051:REV1                                                                                                                       Lars Poeschel <poeschel@lemonage.de>
+Active  arm         armv7          am33xx      phytec          pcm051              pcm051_rev3                           pcm051:REV3                                                                                                                       Lars Poeschel <poeschel@lemonage.de>
+Active  arm         armv7          am33xx      siemens         draco               draco                                 -                                                                                                                                 Roger Meier <r.meier@siemens.com>
+Active  arm         armv7          am33xx      siemens         draco               dxr2                                  -                                                                                                                                 Roger Meier <r.meier@siemens.com>
+Active  arm         armv7          am33xx      siemens         pxm2                pxm2                                  -                                                                                                                                 Roger Meier <r.meier@siemens.com>
+Active  arm         armv7          am33xx      siemens         rut                 rut                                   -                                                                                                                                 Roger Meier <r.meier@siemens.com>
+Active  arm         armv7          am33xx      silica          pengwyn             pengwyn                               -                                                                                                                                 Lothar Felten <lothar.felten@gmail.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_boneblack                      am335x_evm:SERIAL1,CONS_INDEX=1,EMMC_BOOT                                                                                         Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm                            am335x_evm:SERIAL1,CONS_INDEX=1,NAND                                                                                              Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_nor                        am335x_evm:SERIAL1,CONS_INDEX=1,NAND,NOR                                                                                          Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_norboot                    am335x_evm:SERIAL1,CONS_INDEX=1,NOR,NOR_BOOT                                                                                      Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_spiboot                    am335x_evm:SERIAL1,CONS_INDEX=1,SPI_BOOT                                                                                          Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart1                      am335x_evm:SERIAL2,CONS_INDEX=2,NAND                                                                                              Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart2                      am335x_evm:SERIAL3,CONS_INDEX=3,NAND                                                                                              Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart3                      am335x_evm:SERIAL4,CONS_INDEX=4,NAND                                                                                              Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart4                      am335x_evm:SERIAL5,CONS_INDEX=5,NAND                                                                                              Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_uart5                      am335x_evm:SERIAL6,CONS_INDEX=6,NAND                                                                                              Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am335x              am335x_evm_usbspl                     am335x_evm:SERIAL1,CONS_INDEX=1,NAND,SPL_USBETH_SUPPORT                                                                           Tom Rini <trini@ti.com>
+Active  arm         armv7          am33xx      ti              am43xx              am43xx_evm                            am43xx_evm:SERIAL1,CONS_INDEX=1                                                                                                   Lokesh Vutla <lokeshvutla@ti.com>
+Active  arm         armv7          am33xx      ti              ti814x              ti814x_evm                            -                                                                                                                                 Matt Porter <matt.porter@linaro.org>
+Active  arm         armv7          am33xx      ti              ti816x              ti816x_evm                            -                                                                                                                                 -
+Active  arm         armv7          at91        atmel           sama5d3_xplained    sama5d3_xplained_mmc                  sama5d3_xplained:SAMA5D3,SYS_USE_MMC                                                                                              Bo Shen <voice.shen@atmel.com>
+Active  arm         armv7          at91        atmel           sama5d3_xplained    sama5d3_xplained_nandflash            sama5d3_xplained:SAMA5D3,SYS_USE_NANDFLASH                                                                                        Bo Shen <voice.shen@atmel.com>
+Active  arm         armv7          at91        atmel           sama5d3xek          sama5d3xek_mmc                        sama5d3xek:SAMA5D3,SYS_USE_MMC                                                                                                    Bo Shen <voice.shen@atmel.com>
+Active  arm         armv7          at91        atmel           sama5d3xek          sama5d3xek_nandflash                  sama5d3xek:SAMA5D3,SYS_USE_NANDFLASH                                                                                              Bo Shen <voice.shen@atmel.com>
+Active  arm         armv7          at91        atmel           sama5d3xek          sama5d3xek_spiflash                   sama5d3xek:SAMA5D3,SYS_USE_SERIALFLASH                                                                                            Bo Shen <voice.shen@atmel.com>
+Active  arm         armv7          bcm281xx    broadcom        bcm28155_ap         bcm28155_ap                           bcm28155_ap                                                                                                                       Tim Kryger <tim.kryger@linaro.org>
+Active  arm         armv7          exynos      samsung         arndale             arndale                               -                                                                                                                                 Inderpal Singh <inderpal.singh@linaro.org>
+Active  arm         armv7          exynos      samsung         origen              origen                                -                                                                                                                                 Chander Kashyap <k.chander@samsung.com>
+Active  arm         armv7          exynos      samsung         smdk5250            smdk5250                              -                                                                                                                                 Chander Kashyap <k.chander@samsung.com>
+Active  arm         armv7          exynos      samsung         smdk5250            snow                                  -                                                                                                                                 Rajeshwari Shinde <rajeshwari.s@samsung.com>
+Active  arm         armv7          exynos      samsung         smdk5420            smdk5420                              -                                                                                                                                 Rajeshwari Shinde <rajeshwari.s@samsung.com>
+Active  arm         armv7          exynos      samsung         smdkv310            smdkv310                              -                                                                                                                                 Chander Kashyap <k.chander@samsung.com>
+Active  arm         armv7          exynos      samsung         trats               trats                                 -                                                                                                                                 Lukasz Majewski <l.majewski@samsung.com>
+Active  arm         armv7          exynos      samsung         trats2              trats2                                -                                                                                                                                 Piotr Wilczek <p.wilczek@samsung.com>
+Active  arm         armv7          exynos      samsung         universal_c210      s5pc210_universal                     -                                                                                                                                 Przemyslaw Marczak <p.marczak@samsung.com>
+Active  arm         armv7          highbank    -               highbank            highbank                              -                                                                                                                                 Rob Herring <robh@kernel.org>
+Active  arm         armv7          keystone    ti              k2hk_evm            k2hk_evm                              -                                                                                                                                 Vitaly Andrianov <vitalya@ti.com>
+Active  arm         armv7          mx5         denx            m53evk              m53evk                                m53evk:IMX_CONFIG=board/denx/m53evk/imximage.cfg                                                                                  Marek Vasut <marek.vasut@gmail.com>
+Active  arm         armv7          mx5         esg             ima3-mx53           ima3-mx53                             ima3-mx53:IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg                                                                             -
+Active  arm         armv7          mx5         freescale       mx51evk             mx51evk                               mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg                                                                           Stefano Babic <sbabic@denx.de>
+Active  arm         armv7          mx5         freescale       mx53ard             mx53ard                               mx53ard:IMX_CONFIG=board/freescale/mx53ard/imximage_dd3.cfg                                                                       Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx5         freescale       mx53evk             mx53evk                               mx53evk:IMX_CONFIG=board/freescale/mx53evk/imximage.cfg                                                                           Jason Liu <r64343@freescale.com>
+Active  arm         armv7          mx5         freescale       mx53loco            mx53loco                              mx53loco:IMX_CONFIG=board/freescale/mx53loco/imximage.cfg                                                                         Jason Liu <r64343@freescale.com>
+Active  arm         armv7          mx5         freescale       mx53smd             mx53smd                               mx53smd:IMX_CONFIG=board/freescale/mx53smd/imximage.cfg                                                                           Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx5         genesi          mx51_efikamx        mx51_efikamx                          mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg                                -
+Active  arm         armv7          mx5         genesi          mx51_efikamx        mx51_efikasb                          mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg                                -
+Active  arm         armv7          mx5         ttcontrol       vision2             vision2                               vision2:IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg                                                                     Stefano Babic <sbabic@denx.de>
+Active  arm         armv7          mx6         -               udoo                udoo_quad                             udoo:IMX_CONFIG=board/udoo/udoo.cfg,MX6Q,DDR_MB=1024                                                                              Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         -               wandboard           wandboard_dl                          wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024                                                  Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         -               wandboard           wandboard_quad                        wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048                                                  Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         -               wandboard           wandboard_solo                        wandboard:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512                                                     Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         barco           titanium            titanium                              titanium:IMX_CONFIG=board/barco/titanium/imximage.cfg                                                                             Stefan Roese <sr@denx.de>
+Active  arm         armv7          mx6         boundary        nitrogen6x          mx6qsabrelite                         nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,SABRELITE                                         Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6dl                           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024                                                 Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6dl2g                         nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048                                               Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6q                            nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024                                                   Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6q2g                          nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048                                                 Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6s                            nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512                                                    Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         boundary        nitrogen6x          nitrogen6s1g                          nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024                                                 Eric Nelson <eric.nelson@boundarydevices.com>
+Active  arm         armv7          mx6         congatec        cgtqmx6eval         cgtqmx6qeval                          cgtqmx6eval:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q                                                          Leo Sartre <lsartre@adeneo-embedded.com>
+Active  arm         armv7          mx6         embest          mx6boards           marsboard                             embestmx6boards:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,ENV_IS_IN_SPI_FLASH                          Eric Bénard <eric@eukrea.com>
+Active  arm         armv7          mx6         embest          mx6boards           riotboard                             embestmx6boards:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024,ENV_IS_IN_MMC                              Eric Bénard <eric@eukrea.com>
+Active  arm         armv7          mx6         freescale       mx6qarm2            mx6qarm2                              mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg                                                                         Jason Liu <r64343@freescale.com>
+Active  arm         armv7          mx6         freescale       mx6qsabreauto       mx6qsabreauto                         mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,MX6Q                                                          Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         freescale       mx6sabresd          mx6dlsabresd                          mx6sabresd:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL                                                             Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         freescale       mx6sabresd          mx6qsabresd                           mx6sabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q                                                           Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         freescale       mx6slevk            mx6slevk                              mx6slevk:IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL                                                                   Fabio Estevam <fabio.estevam@freescale.com>
+Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanadl                           gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6DL,DDR_MB=512                                                  Tim Harvey <tharvey@gateworks.com>
+Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanadl1g                         gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6DL,DDR_MB=1024                                                 Tim Harvey <tharvey@gateworks.com>
+Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanaq                            gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=512                                                   Tim Harvey <tharvey@gateworks.com>
+Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanaq1g                          gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=1024                                                  Tim Harvey <tharvey@gateworks.com>
+Active  arm         armv7          mx6         gateworks       gw_ventana          gwventanaq1gspi                       gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=1024,SPI_FLASH                                        Tim Harvey <tharvey@gateworks.com>
+Active  arm         armv7          mx6         solidrun        hummingboard        hummingboard_solo                     hummingboard:IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512                                                      Jon Nettleton <jon.nettleton@gmail.com>
+Active  arm         armv7          omap3       -               overo               omap3_overo                           -                                                                                                                                 Steve Sakoman <sakoman@gmail.com>
+Active  arm         armv7          omap3       -               pandora             omap3_pandora                         -                                                                                                                                 Grazvydas Ignotas <notasas@gmail.com>
+Active  arm         armv7          omap3       8dtech          eco5pk              eco5pk                                -                                                                                                                                 Raphael Assenat <raph@8d.com>
+Active  arm         armv7          omap3       comelit         dig297              dig297                                -                                                                                                                                 Luca Ceresoli <luca.ceresoli@comelit.it>
+Active  arm         armv7          omap3       compulab        cm_t35              cm_t35                                -                                                                                                                                 Igor Grinberg <grinberg@compulab.co.il>
+Active  arm         armv7          omap3       corscience      tricorder           tricorder                             -                                                                                                                                 Thomas Weber <weber@corscience.de>
+Active  arm         armv7          omap3       corscience      tricorder           tricorder_flash                       tricorder:FLASHCARD                                                                                                               Thomas Weber <weber@corscience.de>
+Active  arm         armv7          omap3       htkw            mcx                 mcx                                   -                                                                                                                                 Ilya Yanok <yanok@emcraft.com>
+Active  arm         armv7          omap3       isee            igep00x0            igep0020                              omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_ONENAND                                                                          Enric Balletbo i Serra <eballetbo@iseebcn.com>
+Active  arm         armv7          omap3       isee            igep00x0            igep0020_nand                         omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_NAND                                                                             -
+Active  arm         armv7          omap3       isee            igep00x0            igep0030                              omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND                                                                          Enric Balletbo i Serra <eballetbo@iseebcn.com>
+Active  arm         armv7          omap3       isee            igep00x0            igep0030_nand                         omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND                                                                             -
+Active  arm         armv7          omap3       isee            igep00x0            igep0032                              omap3_igep00x0:MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND                                                                          Enric Balletbo i Serra <eballetbo@iseebcn.com>
+Active  arm         armv7          omap3       logicpd         am3517evm           am3517_evm                            -                                                                                                                                 Vaibhav Hiremath <hvaibhav@ti.com>
+Active  arm         armv7          omap3       logicpd         omap3som            omap3_logic                           -                                                                                                                                 Peter Barada <peter.barada@logicpd.com>
+Active  arm         armv7          omap3       logicpd         zoom1               omap3_zoom1                           -                                                                                                                                 Nishanth Menon <nm@ti.com>
+Active  arm         armv7          omap3       matrix_vision   mvblx               omap3_mvblx                           -                                                                                                                                 Michael Jones <michael.jones@matrix-vision.de>
+Active  arm         armv7          omap3       nokia           rx51                nokia_rx51                            -                                                                                                                                 Pali Rohár <pali.rohar@gmail.com>
+Active  arm         armv7          omap3       technexion      tao3530             omap3_ha                              tao3530:SYS_BOARD_OMAP3_HA                                                                                                        Stefan Roese <sr@denx.de>
+Active  arm         armv7          omap3       technexion      tao3530             tao3530                               -                                                                                                                                 Tapani Utriainen <linuxfae@technexion.com>
+Active  arm         armv7          omap3       technexion      twister             twister                               -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         armv7          omap3       teejet          mt_ventoux          mt_ventoux                            -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         armv7          omap3       ti              am3517crane         am3517_crane                          -                                                                                                                                 Nagendra T S  <nagendra@mistralsolutions.com>
+Active  arm         armv7          omap3       ti              beagle              omap3_beagle                          omap3_beagle:NAND                                                                                                                 Tom Rini <trini@ti.com>
+Active  arm         armv7          omap3       ti              evm                 omap3_evm                             -                                                                                                                                 Tom Rini <trini@ti.com>
+Active  arm         armv7          omap3       ti              evm                 omap3_evm_quick_mmc                   -                                                                                                                                 -
+Active  arm         armv7          omap3       ti              evm                 omap3_evm_quick_nand                  -                                                                                                                                 -
+Active  arm         armv7          omap3       ti              sdp3430             omap3_sdp3430                         -                                                                                                                                 Nishanth Menon <nm@ti.com>
+Active  arm         armv7          omap3       timll           devkit8000          devkit8000                            -                                                                                                                                 Thomas Weber <weber@corscience.de>
+Active  arm         armv7          omap4       gumstix         duovero             duovero                               -                                                                                                                                 Ash Charles <ash@gumstix.com>
+Active  arm         armv7          omap4       ti              panda               omap4_panda                           -                                                                                                                                 Sricharan R <r.sricharan@ti.com>
+Active  arm         armv7          omap4       ti              sdp4430             omap4_sdp4430                         -                                                                                                                                 Sricharan R <r.sricharan@ti.com>
+Active  arm         armv7          omap5       compulab        cm_t54              cm_t54                                -                                                                                                                                 Dmitry Lifshitz <lifshitz@compulab.co.il>
+Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm                            dra7xx_evm:CONS_INDEX=1                                                                                                           Lokesh Vutla <lokeshvutla@ti.com>
+Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm_qspiboot                   dra7xx_evm:CONS_INDEX=1,QSPI_BOOT                                                                                                 Lokesh Vutla <lokeshvutla@ti.com>
+Active  arm         armv7          omap5       ti              dra7xx              dra7xx_evm_uart3                      dra7xx_evm:CONS_INDEX=3,SPL_YMODEM_SUPPORT                                                                                        Lokesh Vutla <lokeshvutla@ti.com>
+Active  arm         armv7          omap5       ti              omap5_uevm          omap5_uevm                            -                                                                                                                                 -
+Active  arm         armv7          rmobile     atmark-techno   armadillo-800eva    armadillo-800eva                      -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+Active  arm         armv7          rmobile     kmc             kzm9g               kzm9g                                 -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>:Tetsuyuki Kobayashi <koba@kmckk.co.jp>
+Active  arm         armv7          rmobile     renesas         koelsch             koelsch                               -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+Active  arm         armv7          rmobile     renesas         koelsch             koelsch_nor                           koelsch:NORFLASH                                                                                                                  Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+Active  arm         armv7          rmobile     renesas         lager               lager                                 -                                                                                                                                 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+Active  arm         armv7          rmobile     renesas         lager               lager_nor                             lager:NORFLASH                                                                                                                    Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
+Active  arm         armv7          s5pc1xx     samsung         goni                s5p_goni                              -                                                                                                                                 Przemyslaw Marczak <p.marczak@samsung.com>
+Active  arm         armv7          s5pc1xx     samsung         smdkc100            smdkc100                              -                                                                                                                                 Minkyu Kang <mk7.kang@samsung.com>
+Active  arm         armv7          socfpga     altera          socfpga             socfpga_cyclone5                      -                                                                                                                                 -
+Active  arm         armv7          sunxi       -               sunxi               Cubietruck                            sun7i:CUBIETRUCK,SPL,SUNXI_GMAC,RGMII                                                                                             -
+Active  arm         armv7          sunxi       -               sunxi               Cubietruck_FEL                        sun7i:CUBIETRUCK,SPL_FEL,SUNXI_GMAC,RGMII                                                                                         -
+Active  arm         armv7          u8500       st-ericsson     snowball            snowball                              -                                                                                                                                 Mathieu Poirier <mathieu.poirier@linaro.org>
+Active  arm         armv7          u8500       st-ericsson     u8500               u8500_href                            -                                                                                                                                 -
+Active  arm         armv7          vf610       freescale       vf610twr            vf610twr                              vf610twr:IMX_CONFIG=board/freescale/vf610twr/imximage.cfg                                                                         Alison Wang <b18965@freescale.com>
+Active  arm         armv7          zynq        xilinx          zynq                zynq_microzed                         -                                                                                                                                 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+Active  arm         armv7          zynq        xilinx          zynq                zynq_zc70x                            -                                                                                                                                 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+Active  arm         armv7          zynq        xilinx          zynq                zynq_zc770_xm010                      zynq_zc770:ZC770_XM010                                                                                                            Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+Active  arm         armv7          zynq        xilinx          zynq                zynq_zc770_xm012                      zynq_zc770:ZC770_XM012                                                                                                            Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+Active  arm         armv7          zynq        xilinx          zynq                zynq_zc770_xm013                      zynq_zc770:ZC770_XM013                                                                                                            Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+Active  arm         armv7          zynq        xilinx          zynq                zynq_zed                              -                                                                                                                                 Michal Simek <monstr@monstr.eu>:Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
+Active  arm         armv7:arm720t  tegra114    nvidia          dalmore             dalmore                               -                                                                                                                                 Tom Warren <twarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra124    nvidia          jetson-tk1          jetson-tk1                            jetson-tk1:BOARD_JETSON_TK1=                                                                                                      Stephen Warren <swarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra124    nvidia          venice2             venice2                               -                                                                                                                                 Tom Warren <twarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     avionic-design  medcom-wide         medcom-wide                           -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
+Active  arm         armv7:arm720t  tegra20     avionic-design  plutux              plutux                                -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
+Active  arm         armv7:arm720t  tegra20     avionic-design  tec                 tec                                   -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
+Active  arm         armv7:arm720t  tegra20     compal          paz00               paz00                                 -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     compulab        trimslice           trimslice                             -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     nvidia          harmony             harmony                               -                                                                                                                                 Tom Warren <twarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     nvidia          seaboard            seaboard                              -                                                                                                                                 Tom Warren <twarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     nvidia          ventana             ventana                               -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     nvidia          whistler            whistler                              -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra20     toradex         colibri_t20_iris    colibri_t20_iris                      -                                                                                                                                 Lucas Stach <dev@lynxeye.de>
+Active  arm         armv7:arm720t  tegra30     avionic-design  tec-ng              tec-ng                                -                                                                                                                                 Alban Bedel <alban.bedel@avionic-design.de>
+Active  arm         armv7:arm720t  tegra30     nvidia          beaver              beaver                                -                                                                                                                                 Tom Warren <twarren@nvidia.com>:Stephen Warren <swarren@nvidia.com>
+Active  arm         armv7:arm720t  tegra30     nvidia          cardhu              cardhu                                -                                                                                                                                 Tom Warren <twarren@nvidia.com>
+Active  arm         pxa            -           -               -                   balloon3                              -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           -               -                   h2200                                 -                                                                                                                                 Lukasz Dalek <luk0104@gmail.com>
+Active  arm         pxa            -           -               -                   palmld                                -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           -               -                   palmtc                                -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           -               -                   palmtreo680                           -                                                                                                                                 Mike Dunn <mikedunn@newsguy.com>
+Active  arm         pxa            -           -               -                   pxa255_idp                            -                                                                                                                                 Cliff Brake <cliff.brake@gmail.com>
+Active  arm         pxa            -           -               -                   trizepsiv                             -                                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         pxa            -           -               -                   xaeniax                               -                                                                                                                                 -
+Active  arm         pxa            -           -               -                   zipitz2                               -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           -               trizepsiv           polaris                               trizepsiv:POLARIS                                                                                                                 Stefano Babic <sbabic@denx.de>
+Active  arm         pxa            -           -               vpac270             vpac270_nor_128                       vpac270:NOR,RAM_128M                                                                                                              Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           -               vpac270             vpac270_nor_256                       vpac270:NOR,RAM_256M                                                                                                              Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           -               vpac270             vpac270_ond_256                       vpac270:ONENAND,RAM_256M                                                                                                          Marek Vasut <marek.vasut@gmail.com>
+Active  arm         pxa            -           icpdas          lp8x4x              lp8x4x                                -                                                                                                                                 Sergey Yanovich <ynvich@gmail.com>
+Active  arm         pxa            -           toradex         -                   colibri_pxa270                        -                                                                                                                                 Marek Vasut <marek.vasut@gmail.com>
+Active  arm         sa1100         -           -               -                   jornada                               -                                                                                                                                 Kristoffer Ericson <kristoffer.ericson@gmail.com>
+Active  avr32       at32ap         at32ap700x  atmel           -                   atngw100                              -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Active  avr32       at32ap         at32ap700x  atmel           -                   atngw100mkii                          -                                                                                                                                 Andreas Bießmann <andreas.devel@googlemail.com>
+Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1002                             -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1003                             -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1004                             -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Active  avr32       at32ap         at32ap700x  atmel           atstk1000           atstk1006                             -                                                                                                                                 Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
+Active  avr32       at32ap         at32ap700x  earthlcd        -                   favr-32-ezkit                         -                                                                                                                                 Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
+Active  avr32       at32ap         at32ap700x  in-circuit      -                   grasshopper                           -                                                                                                                                 Andreas Bießmann <andreas.devel@googlemail.com>
+Active  avr32       at32ap         at32ap700x  mimc            -                   mimc200                               -                                                                                                                                 Mark Jackson <mpfj@mimc.co.uk>
+Active  avr32       at32ap         at32ap700x  miromico        -                   hammerhead                            -                                                                                                                                 Julien May <julien.may@miromico.ch>:Alex Raimondi <alex.raimondi@miromico.ch>
+Active  blackfin    blackfin       -           -               -                   bct-brettl2                           -                                                                                                                                 Peter Meerwald <devel@bct-electronic.com>
+Active  blackfin    blackfin       -           -               -                   bf506f-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf518f-ezbrd                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf525-ucr2                            -                                                                                                                                 Haitao Zhang <hzhang@ucrobotics.com>:Chong Huang <chuang@ucrobotics.com>
+Active  blackfin    blackfin       -           -               -                   bf526-ezbrd                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf527-ad7160-eval                     -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf527-ezkit                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf527-sdp                             -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf533-ezkit                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf533-stamp                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf537-minotaur                        -                                                                                                                                 Martin Strubel <strubel@section5.ch>
+Active  blackfin    blackfin       -           -               -                   bf537-pnav                            -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf537-srv1                            -                                                                                                                                 Martin Strubel <strubel@section5.ch>
+Active  blackfin    blackfin       -           -               -                   bf537-stamp                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf538f-ezkit                          -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf548-ezkit                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf561-acvilon                         -                                                                                                                                 Anton Shurpin <shurpin.aa@niistt.ru>:Valentin Yakovenkov <yakovenkov@niistt.ru>
+Active  blackfin    blackfin       -           -               -                   bf561-ezkit                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   bf609-ezkit                           -                                                                                                                                 Sonic Zhang <sonic.adi@gmail.com>
+Active  blackfin    blackfin       -           -               -                   blackstamp                            -                                                                                                                                 Wojtek Skulski <skulski@pas.rochester.edu>:Wojtek Skulski <info@skutek.com>:Benjamin Matthews <mben12@gmail.com>
+Active  blackfin    blackfin       -           -               -                   blackvme                              -                                                                                                                                 Wojtek Skulski <skulski@pas.rochester.edu>:Wojtek Skulski <info@skutek.com>:Benjamin Matthews <mben12@gmail.com>
+Active  blackfin    blackfin       -           -               -                   br4                                   -                                                                                                                                 Dimitar Penev <dpn@switchfin.org>
+Active  blackfin    blackfin       -           -               -                   dnp5370                               -                                                                                                                                 M.Hasewinkel (MHA) <info@ssv-embedded.de>
+Active  blackfin    blackfin       -           -               -                   ibf-dsp561                            -                                                                                                                                 I-SYST Micromodule <support@i-syst.com>
+Active  blackfin    blackfin       -           -               -                   ip04                                  -                                                                                                                                 Brent Kandetzki <brentk@teleco.com>
+Active  blackfin    blackfin       -           -               -                   pr1                                   -                                                                                                                                 Dimitar Penev <dpn@switchfin.org>
+Active  blackfin    blackfin       -           -               bf527-ezkit         bf527-ezkit-v2                        bf527-ezkit:BF527_EZKIT_REV_2_1                                                                                                   Sonic Zhang <sonic.adi@gmail.com>
+Active  m68k        mcf5227x       -           freescale       m52277evb           M52277EVB                             M52277EVB:SYS_SPANSION_BOOT,SYS_TEXT_BASE=0x00000000                                                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf5227x       -           freescale       m52277evb           M52277EVB_stmicro                     M52277EVB:CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x43E00000                                                                        TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf523x        -           freescale       m5235evb            M5235EVB                              M5235EVB:SYS_TEXT_BASE=0xFFE00000                                                                                                 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf523x        -           freescale       m5235evb            M5235EVB_Flash32                      M5235EVB:NORFLASH_PS32BIT,SYS_TEXT_BASE=0xFFC00000                                                                                TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf52x2        -           -               cobra5272           cobra5272                             -                                                                                                                                 -
+Active  m68k        mcf52x2        -           BuS             eb_cpu5282          eb_cpu5282                            eb_cpu5282:SYS_TEXT_BASE=0xFF000000,SYS_MONITOR_BASE=0xFF000400                                                                   Jens Scharsig <esw@bus-elektronik.de>
+Active  m68k        mcf52x2        -           BuS             eb_cpu5282          eb_cpu5282_internal                   eb_cpu5282:SYS_TEXT_BASE=0xF0000000,SYS_MONITOR_BASE=0xF0000418                                                                   Jens Scharsig <esw@bus-elektronik.de>
+Active  m68k        mcf52x2        -           esd             tasreg              TASREG                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  m68k        mcf52x2        -           freescale       m5208evbe           M5208EVBE                             -                                                                                                                                 -
+Active  m68k        mcf52x2        -           freescale       m5249evb            M5249EVB                              -                                                                                                                                 -
+Active  m68k        mcf52x2        -           freescale       m5253demo           M5253DEMO                             -                                                                                                                                 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf52x2        -           freescale       m5253evbe           M5253EVBE                             -                                                                                                                                 Hayden Fraser <Hayden.Fraser@freescale.com>
+Active  m68k        mcf52x2        -           freescale       m5272c3             M5272C3                               -                                                                                                                                 -
+Active  m68k        mcf52x2        -           freescale       m5275evb            M5275EVB                              -                                                                                                                                 -
+Active  m68k        mcf52x2        -           freescale       m5282evb            M5282EVB                              -                                                                                                                                 -
+Active  m68k        mcf532x        -           astro           mcf5373l            astro_mcf5373l                        -                                                                                                                                 Wolfgang Wegner <w.wegner@astro-kom.de>
+Active  m68k        mcf532x        -           freescale       m53017evb           M53017EVB                             -                                                                                                                                 TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf532x        -           freescale       m5329evb            M5329AFEE                             M5329EVB:NANDFLASH_SIZE=0                                                                                                         TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf532x        -           freescale       m5329evb            M5329BFEE                             M5329EVB:NANDFLASH_SIZE=16                                                                                                        TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf532x        -           freescale       m5373evb            M5373EVB                              M5373EVB:NANDFLASH_SIZE=16                                                                                                        TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR                             M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                               -
+Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_nand_mii                    M54418TWR:SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000                                                        -
+Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_nand_rmii                   M54418TWR:SYS_NAND_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                                        -
+Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_nand_rmii_lowfreq           M54418TWR:SYS_NAND_BOOT,LOW_MCFCLK,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                             -
+Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_serial_mii                  M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=25000000                                               -
+Active  m68k        mcf5445x       -           freescale       m54418twr           M54418TWR_serial_rmii                 M54418TWR:CF_SBF,SYS_SERIAL_BOOT,SYS_TEXT_BASE=0x47E00000,SYS_INPUT_CLKSRC=50000000                                               -
+Active  m68k        mcf5445x       -           freescale       m54451evb           M54451EVB                             M54451EVB:SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=24000000                                                                      -
+Active  m68k        mcf5445x       -           freescale       m54451evb           M54451EVB_stmicro                     M54451EVB:CF_SBF,SYS_STMICRO_BOOT,SYS_TEXT_BASE=0x47e00000,SYS_INPUT_CLKSRC=24000000                                              -
+Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB                             M54455EVB:SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=33333333                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_a66                         M54455EVB:SYS_ATMEL_BOOT,SYS_TEXT_BASE=0x04000000,SYS_INPUT_CLKSRC=66666666                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_i66                         M54455EVB:SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=66666666                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_intel                       M54455EVB:SYS_INTEL_BOOT,SYS_TEXT_BASE=0x00000000,SYS_INPUT_CLKSRC=33333333                                                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf5445x       -           freescale       m54455evb           M54455EVB_stm33                       M54455EVB:SYS_STMICRO_BOOT,CF_SBF,SYS_TEXT_BASE=0x4FE00000,SYS_INPUT_CLKSRC=33333333                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475AFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475BFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16                                                            TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475CFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL                                      TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475DFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL                                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475EFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL                                                    TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475FFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m547xevb            M5475GFE                              M5475EVB:SYS_BUSCLK=133333333,SYS_BOOTSZ=4,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485AFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485BFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16                                                            TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485CFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO,SYS_USBCTRL                                      TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485DFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_USBCTRL                                                              TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485EFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_VIDEO,SYS_USBCTRL                                                    TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485FFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=32,SYS_VIDEO,SYS_USBCTRL,SYS_DRAMSZ1=64                       TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485GFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=4,SYS_DRAMSZ=64                                                                          TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  m68k        mcf547x_8x     -           freescale       m548xevb            M5485HFE                              M5485EVB:SYS_BUSCLK=100000000,SYS_BOOTSZ=2,SYS_DRAMSZ=64,SYS_NOR1SZ=16,SYS_VIDEO                                                  TsiChung Liew <Tsi-Chung.Liew@freescale.com>
+Active  microblaze  microblaze     -           xilinx          microblaze-generic  microblaze-generic                    -                                                                                                                                 Michal Simek <monstr@monstr.eu>
+Active  mips        mips32         -           -               qemu-mips           qemu_mips                             qemu-mips:SYS_BIG_ENDIAN                                                                                                          Vlad Lungu <vlad.lungu@windriver.com>
+Active  mips        mips32         -           -               qemu-mips           qemu_mipsel                           qemu-mips:SYS_LITTLE_ENDIAN                                                                                                       -
+Active  mips        mips32         -           imgtec          malta               malta                                 malta:SYS_BIG_ENDIAN                                                                                                              Paul Burton <paul.burton@imgtec.com>
+Active  mips        mips32         -           imgtec          malta               maltael                               malta:SYS_LITTLE_ENDIAN                                                                                                           Paul Burton <paul.burton@imgtec.com>
+Active  mips        mips32         -           micronas        vct                 vct_platinum                          vct:VCT_PLATINUM                                                                                                                  -
+Active  mips        mips32         -           micronas        vct                 vct_platinum_onenand                  vct:VCT_PLATINUM,VCT_ONENAND                                                                                                      -
+Active  mips        mips32         -           micronas        vct                 vct_platinum_onenand_small            vct:VCT_PLATINUM,VCT_ONENAND,VCT_SMALL_IMAGE                                                                                      -
+Active  mips        mips32         -           micronas        vct                 vct_platinum_small                    vct:VCT_PLATINUM,VCT_SMALL_IMAGE                                                                                                  -
+Active  mips        mips32         -           micronas        vct                 vct_platinumavc                       vct:VCT_PLATINUMAVC                                                                                                               -
+Active  mips        mips32         -           micronas        vct                 vct_platinumavc_onenand               vct:VCT_PLATINUMAVC,VCT_ONENAND                                                                                                   -
+Active  mips        mips32         -           micronas        vct                 vct_platinumavc_onenand_small         vct:VCT_PLATINUMAVC,VCT_ONENAND,VCT_SMALL_IMAGE                                                                                   -
+Active  mips        mips32         -           micronas        vct                 vct_platinumavc_small                 vct:VCT_PLATINUMAVC,VCT_SMALL_IMAGE                                                                                               -
+Active  mips        mips32         -           micronas        vct                 vct_premium                           vct:VCT_PREMIUM                                                                                                                   -
+Active  mips        mips32         -           micronas        vct                 vct_premium_onenand                   vct:VCT_PREMIUM,VCT_ONENAND                                                                                                       -
+Active  mips        mips32         -           micronas        vct                 vct_premium_onenand_small             vct:VCT_PREMIUM,VCT_ONENAND,VCT_SMALL_IMAGE                                                                                       -
+Active  mips        mips32         -           micronas        vct                 vct_premium_small                     vct:VCT_PREMIUM,VCT_SMALL_IMAGE                                                                                                   -
+Active  mips        mips32         au1x00      -               dbau1x00            dbau1000                              dbau1x00:DBAU1000                                                                                                                 Thomas Lange <thomas@corelatus.se>
+Active  mips        mips32         au1x00      -               dbau1x00            dbau1100                              dbau1x00:DBAU1100                                                                                                                 Thomas Lange <thomas@corelatus.se>
+Active  mips        mips32         au1x00      -               dbau1x00            dbau1500                              dbau1x00:DBAU1500                                                                                                                 Thomas Lange <thomas@corelatus.se>
+Active  mips        mips32         au1x00      -               dbau1x00            dbau1550                              dbau1x00:DBAU1550                                                                                                                 Thomas Lange <thomas@corelatus.se>
+Active  mips        mips32         au1x00      -               dbau1x00            dbau1550_el                           dbau1x00:DBAU1550,SYS_LITTLE_ENDIAN                                                                                               Thomas Lange <thomas@corelatus.se>
+Active  mips        mips32         au1x00      -               pb1x00              pb1000                                pb1x00:PB1000                                                                                                                     -
+Active  mips        mips64         -           -               qemu-mips           qemu_mips64                           qemu-mips64:SYS_BIG_ENDIAN                                                                                                        -
+Active  mips        mips64         -           -               qemu-mips           qemu_mips64el                         qemu-mips64:SYS_LITTLE_ENDIAN                                                                                                     -
+Active  nds32       n1213          ag101       AndesTech       adp-ag101           adp-ag101                             -                                                                                                                                 Andes <uboot@andestech.com>
+Active  nds32       n1213          ag101       AndesTech       adp-ag101p          adp-ag101p                            -                                                                                                                                 Andes <uboot@andestech.com>
+Active  nds32       n1213          ag102       AndesTech       adp-ag102           adp-ag102                             -                                                                                                                                 Andes <uboot@andestech.com>
+Active  nios2       nios2          -           altera          nios2-generic       nios2-generic                         -                                                                                                                                 Scott McNutt <smcnutt@psyent.com>
+Active  nios2       nios2          -           psyent          pci5441             PCI5441                               -                                                                                                                                 Scott McNutt <smcnutt@psyent.com>
+Active  nios2       nios2          -           psyent          pk1c20              PK1C20                                -                                                                                                                                 Scott McNutt <smcnutt@psyent.com>
+Active  openrisc    or1200         -           openrisc        openrisc-generic    openrisc-generic                      -                                                                                                                                 Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
+Active  powerpc     74xx_7xx       -           -               -                   ppmc7xx                               -                                                                                                                                 -
+Active  powerpc     74xx_7xx       -           -               evb64260            P3G4                                  -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     74xx_7xx       -           eltec           elppc               ELPPC                                 -                                                                                                                                 -
+Active  powerpc     74xx_7xx       -           esd             cpci750             CPCI750                               -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     74xx_7xx       -           freescale       mpc7448hpc2         mpc7448hpc2                           -                                                                                                                                 Roy Zang <tie-fei.zang@freescale.com>
+Active  powerpc     74xx_7xx       -           Marvell         db64360             DB64360                               -                                                                                                                                 -
+Active  powerpc     74xx_7xx       -           Marvell         db64460             DB64460                               -                                                                                                                                 -
+Active  powerpc     74xx_7xx       -           prodrive        p3mx                p3m7448                               p3mx:P3M7448                                                                                                                      Stefan Roese <sr@denx.de>
+Active  powerpc     74xx_7xx       -           prodrive        p3mx                p3m750                                p3mx:P3M750                                                                                                                       Stefan Roese <sr@denx.de>
+Active  powerpc     mpc512x        -           -               -                   pdm360ng                              -                                                                                                                                 Michael Weiss <michael.weiss@ifm.com>
+Active  powerpc     mpc512x        -           davedenx        -                   aria                                  -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc512x        -           esd             -                   mecp5123                              -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     mpc512x        -           freescale       mpc5121ads          mpc5121ads                            -                                                                                                                                 -
+Active  powerpc     mpc512x        -           freescale       mpc5121ads          mpc5121ads_rev2                       mpc5121ads:MPC5121ADS_REV2                                                                                                        -
+Active  powerpc     mpc512x        -           ifm             ac14xx              ac14xx                                -                                                                                                                                 Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xx         -           -               cmi                 cmi_mpc5xx                            -                                                                                                                                 -
+Active  powerpc     mpc5xx         -           mpl             pati                PATI                                  -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               -                   canmb                                 -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               -                   cm5200                                -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               -                   inka4x0                               -                                                                                                                                 Detlev Zundel <dzu@denx.de>
+Active  powerpc     mpc5xxx        -           -               -                   ipek01                                -                                                                                                                                 Wolfgang Grandegger <wg@denx.de>
+Active  powerpc     mpc5xxx        -           -               -                   jupiter                               -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc5xxx        -           -               -                   motionpro                             -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               -                   munices                               -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               -                   v38b                                  -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               a3m071              a3m071                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     mpc5xxx        -           -               a3m071              a4m2k                                 a3m071:A4M2K                                                                                                                      Stefan Roese <sr@denx.de>
+Active  powerpc     mpc5xxx        -           -               a4m072              a4m072                                -                                                                                                                                 Sergei Poselenov <sposelenov@emcraft.com>
+Active  powerpc     mpc5xxx        -           -               bc3450              BC3450                                -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               galaxy5200          galaxy5200                            galaxy5200:galaxy5200                                                                                                             Eric Millbrandt <emillbrandt@dekaresearch.com>
+Active  powerpc     mpc5xxx        -           -               galaxy5200          galaxy5200_LOWBOOT                    galaxy5200:galaxy5200_LOWBOOT                                                                                                     Eric Millbrandt <emillbrandt@dekaresearch.com>
+Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200                          IceCube                                                                                                                           Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_DDR                      IceCube:MPC5200_DDR                                                                                                               -
+Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_DDR_LOWBOOT              IceCube:SYS_TEXT_BASE=0xFF800000,MPC5200_DDR                                                                                      -
+Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_DDR_LOWBOOT08            IceCube:SYS_TEXT_BASE=0xFF800000,MPC5200_DDR                                                                                      -
+Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_LOWBOOT                  IceCube:SYS_TEXT_BASE=0xFF000000                                                                                                  -
+Active  powerpc     mpc5xxx        -           -               icecube             icecube_5200_LOWBOOT08                IceCube:SYS_TEXT_BASE=0xFF800000                                                                                                  -
+Active  powerpc     mpc5xxx        -           -               icecube             Lite5200                              IceCube                                                                                                                           -
+Active  powerpc     mpc5xxx        -           -               icecube             Lite5200_LOWBOOT                      IceCube:SYS_TEXT_BASE=0xFF000000                                                                                                  -
+Active  powerpc     mpc5xxx        -           -               icecube             Lite5200_LOWBOOT08                    IceCube:SYS_TEXT_BASE=0xFF800000                                                                                                  -
+Active  powerpc     mpc5xxx        -           -               icecube             lite5200b                             IceCube:MPC5200_DDR,LITE5200B                                                                                                     -
+Active  powerpc     mpc5xxx        -           -               icecube             lite5200b_LOWBOOT                     IceCube:MPC5200_DDR,LITE5200B,SYS_TEXT_BASE=0xFF000000                                                                            -
+Active  powerpc     mpc5xxx        -           -               icecube             lite5200b_PM                          IceCube:MPC5200_DDR,LITE5200B,LITE5200B_PM                                                                                        -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200                                -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12                          mcc200:CONSOLE_COM12                                                                                                              -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12_highboot                 mcc200:CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000                                                                                     -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12_highboot_SDRAM           mcc200:CONSOLE_COM12,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM                                                                        -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_COM12_SDRAM                    mcc200:CONSOLE_COM12,MCC200_SDRAM                                                                                                 -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_highboot                       mcc200:SYS_TEXT_BASE=0xFFF00000                                                                                                   -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_highboot_SDRAM                 mcc200:SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM                                                                                      -
+Active  powerpc     mpc5xxx        -           -               mcc200              mcc200_SDRAM                          mcc200:MCC200_SDRAM                                                                                                               -
+Active  powerpc     mpc5xxx        -           -               mcc200              prs200                                mcc200:PRS200,MCC200_SDRAM                                                                                                        -
+Active  powerpc     mpc5xxx        -           -               mcc200              prs200_DDR                            mcc200:PRS200                                                                                                                     -
+Active  powerpc     mpc5xxx        -           -               mcc200              prs200_highboot                       mcc200:PRS200,SYS_TEXT_BASE=0xFFF00000,MCC200_SDRAM                                                                               -
+Active  powerpc     mpc5xxx        -           -               mcc200              prs200_highboot_DDR                   mcc200:PRS200,SYS_TEXT_BASE=0xFFF00000                                                                                            -
+Active  powerpc     mpc5xxx        -           -               pm520               PM520                                 -                                                                                                                                 Josef Wagner <Wagner@Microsys.de>
+Active  powerpc     mpc5xxx        -           -               pm520               PM520_DDR                             PM520:MPC5200_DDR                                                                                                                 Josef Wagner <Wagner@Microsys.de>
+Active  powerpc     mpc5xxx        -           -               pm520               PM520_ROMBOOT                         PM520:BOOT_ROM                                                                                                                    Josef Wagner <Wagner@Microsys.de>
+Active  powerpc     mpc5xxx        -           -               pm520               PM520_ROMBOOT_DDR                     PM520:MPC5200_DDR,BOOT_ROM                                                                                                        Josef Wagner <Wagner@Microsys.de>
+Active  powerpc     mpc5xxx        -           -               total5200           Total5200                             Total5200:TOTAL5200_REV=1                                                                                                         -
+Active  powerpc     mpc5xxx        -           -               total5200           Total5200_lowboot                     Total5200:TOTAL5200_REV=1,SYS_TEXT_BASE=0xFE000000                                                                                -
+Active  powerpc     mpc5xxx        -           -               total5200           Total5200_Rev2                        Total5200:TOTAL5200_REV=2                                                                                                         -
+Active  powerpc     mpc5xxx        -           -               total5200           Total5200_Rev2_lowboot                Total5200:TOTAL5200_REV=2,SYS_TEXT_BASE=0xFE000000                                                                                -
+Active  powerpc     mpc5xxx        -           emk             top5200             EVAL5200                              TOP5200:EVAL5200                                                                                                                  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+Active  powerpc     mpc5xxx        -           emk             top5200             MINI5200                              TOP5200:MINI5200                                                                                                                  Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+Active  powerpc     mpc5xxx        -           emk             top5200             TOP5200                               TOP5200:TOP5200                                                                                                                   Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+Active  powerpc     mpc5xxx        -           esd             -                   cpci5200                              -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     mpc5xxx        -           esd             -                   mecp5200                              -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     mpc5xxx        -           esd             -                   pf5200                                -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2D                                   o2d                                                                                                                               Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2D300                                o2d300                                                                                                                            Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2DNT2                                o2dnt2                                                                                                                            Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2DNT2_RAMBOOT                        o2dnt2:SYS_TEXT_BASE=0x00100000                                                                                                   Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2I                                   o2i                                                                                                                               Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT                                 o2mnt                                                                                                                             Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT_O2M110                          o2mnt:IFM_SENSOR_TYPE="O2M110"                                                                                                    Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT_O2M112                          o2mnt:IFM_SENSOR_TYPE="O2M112"                                                                                                    Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O2MNT_O2M113                          o2mnt:IFM_SENSOR_TYPE="O2M113"                                                                                                    Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           ifm             o2dnt2              O3DNT                                 o3dnt                                                                                                                             Anatolij Gustschin <agust@denx.de>
+Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc                             -                                                                                                                                 Werner Pfister <Pfister_Werner@intercontrol.de>
+Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc_RAMBOOT                     digsy_mtc:SYS_TEXT_BASE=0x00100000                                                                                                Werner Pfister <Pfister_Werner@intercontrol.de>
+Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc_rev5                        digsy_mtc:DIGSY_REV5                                                                                                              Werner Pfister <Pfister_Werner@intercontrol.de>
+Active  powerpc     mpc5xxx        -           intercontrol    digsy_mtc           digsy_mtc_rev5_RAMBOOT                digsy_mtc:SYS_TEXT_BASE=0x00100000,DIGSY_REV5                                                                                     Werner Pfister <Pfister_Werner@intercontrol.de>
+Active  powerpc     mpc5xxx        -           manroland       -                   hmi1001                               -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           manroland       -                   mucmc52                               -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc5xxx        -           manroland       -                   uc101                                 -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc5xxx        -           phytec          pcm030              pcm030                                -                                                                                                                                 Jon Smirl <jonsmirl@gmail.com>
+Active  powerpc     mpc5xxx        -           phytec          pcm030              pcm030_LOWBOOT                        pcm030:SYS_TEXT_BASE=0xFF000000                                                                                                   Jon Smirl <jonsmirl@gmail.com>
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             aev                                   -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             cam5200                               TQM5200:CAM5200,TQM5200S,TQM5200_B                                                                                                -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             cam5200_niosflash                     TQM5200:CAM5200,TQM5200S,TQM5200_B,CAM5200_NIOSFLASH                                                                              -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             charon                                -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             fo300                                 TQM5200:FO300                                                                                                                     -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             MiniFAP                               TQM5200:MINIFAP                                                                                                                   -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TB5200                                -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TB5200_B                              TB5200:TQM5200_B                                                                                                                  -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200                               -                                                                                                                                 -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200_B                             TQM5200:TQM5200_B                                                                                                                 -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200_B_HIGHBOOT                    TQM5200:TQM5200_B,SYS_TEXT_BASE=0xFFF00000                                                                                        -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200_STK100                        TQM5200:STK52XX_REV100                                                                                                            -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200S                              TQM5200:TQM5200_B,TQM5200S                                                                                                        -
+Active  powerpc     mpc5xxx        -           tqc             tqm5200             TQM5200S_HIGHBOOT                     TQM5200:TQM5200_B,TQM5200S,SYS_TEXT_BASE=0xFFF00000                                                                               -
+Active  powerpc     mpc824x        -           -               -                   utx8245                               -                                                                                                                                 Greg Allen <gallen@arlut.utexas.edu>
+Active  powerpc     mpc824x        -           -               a3000               A3000                                 -                                                                                                                                 -
+Active  powerpc     mpc824x        -           -               cpc45               CPC45                                 -                                                                                                                                 Josef Wagner <Wagner@Microsys.de>
+Active  powerpc     mpc824x        -           -               cpc45               CPC45_ROMBOOT                         CPC45:BOOT_ROM                                                                                                                    Josef Wagner <Wagner@Microsys.de>
+Active  powerpc     mpc824x        -           -               cu824               CU824                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc824x        -           -               eXalion             eXalion                               -                                                                                                                                 Torsten Demke <torsten.demke@fci.com>
+Active  powerpc     mpc824x        -           -               mvblue              MVBLUE                                -                                                                                                                                 -
+Active  powerpc     mpc824x        -           -               sandpoint           Sandpoint8240                         -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               -                   atc                                   -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               -                   ep8260                                -                                                                                                                                 Frank Panno <fpanno@delphintech.com>
+Active  powerpc     mpc8260        -           -               -                   ep82xxm                               -                                                                                                                                 -
+Active  powerpc     mpc8260        -           -               -                   gw8260                                -                                                                                                                                 Oliver Brown <obrown@adventnetworks.com>
+Active  powerpc     mpc8260        -           -               -                   hymod                                 -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
+Active  powerpc     mpc8260        -           -               -                   sacsng                                -                                                                                                                                 Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com>
+Active  powerpc     mpc8260        -           -               cogent              cogent_mpc8260                        -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
+Active  powerpc     mpc8260        -           -               cpu86               CPU86                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               cpu86               CPU86_ROMBOOT                         CPU86:BOOT_ROM                                                                                                                    Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               cpu87               CPU87                                 -                                                                                                                                 -
+Active  powerpc     mpc8260        -           -               cpu87               CPU87_ROMBOOT                         CPU87:BOOT_ROM                                                                                                                    -
+Active  powerpc     mpc8260        -           -               ep8248              ep8248                                -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Active  powerpc     mpc8260        -           -               iphase4539          IPHASE4539                            -                                                                                                                                 Wolfgang Grandegger <wg@denx.de>
+Active  powerpc     mpc8260        -           -               muas3001            muas3001                              -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc8260        -           -               muas3001            muas3001_dev                          muas3001:MUAS_DEV_BOARD                                                                                                           Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM825                                 PM826:PCI,SYS_TEXT_BASE=0xFF000000                                                                                                Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM825_BIGFLASH                        PM826:PCI,FLASH_32MB,SYS_TEXT_BASE=0x40000000                                                                                     Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM825_ROMBOOT                         PM826:PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                       Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM825_ROMBOOT_BIGFLASH                PM826:PCI,BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000                                                                            Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM826                                 PM826:SYS_TEXT_BASE=0xFF000000                                                                                                    Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM826_BIGFLASH                        PM826:FLASH_32MB,SYS_TEXT_BASE=0x40000000                                                                                         Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM826_ROMBOOT                         PM826:BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                           Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm826               PM826_ROMBOOT_BIGFLASH                PM826:BOOT_ROM,FLASH_32MB,SYS_TEXT_BASE=0xFF800000                                                                                Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           -               pm828               PM828                                 -                                                                                                                                 -
+Active  powerpc     mpc8260        -           -               pm828               PM828_PCI                             PM828:PCI                                                                                                                         -
+Active  powerpc     mpc8260        -           -               pm828               PM828_ROMBOOT                         PM828:BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                           -
+Active  powerpc     mpc8260        -           -               pm828               PM828_ROMBOOT_PCI                     PM828:PCI,BOOT_ROM,SYS_TEXT_BASE=0xFF800000                                                                                       -
+Active  powerpc     mpc8260        -           freescale       mpc8266ads          MPC8266ADS                            -                                                                                                                                 Rune Torgersen <runet@innovsys.com>
+Active  powerpc     mpc8260        -           funkwerk        vovpn-gw            VoVPN-GW_66MHz                        VoVPN-GW:CLKIN_66MHz                                                                                                              -
+Active  powerpc     mpc8260        -           ids             ids8247             IDS8247                               -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc8260        -           keymile         km82xx              mgcoge                                km82xx:MGCOGE                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc8260        -           keymile         km82xx              mgcoge3ne                             km82xx:MGCOGE3NE                                                                                                                  Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8255_AA                            TQM8260:MPC8255,300MHz                                                                                                            Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AA                            TQM8260:MPC8260,200MHz                                                                                                            Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AB                            TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x                                                                                       Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AC                            TQM8260:MPC8260,200MHz,L2_CACHE,BUSMODE_60x                                                                                       Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AD                            TQM8260:MPC8260,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AE                            TQM8260:MPC8260,266MHz                                                                                                            Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AF                            TQM8260:MPC8260,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AG                            TQM8260:MPC8260,300MHz                                                                                                            Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AH                            TQM8260:MPC8260,300MHz,L2_CACHE,BUSMODE_60x                                                                                       Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8260_AI                            TQM8260:MPC8260,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8260             TQM8265_AA                            TQM8260:MPC8265,300MHz,BUSMODE_60x                                                                                                Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8260        -           tqc             tqm8272             TQM8272                               -                                                                                                                                 -
+Active  powerpc     mpc83xx        -           -               -                   mpc8308_p1m                           -                                                                                                                                 Ilya Yanok <yanok@emcraft.com>
+Active  powerpc     mpc83xx        -           -               sbc8349             sbc8349                               -                                                                                                                                 Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc83xx        -           -               sbc8349             sbc8349_PCI_33                        sbc8349:PCI,PCI_33M                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc83xx        -           -               sbc8349             sbc8349_PCI_66                        sbc8349:PCI,PCI_66M                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc83xx        -           -               ve8313              ve8313                                -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc83xx        -           esd             vme8349             caddy2                                vme8349:CADDY2                                                                                                                    Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     mpc83xx        -           esd             vme8349             vme8349                               -                                                                                                                                 Reinhard Arlt <reinhard.arlt@esd-electronics.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8308rdb          MPC8308RDB                            -                                                                                                                                 Ilya Yanok <yanok@emcraft.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_33                        MPC8313ERDB:SYS_33MHZ                                                                                                             -
+Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_66                        MPC8313ERDB:SYS_66MHZ                                                                                                             -
+Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_NAND_33                   MPC8313ERDB:SYS_33MHZ,NAND                                                                                                        -
+Active  powerpc     mpc83xx        -           freescale       mpc8313erdb         MPC8313ERDB_NAND_66                   MPC8313ERDB:SYS_66MHZ,NAND                                                                                                        -
+Active  powerpc     mpc83xx        -           freescale       mpc8315erdb         MPC8315ERDB                           -                                                                                                                                 Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8315erdb         MPC8315ERDB_NAND                      MPC8315ERDB:NAND_U_BOOT                                                                                                           Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8323erdb         MPC8323ERDB                           -                                                                                                                                 Michael Barkowski <michael.barkowski@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS                           -                                                                                                                                 Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_ATM                       MPC832XEMDS:PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1                                                                                         Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_HOST_33                   MPC832XEMDS:PCI,PCI_33M,PQ_MDS_PIB=1                                                                                              Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_HOST_66                   MPC832XEMDS:PCI,PCI_66M,PQ_MDS_PIB=1                                                                                              Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc832xemds         MPC832XEMDS_SLAVE                     MPC832XEMDS:PCI,PCISLAVE                                                                                                          Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8349emds         MPC8349EMDS                           -                                                                                                                                 Kim Phillips <kim.phillips@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8349itx          MPC8349ITX                            MPC8349ITX:MPC8349ITX                                                                                                             -
+Active  powerpc     mpc83xx        -           freescale       mpc8349itx          MPC8349ITX_LOWBOOT                    MPC8349ITX:MPC8349ITX,SYS_TEXT_BASE=0xFE000000                                                                                    -
+Active  powerpc     mpc83xx        -           freescale       mpc8349itx          MPC8349ITXGP                          MPC8349ITX:MPC8349ITXGP,SYS_TEXT_BASE=0xFE000000                                                                                  -
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33                        MPC8360EMDS:CLKIN_33MHZ                                                                                                           Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_ATM                    MPC8360EMDS:CLKIN_33MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1                                                                             Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_HOST_33                MPC8360EMDS:CLKIN_33MHZ,PCI,PCI_33M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_HOST_66                MPC8360EMDS:CLKIN_33MHZ,PCI,PCI_66M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_33_SLAVE                  MPC8360EMDS:CLKIN_33MHZ,PCI,PCISLAVE                                                                                              Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66                        MPC8360EMDS:CLKIN_66MHZ                                                                                                           Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_ATM                    MPC8360EMDS:CLKIN_66MHZ,PQ_MDS_PIB=1,PQ_MDS_PIB_ATM=1                                                                             Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_HOST_33                MPC8360EMDS:CLKIN_66MHZ,PCI,PCI_33M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_HOST_66                MPC8360EMDS:CLKIN_66MHZ,PCI,PCI_66M,PQ_MDS_PIB=1                                                                                  Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc8360emds         MPC8360EMDS_66_SLAVE                  MPC8360EMDS:CLKIN_66MHZ,PCI,PCISLAVE                                                                                              Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc837xemds         MPC837XEMDS                           -                                                                                                                                 Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc837xemds         MPC837XEMDS_HOST                      MPC837XEMDS:PCI                                                                                                                   Dave Liu <daveliu@freescale.com>
+Active  powerpc     mpc83xx        -           freescale       mpc837xerdb         MPC837XERDB                           -                                                                                                                                 Joe D'Abbraccio <ljd015@freescale.com>
+Active  powerpc     mpc83xx        -           ids             ids8313             ids8313                               ids8313:SYS_TEXT_BASE=0xFFF00000                                                                                                  Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc83xx        -           keymile         km83xx              kmcoge5ne                             km8360:KMCOGE5NE                                                                                                                  Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           keymile         km83xx              kmeter1                               km8360:KMETER1                                                                                                                    Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           keymile         km83xx              kmopti2                               tuxx1:KMOPTI2                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           keymile         km83xx              kmsupx5                               tuxx1:KMSUPX5                                                                                                                     Heiko Schocher <hs@denx.de>
+Active  powerpc     mpc83xx        -           keymile         km83xx              kmvect1                               suvd3:KMVECT1                                                                                                                     Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           keymile         km83xx              suvd3                                 suvd3:SUVD3                                                                                                                       Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           keymile         km83xx              tuge1                                 tuxx1:TUGE1                                                                                                                       Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           keymile         km83xx              tuxx1                                 tuxx1:TUXX1                                                                                                                       Holger Brunck <holger.brunck@keymile.com>
+Active  powerpc     mpc83xx        -           sheldon         simpc8313           SIMPC8313_LP                          SIMPC8313:NAND_LP                                                                                                                 Ron Madrid <info@sheldoninst.com>
+Active  powerpc     mpc83xx        -           sheldon         simpc8313           SIMPC8313_SP                          SIMPC8313:NAND_SP                                                                                                                 Ron Madrid <info@sheldoninst.com>
+Active  powerpc     mpc83xx        -           tqc             tqm834x             TQM834x                               -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548                               -                                                                                                                                 Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_33                        sbc8548:PCI,33                                                                                                                    Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_33_PCIE                   sbc8548:PCI,33,PCIE                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_66                        sbc8548:PCI,66                                                                                                                    Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc85xx        -           -               sbc8548             sbc8548_PCI_66_PCIE                   sbc8548:PCI,66,PCIE                                                                                                               Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc85xx        -           -               socrates            socrates                              -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           exmeritus       hww1u1a             HWW1U1A                               -                                                                                                                                 Kyle Moffett <Kyle.D.Moffett@boeing.com>
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS                              B4860QDS:PPC_B4420                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_NAND                         B4860QDS:PPC_B4420,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4420QDS_SPIFLASH                     B4860QDS:PPC_B4420,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS                              B4860QDS:PPC_B4860                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_NAND                         B4860QDS:PPC_B4860,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SECURE_BOOT                  B4860QDS:PPC_B4860,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SPIFLASH                     B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       b4860qds            B4860QDS_SRIO_PCIE_BOOT               B4860QDS:PPC_B4860,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_NAND                       BSC9131RDB:BSC9131RDB,NAND                                                                                                        Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_NAND_SYSCLK100             BSC9131RDB:BSC9131RDB,NAND,SYS_CLK_100                                                                                            Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_SPIFLASH                   BSC9131RDB:BSC9131RDB,SPIFLASH                                                                                                    Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9131rdb          BSC9131RDB_SPIFLASH_SYSCLK100         BSC9131RDB:BSC9131RDB,SPIFLASH,SYS_CLK_100                                                                                        Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK100             BSC9132QDS:BSC9132QDS,NAND,SYS_CLK_100_DDR_100                                                                                    Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK100_SECURE      BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK133             BSC9132QDS:BSC9132QDS,NAND,SYS_CLK_100_DDR_133                                                                                    Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NAND_DDRCLK133_SECURE      BSC9132QDS:BSC9132QDS,NAND_SECBOOT,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK100              BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100                                                                                         Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK100_SECURE       BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                             Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK133              BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133                                                                                         Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_NOR_DDRCLK133_SECURE       BSC9132QDS:BSC9132QDS,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                             Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK100           BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100                                                                                  Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK100_SECURE    BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                      Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK133           BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133                                                                                  Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SDCARD_DDRCLK133_SECURE    BSC9132QDS:BSC9132QDS,SDCARD,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                      Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK100         BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100                                                                                Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK100_SECURE  BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_100,SECURE_BOOT                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK133         BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133                                                                                Naveen Burmi <NaveenBurmi@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       bsc9132qds          BSC9132QDS_SPIFLASH_DDRCLK133_SECURE  BSC9132QDS:BSC9132QDS,SPIFLASH,SYS_CLK_100_DDR_133,SECURE_BOOT                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE                              C29XPCIE:C29XPCIE,36BIT                                                                                                           Po Liu <po.liu@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE_NAND                         C29XPCIE:C29XPCIE,36BIT,NAND                                                                                                      Po Liu <po.liu@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       c29xpcie            C29XPCIE_SPIFLASH                     C29XPCIE:C29XPCIE,36BIT,SPIFLASH                                                                                                  Po Liu <po.liu@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS                               -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_NAND                          P3041DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SDCARD                        P3041DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SECURE_BOOT                   P3041DS:SECURE_BOOT                                                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SPIFLASH                      P3041DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P3041DS_SRIO_PCIE_BOOT                P3041DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS                               -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SDCARD                        P4080DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SECURE_BOOT                   P4080DS:SECURE_BOOT                                                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SPIFLASH                      P4080DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P4080DS_SRIO_PCIE_BOOT                P4080DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS                               -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_NAND                          P5020DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SDCARD                        P5020DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SECURE_BOOT                   P5020DS:SECURE_BOOT                                                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SPIFLASH                      P5020DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5020DS_SRIO_PCIE_BOOT                P5020DS:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS                               -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS_NAND                          P5040DS:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS_SDCARD                        P5040DS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                               -
+Active  powerpc     mpc85xx        -           freescale       corenet_ds          P5040DS_SPIFLASH                      P5040DS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                             -
+Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS                             -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_36BIT                       MPC8536DS:36BIT                                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_NAND                        MPC8536DS:NAND                                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_SDCARD                      MPC8536DS:SDCARD                                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       mpc8536ds           MPC8536DS_SPIFLASH                    MPC8536DS:SPIFLASH                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       mpc8540ads          MPC8540ADS                            -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8541cds          MPC8541CDS                            -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8541cds          MPC8541CDS_legacy                     MPC8541CDS:LEGACY                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8544ds           MPC8544DS                             -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       mpc8548cds          MPC8548CDS                            -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       mpc8548cds          MPC8548CDS_36BIT                      MPC8548CDS:36BIT                                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       mpc8548cds          MPC8548CDS_legacy                     MPC8548CDS:LEGACY                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       mpc8555cds          MPC8555CDS                            -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8555cds          MPC8555CDS_legacy                     MPC8555CDS:LEGACY                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8560ads          MPC8560ADS                            -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8568mds          MPC8568MDS                            -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       mpc8569mds          MPC8569MDS                            -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       mpc8569mds          MPC8569MDS_ATM                        MPC8569MDS:ATM                                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       mpc8569mds          MPC8569MDS_NAND                       MPC8569MDS:NAND                                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       mpc8572ds           MPC8572DS                             -                                                                                                                                 York Sun <yorksun@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8572ds           MPC8572DS_36BIT                       MPC8572DS:36BIT                                                                                                                   York Sun <yorksun@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       mpc8572ds           MPC8572DS_NAND                        MPC8572DS:NAND                                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NAND                P1010RDB:P1010RDB_PA,36BIT,NAND                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NAND_SECBOOT        P1010RDB:P1010RDB_PA,36BIT,NAND_SECBOOT,SECURE_BOOT                                                                               -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NOR                 P1010RDB:P1010RDB_PA,36BIT                                                                                                        -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_NOR_SECBOOT         P1010RDB:P1010RDB_PA,36BIT,SECURE_BOOT                                                                                            -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_SDCARD              P1010RDB:P1010RDB_PA,36BIT,SDCARD                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_SPIFLASH            P1010RDB:P1010RDB_PA,36BIT,SPIFLASH                                                                                               -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_36BIT_SPIFLASH_SECBOOT    P1010RDB:P1010RDB_PA,36BIT,SPIFLASH,SECURE_BOOT                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NAND                      P1010RDB:P1010RDB_PA,NAND                                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NAND_SECBOOT              P1010RDB:P1010RDB_PA,NAND_SECBOOT,SECURE_BOOT                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NOR                       P1010RDB:P1010RDB_PA                                                                                                              -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_NOR_SECBOOT               P1010RDB:P1010RDB_PA,SECURE_BOOT                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_SDCARD                    P1010RDB:P1010RDB_PA,SDCARD                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_SPIFLASH                  P1010RDB:P1010RDB_PA,SPIFLASH                                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PA_SPIFLASH_SECBOOT          P1010RDB:P1010RDB_PA,SPIFLASH,SECURE_BOOT                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NAND                P1010RDB:P1010RDB_PB,36BIT,NAND                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NAND_SECBOOT        P1010RDB:P1010RDB_PB,36BIT,NAND_SECBOOT,SECURE_BOOT                                                                               -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NOR                 P1010RDB:P1010RDB_PB,36BIT                                                                                                        -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_NOR_SECBOOT         P1010RDB:P1010RDB_PB,36BIT,SECURE_BOOT                                                                                            -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_SDCARD              P1010RDB:P1010RDB_PB,36BIT,SDCARD                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_SPIFLASH            P1010RDB:P1010RDB_PB,36BIT,SPIFLASH                                                                                               -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_36BIT_SPIFLASH_SECBOOT    P1010RDB:P1010RDB_PB,36BIT,SPIFLASH,SECURE_BOOT                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NAND                      P1010RDB:P1010RDB_PB,NAND                                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NAND_SECBOOT              P1010RDB:P1010RDB_PB,NAND_SECBOOT,SECURE_BOOT                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NOR                       P1010RDB:P1010RDB_PB                                                                                                              -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_NOR_SECBOOT               P1010RDB:P1010RDB_PB,SECURE_BOOT                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_SDCARD                    P1010RDB:P1010RDB_PB,SDCARD                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_SPIFLASH                  P1010RDB:P1010RDB_PB,SPIFLASH                                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p1010rdb            P1010RDB-PB_SPIFLASH_SECBOOT          P1010RDB:P1010RDB_PB,SPIFLASH,SECURE_BOOT                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS                               -                                                                                                                                 Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT                         P1022DS:36BIT                                                                                                                     Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT_NAND                    P1022DS:36BIT,NAND                                                                                                                Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT_SDCARD                  P1022DS:36BIT,SDCARD                                                                                                              Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_36BIT_SPIFLASH                P1022DS:36BIT,SPIFLASH                                                                                                            Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_NAND                          P1022DS:NAND                                                                                                                      Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_SDCARD                        P1022DS:SDCARD                                                                                                                    Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1022ds             P1022DS_SPIFLASH                      P1022DS:SPIFLASH                                                                                                                  Timur Tabi <timur@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1023rdb            P1023RDB                              -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1023rds            P1023RDS                              -                                                                                                                                 Roy Zang <tie-fei.zang@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1023rds            P1023RDS_NAND                         P1023RDS:NAND                                                                                                                     Roy Zang <tie-fei.zang@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB                              P1_P2_RDB:P1011RDB                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_36BIT                        P1_P2_RDB:P1011RDB,36BIT                                                                                                          -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_36BIT_SDCARD                 P1_P2_RDB:P1011RDB,36BIT,SDCARD                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_36BIT_SPIFLASH               P1_P2_RDB:P1011RDB,36BIT,SPIFLASH                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_NAND                         P1_P2_RDB:P1011RDB,NAND                                                                                                           -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_SDCARD                       P1_P2_RDB:P1011RDB,SDCARD                                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1011RDB_SPIFLASH                     P1_P2_RDB:P1011RDB,SPIFLASH                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB                              P1_P2_RDB:P1020RDB                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_36BIT                        P1_P2_RDB:P1020RDB,36BIT                                                                                                          -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_36BIT_SDCARD                 P1_P2_RDB:P1020RDB,36BIT,SDCARD                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_36BIT_SPIFLASH               P1_P2_RDB:P1020RDB,36BIT,SPIFLASH                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_NAND                         P1_P2_RDB:P1020RDB,NAND                                                                                                           -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_SDCARD                       P1_P2_RDB:P1020RDB,SDCARD                                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P1020RDB_SPIFLASH                     P1_P2_RDB:P1020RDB,SPIFLASH                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB                              P1_P2_RDB:P2010RDB                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_36BIT                        P1_P2_RDB:P2010RDB,36BIT                                                                                                          -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_36BIT_SDCARD                 P1_P2_RDB:P2010RDB,36BIT,SDCARD                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_36BIT_SPIFLASH               P1_P2_RDB:P2010RDB,36BIT,SPIFLASH                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_NAND                         P1_P2_RDB:P2010RDB,NAND                                                                                                           -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_SDCARD                       P1_P2_RDB:P2010RDB,SDCARD                                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2010RDB_SPIFLASH                     P1_P2_RDB:P2010RDB,SPIFLASH                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB                              P1_P2_RDB:P2020RDB                                                                                                                Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_36BIT                        P1_P2_RDB:P2020RDB,36BIT                                                                                                          -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_36BIT_SDCARD                 P1_P2_RDB:P2020RDB,36BIT,SDCARD                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_36BIT_SPIFLASH               P1_P2_RDB:P2020RDB,36BIT,SPIFLASH                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_NAND                         P1_P2_RDB:P2020RDB,NAND                                                                                                           -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_SDCARD                       P1_P2_RDB:P2020RDB,SDCARD                                                                                                         -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb           P2020RDB_SPIFLASH                     P1_P2_RDB:P2020RDB,SPIFLASH                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC                           p1_p2_rdb_pc:P1020MBG                                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC_36BIT                     p1_p2_rdb_pc:P1020MBG,36BIT                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC_36BIT_SDCARD              p1_p2_rdb_pc:P1020MBG,SDCARD,36BIT                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020MBG-PC_SDCARD                    p1_p2_rdb_pc:P1020MBG,SDCARD                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC                           p1_p2_rdb_pc:P1020RDB_PC                                                                                                          -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT                     p1_p2_rdb_pc:P1020RDB_PC,36BIT                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT_NAND                p1_p2_rdb_pc:P1020RDB_PC,36BIT,NAND                                                                                               -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT_SDCARD              p1_p2_rdb_pc:P1020RDB_PC,36BIT,SDCARD                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_36BIT_SPIFLASH            p1_p2_rdb_pc:P1020RDB_PC,36BIT,SPIFLASH                                                                                           -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_NAND                      p1_p2_rdb_pc:P1020RDB_PC,NAND                                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_SDCARD                    p1_p2_rdb_pc:P1020RDB_PC,SDCARD                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PC_SPIFLASH                  p1_p2_rdb_pc:P1020RDB_PC,SPIFLASH                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD                           p1_p2_rdb_pc:P1020RDB_PD                                                                                                          -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD_NAND                      p1_p2_rdb_pc:P1020RDB_PD,NAND                                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD_SDCARD                    p1_p2_rdb_pc:P1020RDB_PD,SDCARD                                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020RDB-PD_SPIFLASH                  p1_p2_rdb_pc:P1020RDB_PD,SPIFLASH                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC                           p1_p2_rdb_pc:P1020UTM                                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC_36BIT                     p1_p2_rdb_pc:P1020UTM,36BIT                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC_36BIT_SDCARD              p1_p2_rdb_pc:P1020UTM,36BIT,SDCARD                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1020UTM-PC_SDCARD                    p1_p2_rdb_pc:P1020UTM,SDCARD                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC                           p1_p2_rdb_pc:P1021RDB                                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT                     p1_p2_rdb_pc:P1021RDB,36BIT                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT_NAND                p1_p2_rdb_pc:P1021RDB,36BIT,NAND                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT_SDCARD              p1_p2_rdb_pc:P1021RDB,36BIT,SDCARD                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_36BIT_SPIFLASH            p1_p2_rdb_pc:P1021RDB,36BIT,SPIFLASH                                                                                              -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_NAND                      p1_p2_rdb_pc:P1021RDB,NAND                                                                                                        -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_SDCARD                    p1_p2_rdb_pc:P1021RDB,SDCARD                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1021RDB-PC_SPIFLASH                  p1_p2_rdb_pc:P1021RDB,SPIFLASH                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB                              p1_p2_rdb_pc:P1024RDB                                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_36BIT                        p1_p2_rdb_pc:P1024RDB,36BIT                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_NAND                         p1_p2_rdb_pc:P1024RDB,NAND                                                                                                        -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_SDCARD                       p1_p2_rdb_pc:P1024RDB,SDCARD                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1024RDB_SPIFLASH                     p1_p2_rdb_pc:P1024RDB,SPIFLASH                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB                              p1_p2_rdb_pc:P1025RDB                                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_36BIT                        p1_p2_rdb_pc:P1025RDB,36BIT                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_NAND                         p1_p2_rdb_pc:P1025RDB,NAND                                                                                                        -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_SDCARD                       p1_p2_rdb_pc:P1025RDB,SDCARD                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P1025RDB_SPIFLASH                     p1_p2_rdb_pc:P1025RDB,SPIFLASH                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC                           p1_p2_rdb_pc:P2020RDB                                                                                                             -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT                     p1_p2_rdb_pc:P2020RDB,36BIT                                                                                                       -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT_NAND                p1_p2_rdb_pc:P2020RDB,36BIT,NAND                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT_SDCARD              p1_p2_rdb_pc:P2020RDB,36BIT,SDCARD                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_36BIT_SPIFLASH            p1_p2_rdb_pc:P2020RDB,36BIT,SPIFLASH                                                                                              -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_NAND                      p1_p2_rdb_pc:P2020RDB,NAND                                                                                                        -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_SDCARD                    p1_p2_rdb_pc:P2020RDB,SDCARD                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p1_p2_rdb_pc        P2020RDB-PC_SPIFLASH                  p1_p2_rdb_pc:P2020RDB,SPIFLASH                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p1_twr              TWR-P1025                             p1_twr:TWR_P1025                                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       p2020come           P2020COME_SDCARD                      P2020COME:SDCARD                                                                                                                  Ira W. Snyder <iws@ovro.caltech.edu>
+Active  powerpc     mpc85xx        -           freescale       p2020come           P2020COME_SPIFLASH                    P2020COME:SPIFLASH                                                                                                                Ira W. Snyder <iws@ovro.caltech.edu>
+Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS                               -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_36BIT                         P2020DS:36BIT                                                                                                                     -
+Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_DDR2                          P2020DS:DDR2                                                                                                                      -
+Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_SDCARD                        P2020DS:SDCARD                                                                                                                    -
+Active  powerpc     mpc85xx        -           freescale       p2020ds             P2020DS_SPIFLASH                      P2020DS:SPIFLASH                                                                                                                  -
+Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB                              -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_NAND                         P2041RDB:RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000                                                                                -
+Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SDCARD                       P2041RDB:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000                                                                              -
+Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SECURE_BOOT                  P2041RDB:SECURE_BOOT                                                                                                              -
+Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SPIFLASH                     P2041RDB:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                            -
+Active  powerpc     mpc85xx        -           freescale       p2041rdb            P2041RDB_SRIO_PCIE_BOOT               P2041RDB:SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                            -
+Active  powerpc     mpc85xx        -           freescale       qemu-ppce500        qemu-ppce500                          -                                                                                                                                 Alexander Graf <agraf@suse.de>
+Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS                              T1040QDS:PPC_T1040                                                                                                                Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS_D4                           T1040QDS:PPC_T1040,SYS_FSL_DDR4                                                                                                   Poonam Aggrwal <poonam.aggrwal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t1040qds            T1040QDS_SECURE_BOOT                  T1040QDS:PPC_T1040,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB                              T104xRDB:PPC_T1040,T1040RDB                                                                                                       Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_NAND                         T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                          Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SDCARD                       T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                        -
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SECURE_BOOT                  T104xRDB:PPC_T1040,SECURE_BOOT,T1040RDB                                                                                           Aneesh Bansal  <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1040RDB_SPIFLASH                     T104xRDB:PPC_T1040,T1040RDB,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                      Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI                           T104xRDB:PPC_T1042,T1042RDB_PI                                                                                                    Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_NAND                      T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                       Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_SDCARD                    T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                     -
+Active  powerpc     mpc85xx        -           freescale       t104xrdb            T1042RDB_PI_SPIFLASH                  T104xRDB:PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                   Priyanka Jain  <Priyanka.Jain@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS                              T208xQDS:PPC_T2080                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_NAND                         T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SDCARD                       T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SECURE_BOOT                  T208xQDS:PPC_T2080,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SPIFLASH                     T208xQDS:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                               -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2080QDS_SRIO_PCIE_BOOT               T208xQDS:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS                              T208xQDS:PPC_T2081                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_NAND                         T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SDCARD                       T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SPIFLASH                     T208xQDS:PPC_T2081,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                               -
+Active  powerpc     mpc85xx        -           freescale       t208xqds            T2081QDS_SRIO_PCIE_BOOT               T208xQDS:PPC_T2081,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB                              T208xRDB:PPC_T2080                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_NAND                         T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SDCARD                       T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SECURE_BOOT                  T208xRDB:PPC_T2080,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SPIFLASH                     T208xRDB:PPC_T2080,RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH                                                                               -
+Active  powerpc     mpc85xx        -           freescale       t208xrdb            T2080RDB_SRIO_PCIE_BOOT               T208xRDB:PPC_T2080,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS                              T4240QDS:PPC_T4160                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_NAND                         T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SDCARD                       T4240QDS:PPC_T4160,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SECURE_BOOT                  T4240QDS:PPC_T4160,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4160QDS_SPIFLASH                     T4240QDS:PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240EMU                              T4240EMU:PPC_T4240                                                                                                                York Sun <yorksun@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS                              T4240QDS:PPC_T4240                                                                                                                -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_NAND                         T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,NAND                                                                                   -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SDCARD                       T4240QDS:PPC_T4240,RAMBOOT_PBL,SPL_FSL_PBL,SDCARD                                                                                 -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SECURE_BOOT                  T4240QDS:PPC_T4240,SECURE_BOOT                                                                                                    Aneesh Bansal <aneesh.bansal@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SPIFLASH                     T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t4qds               T4240QDS_SRIO_PCIE_BOOT               T4240QDS:PPC_T4240,SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000                                                                  -
+Active  powerpc     mpc85xx        -           freescale       t4rdb               T4160RDB                              T4240RDB:PPC_T4160                                                                                                                Chunhe Lan <Chunhe.Lan@freescale.com>
+Active  powerpc     mpc85xx        -           freescale       t4rdb               T4240RDB                              T4240RDB:PPC_T4240                                                                                                                Chunhe Lan <Chunhe.Lan@freescale.com>
+Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_36BIT_SDCARD           controlcenterd:36BIT,SDCARD                                                                                                       Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_36BIT_SDCARD_DEVELOP   controlcenterd:36BIT,SDCARD,DEVELOP                                                                                               Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_TRAILBLAZER            controlcenterd:TRAILBLAZER,SPIFLASH                                                                                               Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     mpc85xx        -           gdsys           p1022               controlcenterd_TRAILBLAZER_DEVELOP    controlcenterd:TRAILBLAZER,SPIFLASH,DEVELOP                                                                                       Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     mpc85xx        -           keymile         kmp204x             kmcoge4                               kmp204x:KMCOGE4                                                                                                                   Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  powerpc     mpc85xx        -           keymile         kmp204x             kmlion1                               kmp204x:KMLION1                                                                                                                   Valentin Longchamp <valentin.longchamp@keymile.com>
+Active  powerpc     mpc85xx        -           stx             stxgp3              stxgp3                                -                                                                                                                                 Dan Malek <dan@embeddedalley.com>
+Active  powerpc     mpc85xx        -           stx             stxssa              stxssa                                -                                                                                                                                 Dan Malek <dan@embeddedalley.com>
+Active  powerpc     mpc85xx        -           stx             stxssa              stxssa_4M                             stxssa:STXSSA_4M                                                                                                                  Dan Malek <dan@embeddedalley.com>
+Active  powerpc     mpc85xx        -           xes             -                   xpedite520x                           -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           xes             -                   xpedite537x                           -                                                                                                                                 -
+Active  powerpc     mpc85xx        -           xes             -                   xpedite550x                           -                                                                                                                                 -
+Active  powerpc     mpc86xx        -           -               -                   sbc8641d                              -                                                                                                                                 Paul Gortmaker <paul.gortmaker@windriver.com>
+Active  powerpc     mpc86xx        -           freescale       mpc8610hpcd         MPC8610HPCD                           -                                                                                                                                 -
+Active  powerpc     mpc86xx        -           freescale       mpc8641hpcn         MPC8641HPCN                           -                                                                                                                                 Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc86xx        -           freescale       mpc8641hpcn         MPC8641HPCN_36BIT                     MPC8641HPCN:PHYS_64BIT                                                                                                            Kumar Gala <kumar.gala@freescale.com>
+Active  powerpc     mpc86xx        -           xes             -                   xpedite517x                           -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               -                   hermes                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               -                   lwmon                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               -                   quantum                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               -                   RRvision                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               -                   spc1920                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               -                   svm_sc8xx                             -                                                                                                                                 John Zhan <zhanz@sinovee.com>
+Active  powerpc     mpc8xx         -           -               -                   v37                                   -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               cogent              cogent_mpc8xx                         -                                                                                                                                 Murray Jensen <Murray.Jensen@csiro.au>
+Active  powerpc     mpc8xx         -           -               esteem192e          ESTEEM192E                            -                                                                                                                                 Conn Clark <clark@esteem.com>
+Active  powerpc     mpc8xx         -           -               fads                MPC86xADS                             -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               fads                MPC885ADS                             -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               flagadm             FLAGADM                               -                                                                                                                                 Kári Davíðsson <kd@flaga.is>
+Active  powerpc     mpc8xx         -           -               gen860t             GEN860T                               -                                                                                                                                 Keith Outwater <Keith_Outwater@mvis.com>
+Active  powerpc     mpc8xx         -           -               gen860t             GEN860T_SC                            GEN860T:SC                                                                                                                        Keith Outwater <Keith_Outwater@mvis.com>
+Active  powerpc     mpc8xx         -           -               icu862              ICU862                                -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               icu862              ICU862_100MHz                         ICU862:100MHz                                                                                                                     Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ip860               IP860                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ivm                 IVML24                                IVML24:IVML24_16M                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ivm                 IVML24_128                            IVML24:IVML24_32M                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ivm                 IVML24_256                            IVML24:IVML24_64M                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ivm                 IVMS8                                 IVMS8:IVMS8_16M                                                                                                                   Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ivm                 IVMS8_128                             IVMS8:IVMS8_32M                                                                                                                   Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               ivm                 IVMS8_256                             IVMS8:IVMS8_64M                                                                                                                   Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               netphone            NETPHONE                              NETPHONE:NETPHONE_VERSION=1                                                                                                       -
+Active  powerpc     mpc8xx         -           -               netphone            NETPHONE_V2                           NETPHONE:NETPHONE_VERSION=2                                                                                                       -
+Active  powerpc     mpc8xx         -           -               netta               NETTA                                 -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_6412                            NETTA:NETTA_6412=1                                                                                                                -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_6412_SWAPHOOK                   NETTA:NETTA_6412=1,NETTA_SWAPHOOK=1                                                                                               -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN                            NETTA:NETTA_ISDN=1                                                                                                                -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN_6412                       NETTA:NETTA_ISDN=1,NETTA_6412=1                                                                                                   -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN_6412_SWAPHOOK              NETTA:NETTA_ISDN=1,NETTA_6412=1,NETTA_SWAPHOOK=1                                                                                  -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_ISDN_SWAPHOOK                   NETTA:NETTA_ISDN=1,NETTA_SWAPHOOK=1                                                                                               -
+Active  powerpc     mpc8xx         -           -               netta               NETTA_SWAPHOOK                        NETTA:NETTA_SWAPHOOK=1                                                                                                            -
+Active  powerpc     mpc8xx         -           -               netta2              NETTA2                                NETTA2:NETTA2_VERSION=1                                                                                                           -
+Active  powerpc     mpc8xx         -           -               netta2              NETTA2_V2                             NETTA2:NETTA2_VERSION=2                                                                                                           -
+Active  powerpc     mpc8xx         -           -               netvia              NETVIA                                NETVIA:NETVIA_VERSION=1                                                                                                           Pantelis Antoniou <panto@intracom.gr>
+Active  powerpc     mpc8xx         -           -               netvia              NETVIA_V2                             NETVIA:NETVIA_VERSION=2                                                                                                           Pantelis Antoniou <panto@intracom.gr>
+Active  powerpc     mpc8xx         -           -               r360mpi             R360MPI                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               rbc823              RBC823                                -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW                            -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_64                         RPXlite_DW:RPXlite_64MHz                                                                                                          -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_64_LCD                     RPXlite_DW:RPXlite_64MHz,LCD,NEC_NL6448BC20                                                                                       -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_LCD                        RPXlite_DW:LCD,NEC_NL6448BC20                                                                                                     -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM                      RPXlite_DW:ENV_IS_IN_NVRAM                                                                                                        -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM_64                   RPXlite_DW:RPXlite_64MHz,ENV_IS_IN_NVRAM                                                                                          -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM_64_LCD               RPXlite_DW:RPXlite_64MHz,LCD,NEC_NL6448BC20,ENV_IS_IN_NVRAM                                                                       -
+Active  powerpc     mpc8xx         -           -               RPXlite_dw          RPXlite_DW_NVRAM_LCD                  RPXlite_DW:LCD,NEC_NL6448BC20,ENV_IS_IN_NVRAM                                                                                     -
+Active  powerpc     mpc8xx         -           -               RRvision            RRvision_LCD                          RRvision:LCD,SHARP_LQ104V7DS01                                                                                                    Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           -               sixnet              SXNI855T                              -                                                                                                                                 Dave Ellis <DGE@sixnetio.com>
+Active  powerpc     mpc8xx         -           -               spd8xx              SPD823TS                              -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           eltec           mhpc                MHPC                                  -                                                                                                                                 Frank Gottschling <fgottschling@eltec.de>
+Active  powerpc     mpc8xx         -           emk             top860              TOP860                                -                                                                                                                                 Reinhard Meyer <reinhard.meyer@emk-elektronik.de>
+Active  powerpc     mpc8xx         -           kup             kup4k               KUP4K                                 -                                                                                                                                 Klaus Heydeck <heydeck@kieback-peter.de>
+Active  powerpc     mpc8xx         -           kup             kup4x               KUP4X                                 -                                                                                                                                 Klaus Heydeck <heydeck@kieback-peter.de>
+Active  powerpc     mpc8xx         -           LEOX            elpt860             ELPT860                               -                                                                                                                                 The LEOX team <team@leox.org>
+Active  powerpc     mpc8xx         -           manroland       -                   uc100                                 -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     mpc8xx         -           snmc            qs850               QS823                                 -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           snmc            qs850               QS850                                 -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           snmc            qs860t              QS860T                                -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           stx             stxxtc              stxxtc                                -                                                                                                                                 Dan Malek <dan@embeddedalley.com>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              FPS850L                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              FPS860L                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              NSCU                                  -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              SM850                                 -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TK885D                                -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM823L                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM823L_LCD                           TQM823L:LCD,NEC_NL6448BC20                                                                                                        Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM823M                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM850L                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM850M                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM855L                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM855M                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM860L                               -                                                                                                                                 Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM860M                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM862L                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM862M                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM866M                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TQM885D                               -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              TTTech                                TQM823L:LCD,SHARP_LQ104V7DS01                                                                                                     Wolfgang Denk <wd@denx.de>
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              virtlab2                              -                                                                                                                                 -
+Active  powerpc     mpc8xx         -           tqc             tqm8xx              wtk                                   TQM823L:LCD,SHARP_LQ065T9DR51U                                                                                                    Wolfgang Denk <wd@denx.de>
+Active  powerpc     ppc4xx         -           -               -                   csb272                                -                                                                                                                                 Tolunay Orkun <torkun@nextio.com>
+Active  powerpc     ppc4xx         -           -               -                   csb472                                -                                                                                                                                 Tolunay Orkun <torkun@nextio.com>
+Active  powerpc     ppc4xx         -           -               -                   korat                                 -                                                                                                                                 Larry Johnson <lrj@acm.org>
+Active  powerpc     ppc4xx         -           -               -                   lwmon5                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           -               -                   pcs440ep                              -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           -               -                   quad100hd                             -                                                                                                                                 Gary Jennejohn <garyj@denx.de>
+Active  powerpc     ppc4xx         -           -               -                   sbc405                                -                                                                                                                                 -
+Active  powerpc     ppc4xx         -           -               -                   sc3                                   -                                                                                                                                 Heiko Schocher <hs@denx.de>
+Active  powerpc     ppc4xx         -           -               -                   t3corp                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           -               -                   zeus                                  -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           -               g2000               G2000                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           -               jse                 JSE                                   -                                                                                                                                 Stephen Williams <steve@icarus.com>
+Active  powerpc     ppc4xx         -           -               korat               korat_perm                            korat:KORAT_PERMANENT                                                                                                             Larry Johnson <lrj@acm.org>
+Active  powerpc     ppc4xx         -           -               lwmon5              lcd4_lwmon5                           lwmon5:LCD4_LWMON5                                                                                                                Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           -               w7o                 W7OLMC                                -                                                                                                                                 Erik Theisen <etheisen@mindspring.com>
+Active  powerpc     ppc4xx         -           -               w7o                 W7OLMG                                -                                                                                                                                 Erik Theisen <etheisen@mindspring.com>
+Active  powerpc     ppc4xx         -           amcc            -                   acadia                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   bamboo                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   bubinga                               -                                                                                                                                 -
+Active  powerpc     ppc4xx         -           amcc            -                   ebony                                 -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   katmai                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   luan                                  -                                                                                                                                 John Otken <jotken@softadvances.com>
+Active  powerpc     ppc4xx         -           amcc            -                   makalu                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   ocotea                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   redwood                               -                                                                                                                                 Feng Kan <fkan@amcc.com>
+Active  powerpc     ppc4xx         -           amcc            -                   taihu                                 -                                                                                                                                 John Otken <jotken@softadvances.com>
+Active  powerpc     ppc4xx         -           amcc            -                   taishan                               -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            -                   yucca                                 -                                                                                                                                 -
+Active  powerpc     ppc4xx         -           amcc            canyonlands         arches                                canyonlands:ARCHES                                                                                                                Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            canyonlands         canyonlands                           canyonlands:CANYONLANDS                                                                                                           Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            canyonlands         glacier                               canyonlands:GLACIER                                                                                                               Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            kilauea             haleakala                             kilauea:HALEAKALA                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            kilauea             kilauea                               kilauea:KILAUEA                                                                                                                   Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            sequoia             rainier                               sequoia:RAINIER                                                                                                                   Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            sequoia             rainier_ramboot                       sequoia:RAINIER,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds                               Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            sequoia             sequoia                               sequoia:SEQUOIA                                                                                                                   Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            sequoia             sequoia_ramboot                       sequoia:SEQUOIA,SYS_RAMBOOT,SYS_TEXT_BASE=0x01000000,SYS_LDSCRIPT=board/amcc/sequoia/u-boot-ram.lds                               Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            walnut              sycamore                              walnut                                                                                                                            Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            walnut              walnut                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            yosemite            yellowstone                           yosemite:YELLOWSTONE                                                                                                              Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           amcc            yosemite            yosemite                              yosemite:YOSEMITE                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           avnet           fx12mm              fx12mm                                fx12mm:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,INIT_TLB=board/xilinx/ppc405-generic/init.o                       Georg Schardt <schardt@team-ctech.de>
+Active  powerpc     ppc4xx         -           avnet           fx12mm              fx12mm_flash                          fx12mm:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc405-generic/init.o                       Georg Schardt <schardt@team-ctech.de>
+Active  powerpc     ppc4xx         -           avnet           v5fx30teval         v5fx30teval                           v5fx30teval:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o  Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           avnet           v5fx30teval         v5fx30teval_flash                     v5fx30teval:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o                  Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      CATcenter                             CATcenter:PPCHAMELEON_MODULE_MODEL=1                                                                                              -
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      CATcenter_25                          CATcenter:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25                                                                           -
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      CATcenter_33                          CATcenter:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33                                                                           -
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB                        -                                                                                                                                 Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_BA_25                  PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_25                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_BA_33                  PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=0,PPCHAMELEON_CLK_33                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_HI_25                  PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_25                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_HI_33                  PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=2,PPCHAMELEON_CLK_33                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_ME_25                  PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_25                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           dave            PPChameleonEVB      PPChameleonEVB_ME_33                  PPChameleonEVB:PPCHAMELEON_MODULE_MODEL=1,PPCHAMELEON_CLK_33                                                                      Andrea "llandre" Marson <andrea.marson@dave-tech.it>
+Active  powerpc     ppc4xx         -           esd             apc405              APC405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             ar405               AR405                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             ash405              ASH405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cms700              CMS700                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cpci2dp             CPCI2DP                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cpci405             CPCI405                               -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cpci405             CPCI4052                              -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cpci405             CPCI405AB                             -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cpci405             CPCI405DT                             -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             cpciiser4           CPCIISER4                             -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             dp405               DP405                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             du405               DU405                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             du440               DU440                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             hh405               HH405                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             hub405              HUB405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             ocrtc               OCRTC                                 -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             pci405              PCI405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             plu405              PLU405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             pmc405              PMC405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             pmc405de            PMC405DE                              -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             pmc440              PMC440                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             voh405              VOH405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             vom405              VOM405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           esd             wuh405              WUH405                                -                                                                                                                                 Matthias Fuchs <matthias.fuchs@esd-electronics.com>
+Active  powerpc     ppc4xx         -           gdsys           -                   dlvision                              -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           -                   gdppc440etx                           -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           405ep               dlvision-10g                          -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           405ep               io                                    -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           405ep               iocon                                 -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           405ep               neo                                   -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           405ex               io64                                  -                                                                                                                                 Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           intip               devconcenter                          intip:DEVCONCENTER                                                                                                                Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           gdsys           intip               intip                                 intip:INTIB                                                                                                                       Dirk Eibach <eibach@gdsys.de>
+Active  powerpc     ppc4xx         -           mosaixtech      -                   icon                                  -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           mpl             mip405              MIP405                                -                                                                                                                                 Denis Peter <d.peter@mpl.ch>
+Active  powerpc     ppc4xx         -           mpl             mip405              MIP405T                               MIP405:MIP405T                                                                                                                    Denis Peter <d.peter@mpl.ch>
+Active  powerpc     ppc4xx         -           mpl             pip405              PIP405                                -                                                                                                                                 Denis Peter <d.peter@mpl.ch>
+Active  powerpc     ppc4xx         -           prodrive        -                   alpr                                  -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           prodrive        -                   p3p440                                -                                                                                                                                 Stefan Roese <sr@denx.de>
+Active  powerpc     ppc4xx         -           xes             -                   xpedite1000                           -                                                                                                                                 Peter Tyser <ptyser@xes-inc.com>
+Active  powerpc     ppc4xx         -           xilinx          ml507               ml507                                 ml507:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1,INIT_TLB=board/xilinx/ppc440-generic/init.o        Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           xilinx          ml507               ml507_flash                           ml507:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC,INIT_TLB=board/xilinx/ppc440-generic/init.o                        Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           xilinx          ppc405-generic      xilinx-ppc405-generic                 xilinx-ppc405-generic:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000                                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           xilinx          ppc405-generic      xilinx-ppc405-generic_flash           xilinx-ppc405-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC                                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           xilinx          ppc440-generic      xilinx-ppc440-generic                 xilinx-ppc440-generic:SYS_TEXT_BASE=0x04000000,RESET_VECTOR_ADDRESS=0x04100000,BOOT_FROM_XMD=1                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  powerpc     ppc4xx         -           xilinx          ppc440-generic      xilinx-ppc440-generic_flash           xilinx-ppc440-generic:SYS_TEXT_BASE=0xF7F60000,RESET_VECTOR_ADDRESS=0xF7FFFFFC                                                    Ricardo Ribalda <ricardo.ribalda@uam.es>
+Active  sandbox     sandbox        -           -               sandbox             sandbox                               -                                                                                                                                 Simon Glass <sjg@chromium.org>
+Active  sh          sh2            -           renesas         rsk7203             rsk7203                               -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh2            -           renesas         rsk7264             rsk7264                               -                                                                                                                                 Phil Edworthy <phil.edworthy@renesas.com>
+Active  sh          sh2            -           renesas         rsk7269             rsk7269                               -                                                                                                                                 -
+Active  sh          sh3            -           -               mpr2                mpr2                                  -                                                                                                                                 Mark Jonas <mark.jonas@de.bosch.com>
+Active  sh          sh3            -           -               ms7720se            ms7720se                              -                                                                                                                                 Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+Active  sh          sh3            -           -               shmin               shmin                                 -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           -               espt                espt                                  -                                                                                                                                 -
+Active  sh          sh4            -           -               ms7722se            ms7722se                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           -               ms7750se            ms7750se                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           alphaproject    ap_sh4a_4a          ap_sh4a_4a                            -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         ap325rxa            ap325rxa                              -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         ecovec              ecovec                                -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         MigoR               MigoR                                 -                                                                                                                                 -
+Active  sh          sh4            -           renesas         r0p7734             r0p7734                               -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         r2dplus             r2dplus                               -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         r7780mp             r7780mp                               -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         sh7752evb           sh7752evb                             -                                                                                                                                 -
+Active  sh          sh4            -           renesas         sh7753evb           sh7753evb                             -                                                                                                                                 -
+Active  sh          sh4            -           renesas         sh7757lcr           sh7757lcr                             -                                                                                                                                 -
+Active  sh          sh4            -           renesas         sh7763rdp           sh7763rdp                             -                                                                                                                                 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>:Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Active  sh          sh4            -           renesas         sh7785lcr           sh7785lcr                             -                                                                                                                                 -
+Active  sh          sh4            -           renesas         sh7785lcr           sh7785lcr_32bit                       sh7785lcr:SH_32BIT=1                                                                                                              -
+Active  sparc       leon2          -           gaisler         -                   grsim_leon2                           -                                                                                                                                 -
+Active  sparc       leon3          -           gaisler         -                   gr_cpci_ax2000                        -                                                                                                                                 -
+Active  sparc       leon3          -           gaisler         -                   gr_ep2s60                             -                                                                                                                                 -
+Active  sparc       leon3          -           gaisler         -                   gr_xc3s_1500                          -                                                                                                                                 -
+Active  sparc       leon3          -           gaisler         -                   grsim                                 -                                                                                                                                 -
+Active  x86         x86            coreboot    chromebook-x86  coreboot            coreboot-x86                          coreboot:SYS_TEXT_BASE=0x01110000                                                                                                 Simon Glass <sjg@chromium.org>
 # The following were moved to "Orphan" in April, 2014
-Orphan  powerpc     74xx_7xx       -           -               evb64260            ZUMA                                 -                                                                                                                                 Nye Liu <nyet@zumanetworks.com>
-Orphan  powerpc     mpc824x        -           -               musenki             MUSENKI                              -                                                                                                                                 Jim Thompson <jim@musenki.com>
-Orphan  powerpc     mpc824x        -           -               sandpoint           Sandpoint8245                        -                                                                                                                                 Jim Thompson <jim@musenki.com>
-Orphan  powerpc     mpc8260        -           -               -                   ppmc8260                             -                                                                                                                                 Brad Kemp <Brad.Kemp@seranoa.com>
+Orphan  powerpc     74xx_7xx       -           -               evb64260            ZUMA                                  -                                                                                                                                 Nye Liu <nyet@zumanetworks.com>
+Orphan  powerpc     mpc824x        -           -               musenki             MUSENKI                               -                                                                                                                                 Jim Thompson <jim@musenki.com>
+Orphan  powerpc     mpc824x        -           -               sandpoint           Sandpoint8245                         -                                                                                                                                 Jim Thompson <jim@musenki.com>
+Orphan  powerpc     mpc8260        -           -               -                   ppmc8260                              -                                                                                                                                 Brad Kemp <Brad.Kemp@seranoa.com>
 # The following were moved to "Orphan" in March, 2014
-Orphan  blackfin    blackfin       -           -               -                   cm-bf527                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   cm-bf533                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   cm-bf537e                            -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   cm-bf537u                            -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   cm-bf548                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   cm-bf561                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   tcm-bf518                            -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  blackfin    blackfin       -           -               -                   tcm-bf537                            -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
-Orphan  powerpc     mpc5xxx        -           matrix_vision   mvbc_p              MVBC_P                               MVBC_P:MVBC_P                                                                                                                     Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan  powerpc     mpc5xxx        -           matrix_vision   mvsmr               MVSMR                                -                                                                                                                                 Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan  powerpc     mpc824x        -           -               hidden_dragon       HIDDEN_DRAGON                        -                                                                                                                                 Yusdi Santoso <yusdi_santoso@adaptec.com>
-Orphan  powerpc     mpc824x        -           etin            -                   debris                               -                                                                                                                                 Sangmoon Kim <dogoil@etinsys.com>
-Orphan  powerpc     mpc824x        -           etin            -                   kvme080                              -                                                                                                                                 Sangmoon Kim <dogoil@etinsys.com>
-Orphan  powerpc     mpc8260        -           -               ep8248              ep8248                               -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           -               ispan               ISPAN                                -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           -               ispan               ISPAN_REVB                           ISPAN:SYS_REV_B                                                                                                                   Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           -               rattler             Rattler                              -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           -               rattler             Rattler8248                          Rattler:MPC8248                                                                                                                   Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           -               zpc1900             ZPC1900                              -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS                           MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_33MHz                     MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=33000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_33MHz_lowboot             MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=33000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_40MHz                     MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=40000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_40MHz_lowboot             MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=40000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_lowboot                   MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8272ADS                           MPC8260ADS:ADSTYPE=CONFIG_SYS_8272ADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8272ADS_lowboot                   MPC8260ADS:ADSTYPE=CONFIG_SYS_8272ADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS                              MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-VR                           MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-VR_lowboot                   MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU                           MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU_66MHz                     MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU_66MHz_lowboot             MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU_lowboot                   MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS_lowboot                      MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc83xx        -           freescale       mpc8360erdk         MPC8360ERDK                          -                                                                                                                                 Anton Vorontsov <avorontsov@ru.mvista.com>
-Orphan  powerpc     mpc83xx        -           freescale       mpc8360erdk         MPC8360ERDK_33                       MPC8360ERDK:CLKIN_33MHZ                                                                                                           Anton Vorontsov <avorontsov@ru.mvista.com>
-Orphan  powerpc     mpc83xx        -           matrix_vision   mergerbox           MERGERBOX                            -                                                                                                                                 Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan  powerpc     mpc83xx        -           matrix_vision   mvblm7              MVBLM7                               -                                                                                                                                 Andre Schwarz <andre.schwarz@matrix-vision.de>
-Orphan  powerpc     mpc8xx         -           -               adder               Adder                                -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     mpc8xx         -           -               adder               AdderII                              Adder:MPC852T                                                                                                                     Yuli Barcohen <yuli@arabellasw.com>
-Orphan  powerpc     ppc4xx         -           amcc            -                   bluestone                            -                                                                                                                                 Tirumala Marri <tmarri@apm.com>
-Orphan  powerpc     ppc4xx         -           cray            L1                  CRAYL1                               -                                                                                                                                 David Updegraff <dave@cray.com>
-Orphan  powerpc     ppc4xx         -           sandburst       karef               KAREF                                -                                                                                                                                 Travis Sawyer <travis.sawyer@sandburst.com>
-Orphan  powerpc     ppc4xx         -           sandburst       metrobox            METROBOX                             -                                                                                                                                 Travis Sawyer <travis.sawyer@sandburst.com>
+Orphan  blackfin    blackfin       -           -               -                   cm-bf527                              -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   cm-bf533                              -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   cm-bf537e                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   cm-bf537u                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   cm-bf548                              -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   cm-bf561                              -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   tcm-bf518                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  blackfin    blackfin       -           -               -                   tcm-bf537                             -                                                                                                                                 Bluetechnix Tinyboards <bluetechnix@blackfin.uclinux.org>
+Orphan  powerpc     mpc5xxx        -           matrix_vision   mvbc_p              MVBC_P                                MVBC_P:MVBC_P                                                                                                                     Andre Schwarz <andre.schwarz@matrix-vision.de>
+Orphan  powerpc     mpc5xxx        -           matrix_vision   mvsmr               MVSMR                                 -                                                                                                                                 Andre Schwarz <andre.schwarz@matrix-vision.de>
+Orphan  powerpc     mpc824x        -           -               hidden_dragon       HIDDEN_DRAGON                         -                                                                                                                                 Yusdi Santoso <yusdi_santoso@adaptec.com>
+Orphan  powerpc     mpc824x        -           etin            -                   debris                                -                                                                                                                                 Sangmoon Kim <dogoil@etinsys.com>
+Orphan  powerpc     mpc824x        -           etin            -                   kvme080                               -                                                                                                                                 Sangmoon Kim <dogoil@etinsys.com>
+Orphan  powerpc     mpc8260        -           -               ep8248              ep8248                                -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           -               ispan               ISPAN                                 -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           -               ispan               ISPAN_REVB                            ISPAN:SYS_REV_B                                                                                                                   Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           -               rattler             Rattler                               -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           -               rattler             Rattler8248                           Rattler:MPC8248                                                                                                                   Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           -               zpc1900             ZPC1900                               -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS                            MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_33MHz                      MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=33000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_33MHz_lowboot              MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=33000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_40MHz                      MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=40000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_40MHz_lowboot              MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,8260_CLKIN=40000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8260ADS_lowboot                    MPC8260ADS:ADSTYPE=CONFIG_SYS_8260ADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8272ADS                            MPC8260ADS:ADSTYPE=CONFIG_SYS_8272ADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          MPC8272ADS_lowboot                    MPC8260ADS:ADSTYPE=CONFIG_SYS_8272ADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS                               MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-VR                            MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-VR_lowboot                    MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU                            MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS                                                                                             Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU_66MHz                      MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000                                                                         Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU_66MHz_lowboot              MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,8260_CLKIN=66000000,SYS_TEXT_BASE=0xFF800000                                                Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS-ZU_lowboot                    MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8260        -           freescale       mpc8260ads          PQ2FADS_lowboot                       MPC8260ADS:ADSTYPE=CONFIG_SYS_PQ2FADS,SYS_TEXT_BASE=0xFF800000                                                                    Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc83xx        -           freescale       mpc8360erdk         MPC8360ERDK                           -                                                                                                                                 Anton Vorontsov <avorontsov@ru.mvista.com>
+Orphan  powerpc     mpc83xx        -           freescale       mpc8360erdk         MPC8360ERDK_33                        MPC8360ERDK:CLKIN_33MHZ                                                                                                           Anton Vorontsov <avorontsov@ru.mvista.com>
+Orphan  powerpc     mpc83xx        -           matrix_vision   mergerbox           MERGERBOX                             -                                                                                                                                 Andre Schwarz <andre.schwarz@matrix-vision.de>
+Orphan  powerpc     mpc83xx        -           matrix_vision   mvblm7              MVBLM7                                -                                                                                                                                 Andre Schwarz <andre.schwarz@matrix-vision.de>
+Orphan  powerpc     mpc8xx         -           -               adder               Adder                                 -                                                                                                                                 Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     mpc8xx         -           -               adder               AdderII                               Adder:MPC852T                                                                                                                     Yuli Barcohen <yuli@arabellasw.com>
+Orphan  powerpc     ppc4xx         -           amcc            -                   bluestone                             -                                                                                                                                 Tirumala Marri <tmarri@apm.com>
+Orphan  powerpc     ppc4xx         -           cray            L1                  CRAYL1                                -                                                                                                                                 David Updegraff <dave@cray.com>
+Orphan  powerpc     ppc4xx         -           sandburst       karef               KAREF                                 -                                                                                                                                 Travis Sawyer <travis.sawyer@sandburst.com>
+Orphan  powerpc     ppc4xx         -           sandburst       metrobox            METROBOX                              -                                                                                                                                 Travis Sawyer <travis.sawyer@sandburst.com>
 # The following were move to "Orphan" in September, 2013
-Orphan  arm         arm1136        mx31        -               imx31_phycore       imx31_phycore_eet                    imx31_phycore:IMX31_PHYCORE_EET                                                                                                   (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
-Orphan  arm         arm1136        mx31        freescale       -                   mx31ads                              -                                                                                                                                 (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Orphan  arm         arm1136        mx31        -               imx31_phycore       imx31_phycore_eet                     imx31_phycore:IMX31_PHYCORE_EET                                                                                                   (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Orphan  arm         arm1136        mx31        freescale       -                   mx31ads                               -                                                                                                                                 (resigned) Guennadi Liakhovetski <g.liakhovetski@gmx.de>
index 7c853ae4422bf331e98813555ffa2c0d62a02ce9..219cb51b2d70c956b11a6666687dfe019d948490 100644 (file)
@@ -168,6 +168,8 @@ obj-y += cmd_usb.o
 obj-y += usb.o usb_hub.o
 obj-$(CONFIG_USB_STORAGE) += usb_storage.o
 endif
+obj-$(CONFIG_CMD_FASTBOOT) += cmd_fastboot.o
+
 obj-$(CONFIG_CMD_USB_MASS_STORAGE) += cmd_usb_mass_storage.o
 obj-$(CONFIG_CMD_THOR_DOWNLOAD) += cmd_thordown.o
 obj-$(CONFIG_CMD_XIMG) += cmd_ximg.o
@@ -237,6 +239,7 @@ obj-y += console.o
 obj-$(CONFIG_CROS_EC) += cros_ec.o
 obj-y += dlmalloc.o
 obj-y += image.o
+obj-$(CONFIG_ANDROID_BOOT_IMAGE) += image-android.o
 obj-$(CONFIG_OF_LIBFDT) += image-fdt.o
 obj-$(CONFIG_FIT) += image-fit.o
 obj-$(CONFIG_FIT_SIGNATURE) += image-sig.o
index cbdf06f812e4b5a73a3c474d1d15bcf4db59376a..4ea4cb21bed6efa9e76d91c375003cfa27a19af6 100644 (file)
@@ -194,7 +194,7 @@ static int init_func_ram(void)
 
 static int show_dram_config(void)
 {
-       ulong size;
+       unsigned long long size;
 
 #ifdef CONFIG_NR_DRAM_BANKS
        int i;
@@ -708,14 +708,6 @@ static int init_post(void)
 }
 #endif
 
-static int setup_baud_rate(void)
-{
-       /* Ick, can we get rid of this line? */
-       gd->bd->bi_baudrate = gd->baudrate;
-
-       return 0;
-}
-
 static int setup_dram_config(void)
 {
        /* Ram is board specific, so move it to board code ... */
@@ -954,7 +946,6 @@ static init_fnc_t init_sequence_f[] = {
        INIT_FUNC_WATCHDOG_RESET
        setup_board_part2,
 #endif
-       setup_baud_rate,
        display_new_sp,
 #ifdef CONFIG_SYS_EXTBDINFO
        setup_board_extra,
@@ -970,20 +961,22 @@ static init_fnc_t init_sequence_f[] = {
 
 void board_init_f(ulong boot_flags)
 {
-#ifndef CONFIG_X86
+#ifdef CONFIG_SYS_GENERIC_GLOBAL_DATA
+       /*
+        * For some archtectures, global data is initialized and used before
+        * calling this function. The data should be preserved. For others,
+        * CONFIG_SYS_GENERIC_GLOBAL_DATA should be defined and use the stack
+        * here to host global data until relocation.
+        */
        gd_t data;
 
        gd = &data;
-#endif
 
        /*
         * Clear global data before it is accessed at debug print
         * in initcall_run_list. Otherwise the debug print probably
         * get the wrong vaule of gd->have_console.
         */
-#if !defined(CONFIG_CPM2) && !defined(CONFIG_MPC512X) && \
-               !defined(CONFIG_MPC83xx) && !defined(CONFIG_MPC85xx) && \
-               !defined(CONFIG_MPC86xx) && !defined(CONFIG_X86)
        zero_global_data();
 #endif
 
index 238cadb1e1fffc81fc36807da3ed2db1ae521b7a..f283a1616e910df41b65404a221c1470016d7a53 100644 (file)
@@ -148,7 +148,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_mhz("ethspeed",           bd->bi_ethspeed);
 #endif
        printf("IP addr     = %s\n", getenv("ipaddr"));
-       printf("baudrate    = %6u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %6u bps\n", gd->baudrate);
        print_num("relocaddr", gd->relocaddr);
        board_detail();
        return 0;
@@ -176,7 +176,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
 
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -198,7 +198,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #if defined(CONFIG_CMD_NET)
        print_eths();
 #endif
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
        return 0;
 }
 
@@ -231,7 +231,7 @@ int do_bdinfo(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
-       printf("baudrate               = %6u bps\n", bd->bi_baudrate);
+       printf("baudrate               = %6u bps\n", gd->baudrate);
        return 0;
 }
 
@@ -277,7 +277,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -304,7 +304,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -324,7 +324,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -344,7 +344,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -368,7 +368,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #if defined(CONFIG_CMD_NET)
        print_eths();
 #endif
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 #if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
        print_num("TLB addr", gd->arch.tlb_addr);
 #endif
@@ -406,7 +406,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
        return 0;
 }
 
@@ -440,7 +440,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        printf("ip_addr     = %s\n", getenv("ipaddr"));
        print_mhz("ethspeed",       bd->bi_ethspeed);
 #endif
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -490,7 +490,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -512,7 +512,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
 
-       printf("baudrate    = %u bps\n", bd->bi_baudrate);
+       printf("baudrate    = %u bps\n", gd->baudrate);
 
        return 0;
 }
@@ -530,7 +530,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        print_eth(0);
        printf("ip_addr     = %s\n", getenv("ipaddr"));
 #endif
-       printf("baudrate    = %d bps\n", bd->bi_baudrate);
+       printf("baudrate    = %d bps\n", gd->baudrate);
 
        return 0;
 }
index c243a5bd78a92ec55fb7d8f2feefe51f7fc9589a..34b4b583baafc1bb0ca62df3ea89fc7bb2ae2da9 100644 (file)
@@ -222,6 +222,7 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
                         char * const argv[])
 {
        const void *os_hdr;
+       bool ep_found = false;
 
        /* get kernel image header, start address and length */
        os_hdr = boot_get_kernel(cmdtp, flag, argc, argv,
@@ -273,6 +274,18 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
                        return 1;
                }
                break;
+#endif
+#ifdef CONFIG_ANDROID_BOOT_IMAGE
+       case IMAGE_FORMAT_ANDROID:
+               images.os.type = IH_TYPE_KERNEL;
+               images.os.comp = IH_COMP_NONE;
+               images.os.os = IH_OS_LINUX;
+               images.ep = images.os.load;
+               ep_found = true;
+
+               images.os.end = android_image_get_end(os_hdr);
+               images.os.load = android_image_get_kload(os_hdr);
+               break;
 #endif
        default:
                puts("ERROR: unknown image format type!\n");
@@ -293,7 +306,7 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
                        return 1;
                }
 #endif
-       } else {
+       } else if (!ep_found) {
                puts("Could not find kernel entry point!\n");
                return 1;
        }
@@ -388,7 +401,7 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end,
        image_buf = map_sysmem(image_start, image_len);
        switch (comp) {
        case IH_COMP_NONE:
-               if (load == blob_start || load == image_start) {
+               if (load == image_start) {
                        printf("   XIP %s ... ", type_name);
                        no_overlap = 1;
                } else {
@@ -1001,6 +1014,14 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
                images->fit_uname_cfg = fit_uname_config;
                images->fit_noffset_os = os_noffset;
                break;
+#endif
+#ifdef CONFIG_ANDROID_BOOT_IMAGE
+       case IMAGE_FORMAT_ANDROID:
+               printf("## Booting Android Image at 0x%08lx ...\n", img_addr);
+               if (android_image_get_kernel((void *)img_addr, images->verify,
+                                            os_data, os_len))
+                       return NULL;
+               break;
 #endif
        default:
                printf("Wrong Image Format for %s command\n", cmdtp->name);
diff --git a/common/cmd_fastboot.c b/common/cmd_fastboot.c
new file mode 100644 (file)
index 0000000..83fa7bd
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2008 - 2009 Windriver, <www.windriver.com>
+ * Author: Tom Rix <Tom.Rix@windriver.com>
+ *
+ * (C) Copyright 2014 Linaro, Ltd.
+ * Rob Herring <robh@kernel.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <command.h>
+#include <g_dnl.h>
+
+static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+       int ret;
+
+       ret = g_dnl_register("usb_dnl_fastboot");
+       if (ret)
+               return ret;
+
+       while (1) {
+               if (ctrlc())
+                       break;
+               usb_gadget_handle_interrupts();
+       }
+
+       g_dnl_unregister();
+       return CMD_RET_SUCCESS;
+}
+
+U_BOOT_CMD(
+       fastboot,       1,      1,      do_fastboot,
+       "fastboot - enter USB Fastboot protocol",
+       ""
+);
index 010cd24e63dc21f86f0ae1910a4c4fac9d0e20e4..bda5c8f798085093a603ee239c2d6ecc54641a58 100644 (file)
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <command.h>
 #include <fpga.h>
+#include <fs.h>
 #include <malloc.h>
 
 /* Local functions */
@@ -23,6 +24,9 @@ static int fpga_get_op(char *opstr);
 #define FPGA_LOADB  2
 #define FPGA_DUMP   3
 #define FPGA_LOADMK 4
+#define FPGA_LOADP  5
+#define FPGA_LOADBP 6
+#define FPGA_LOADFS 7
 
 /* ------------------------------------------------------------------------- */
 /* command form:
@@ -45,6 +49,10 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
        const char *fit_uname = NULL;
        ulong fit_addr;
 #endif
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+       fpga_fs_info fpga_fsinfo;
+       fpga_fsinfo.fstype = FS_TYPE_ANY;
+#endif
 
        if (devstr)
                dev = (int) simple_strtoul(devstr, NULL, 16);
@@ -52,6 +60,14 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
                fpga_data = (void *)simple_strtoul(datastr, NULL, 16);
 
        switch (argc) {
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+       case 9:
+               fpga_fsinfo.blocksize = (unsigned int)
+                                            simple_strtoul(argv[5], NULL, 16);
+               fpga_fsinfo.interface = argv[6];
+               fpga_fsinfo.dev_part = argv[7];
+               fpga_fsinfo.filename = argv[8];
+#endif
        case 5:         /* fpga <op> <dev> <data> <datasize> */
                data_size = simple_strtoul(argv[4], NULL, 16);
 
@@ -120,16 +136,27 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
        case FPGA_NONE:
        case FPGA_INFO:
                break;
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+       case FPGA_LOADFS:
+               /* Blocksize can be zero */
+               if (!fpga_fsinfo.interface || !fpga_fsinfo.dev_part ||
+                   !fpga_fsinfo.filename)
+                       wrong_parms = 1;
+#endif
        case FPGA_LOAD:
+       case FPGA_LOADP:
        case FPGA_LOADB:
+       case FPGA_LOADBP:
        case FPGA_DUMP:
                if (!fpga_data || !data_size)
                        wrong_parms = 1;
                break;
+#if defined(CONFIG_CMD_FPGA_LOADMK)
        case FPGA_LOADMK:
                if (!fpga_data)
                        wrong_parms = 1;
                break;
+#endif
        }
 
        if (wrong_parms) {
@@ -146,13 +173,32 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
                break;
 
        case FPGA_LOAD:
-               rc = fpga_load(dev, fpga_data, data_size);
+               rc = fpga_load(dev, fpga_data, data_size, BIT_FULL);
+               break;
+
+#if defined(CONFIG_CMD_FPGA_LOADP)
+       case FPGA_LOADP:
+               rc = fpga_load(dev, fpga_data, data_size, BIT_PARTIAL);
                break;
+#endif
 
        case FPGA_LOADB:
-               rc = fpga_loadbitstream(dev, fpga_data, data_size);
+               rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_FULL);
+               break;
+
+#if defined(CONFIG_CMD_FPGA_LOADBP)
+       case FPGA_LOADBP:
+               rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_PARTIAL);
+               break;
+#endif
+
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+       case FPGA_LOADFS:
+               rc = fpga_fsload(dev, fpga_data, data_size, &fpga_fsinfo);
                break;
+#endif
 
+#if defined(CONFIG_CMD_FPGA_LOADMK)
        case FPGA_LOADMK:
                switch (genimg_get_format(fpga_data)) {
                case IMAGE_FORMAT_LEGACY:
@@ -179,7 +225,8 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
                                        data = (ulong)image_get_data(hdr);
                                        data_size = image_get_data_size(hdr);
                                }
-                               rc = fpga_load(dev, (void *)data, data_size);
+                               rc = fpga_load(dev, (void *)data, data_size,
+                                              BIT_FULL);
                        }
                        break;
 #if defined(CONFIG_FIT)
@@ -221,7 +268,8 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
                                        return 1;
                                }
 
-                               rc = fpga_load(dev, fit_data, data_size);
+                               rc = fpga_load(dev, fit_data, data_size,
+                                              BIT_FULL);
                        }
                        break;
 #endif
@@ -231,6 +279,7 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
                        break;
                }
                break;
+#endif
 
        case FPGA_DUMP:
                rc = fpga_dump(dev, fpga_data, data_size);
@@ -257,8 +306,22 @@ static int fpga_get_op(char *opstr)
                op = FPGA_LOADB;
        else if (!strcmp("load", opstr))
                op = FPGA_LOAD;
+#if defined(CONFIG_CMD_FPGA_LOADP)
+       else if (!strcmp("loadp", opstr))
+               op = FPGA_LOADP;
+#endif
+#if defined(CONFIG_CMD_FPGA_LOADBP)
+       else if (!strcmp("loadbp", opstr))
+               op = FPGA_LOADBP;
+#endif
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+       else if (!strcmp("loadfs", opstr))
+               op = FPGA_LOADFS;
+#endif
+#if defined(CONFIG_CMD_FPGA_LOADMK)
        else if (!strcmp("loadmk", opstr))
                op = FPGA_LOADMK;
+#endif
        else if (!strcmp("dump", opstr))
                op = FPGA_DUMP;
 
@@ -268,19 +331,39 @@ static int fpga_get_op(char *opstr)
        return op;
 }
 
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+U_BOOT_CMD(fpga, 9, 1, do_fpga,
+#else
 U_BOOT_CMD(fpga, 6, 1, do_fpga,
+#endif
           "loadable FPGA image support",
           "[operation type] [device number] [image address] [image size]\n"
           "fpga operations:\n"
           "  dump\t[dev]\t\t\tLoad device to memory buffer\n"
           "  info\t[dev]\t\t\tlist known device information\n"
           "  load\t[dev] [address] [size]\tLoad device from memory buffer\n"
+#if defined(CONFIG_CMD_FPGA_LOADP)
+          "  loadp\t[dev] [address] [size]\t"
+          "Load device from memory buffer with partial bitstream\n"
+#endif
           "  loadb\t[dev] [address] [size]\t"
           "Load device from bitstream buffer (Xilinx only)\n"
+#if defined(CONFIG_CMD_FPGA_LOADBP)
+          "  loadbp\t[dev] [address] [size]\t"
+          "Load device from bitstream buffer with partial bitstream"
+          "(Xilinx only)\n"
+#endif
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+          "Load device from filesystem (FAT by default) (Xilinx only)\n"
+          "  loadfs [dev] [address] [image size] [blocksize] <interface>\n"
+          "        [<dev[:part]>] <filename>\n"
+#endif
+#if defined(CONFIG_CMD_FPGA_LOADMK)
           "  loadmk [dev] [address]\tLoad device generated with mkimage"
 #if defined(CONFIG_FIT)
           "\n"
           "\tFor loadmk operating on FIT format uImage address must include\n"
           "\tsubimage unit name in the form of addr:<subimg_uname>"
 #endif
+#endif
 );
index 0df57dbc8071f123fedf009a1e440b20839aec1a..abab9789b0df4f80c9b723ef0ad03ad04c132732 100644 (file)
@@ -33,15 +33,8 @@ static int confirm_prog(void)
                                        "what you are doing!\n"
                        "\nReally perform this fuse programming? <y/N>\n");
 
-       if (getc() == 'y') {
-               int c;
-
-               putc('y');
-               c = getc();
-               putc('\n');
-               if (c == '\r')
-                       return 1;
-       }
+       if (confirm_yesno())
+               return 1;
 
        puts("Fuse programming aborted\n");
        return 0;
index c1916c9b56a6456bebb115367308d8e03c5f268a..eea337506c3f21829c3a4dff9e832f26d505ac93 100644 (file)
@@ -71,12 +71,6 @@ U_BOOT_CMD(
 );
 #else /* !CONFIG_GENERIC_MMC */
 
-enum mmc_state {
-       MMC_INVALID,
-       MMC_READ,
-       MMC_WRITE,
-       MMC_ERASE,
-};
 static void print_mmcinfo(struct mmc *mmc)
 {
        printf("Device: %s\n", mmc->cfg->name);
@@ -98,7 +92,18 @@ static void print_mmcinfo(struct mmc *mmc)
 
        printf("Bus Width: %d-bit\n", mmc->bus_width);
 }
-
+static struct mmc *init_mmc_device(int dev)
+{
+       struct mmc *mmc;
+       mmc = find_mmc_device(dev);
+       if (!mmc) {
+               printf("no mmc device at slot %x\n", dev);
+               return NULL;
+       }
+       if (mmc_init(mmc))
+               return NULL;
+       return mmc;
+}
 static int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        struct mmc *mmc;
@@ -112,351 +117,537 @@ static int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                }
        }
 
-       mmc = find_mmc_device(curr_device);
+       mmc = init_mmc_device(curr_device);
+       if (!mmc)
+               return CMD_RET_FAILURE;
 
-       if (mmc) {
-               mmc_init(mmc);
+       print_mmcinfo(mmc);
+       return CMD_RET_SUCCESS;
+}
 
-               print_mmcinfo(mmc);
-               return 0;
-       } else {
-               printf("no mmc device at slot %x\n", curr_device);
+#ifdef CONFIG_SUPPORT_EMMC_RPMB
+static int confirm_key_prog(void)
+{
+       puts("Warning: Programming authentication key can be done only once !\n"
+            "         Use this command only if you are sure of what you are doing,\n"
+            "Really perform the key programming? <y/N> ");
+       if (confirm_yesno())
                return 1;
+
+       puts("Authentication key programming aborted\n");
+       return 0;
+}
+static int do_mmcrpmb_key(cmd_tbl_t *cmdtp, int flag,
+                         int argc, char * const argv[])
+{
+       void *key_addr;
+       struct mmc *mmc = find_mmc_device(curr_device);
+
+       if (argc != 2)
+               return CMD_RET_USAGE;
+
+       key_addr = (void *)simple_strtoul(argv[1], NULL, 16);
+       if (!confirm_key_prog())
+               return CMD_RET_FAILURE;
+       if (mmc_rpmb_set_key(mmc, key_addr)) {
+               printf("ERROR - Key already programmed ?\n");
+               return CMD_RET_FAILURE;
        }
+       return CMD_RET_SUCCESS;
 }
+static int do_mmcrpmb_read(cmd_tbl_t *cmdtp, int flag,
+                          int argc, char * const argv[])
+{
+       u16 blk, cnt;
+       void *addr;
+       int n;
+       void *key_addr = NULL;
+       struct mmc *mmc = find_mmc_device(curr_device);
 
-U_BOOT_CMD(
-       mmcinfo, 1, 0, do_mmcinfo,
-       "display MMC info",
-       "- display info of the current MMC device"
-);
+       if (argc < 4)
+               return CMD_RET_USAGE;
 
-static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+       addr = (void *)simple_strtoul(argv[1], NULL, 16);
+       blk = simple_strtoul(argv[2], NULL, 16);
+       cnt = simple_strtoul(argv[3], NULL, 16);
+
+       if (argc == 5)
+               key_addr = (void *)simple_strtoul(argv[4], NULL, 16);
+
+       printf("\nMMC RPMB read: dev # %d, block # %d, count %d ... ",
+              curr_device, blk, cnt);
+       n =  mmc_rpmb_read(mmc, addr, blk, cnt, key_addr);
+
+       printf("%d RPMB blocks read: %s\n", n, (n == cnt) ? "OK" : "ERROR");
+       if (n != cnt)
+               return CMD_RET_FAILURE;
+       return CMD_RET_SUCCESS;
+}
+static int do_mmcrpmb_write(cmd_tbl_t *cmdtp, int flag,
+                           int argc, char * const argv[])
 {
-       enum mmc_state state;
+       u16 blk, cnt;
+       void *addr;
+       int n;
+       void *key_addr;
+       struct mmc *mmc = find_mmc_device(curr_device);
 
-       if (argc < 2)
+       if (argc != 5)
                return CMD_RET_USAGE;
 
-       if (curr_device < 0) {
-               if (get_mmc_num() > 0)
-                       curr_device = 0;
-               else {
-                       puts("No MMC device available\n");
-                       return 1;
-               }
+       addr = (void *)simple_strtoul(argv[1], NULL, 16);
+       blk = simple_strtoul(argv[2], NULL, 16);
+       cnt = simple_strtoul(argv[3], NULL, 16);
+       key_addr = (void *)simple_strtoul(argv[4], NULL, 16);
+
+       printf("\nMMC RPMB write: dev # %d, block # %d, count %d ... ",
+              curr_device, blk, cnt);
+       n =  mmc_rpmb_write(mmc, addr, blk, cnt, key_addr);
+
+       printf("%d RPMB blocks written: %s\n", n, (n == cnt) ? "OK" : "ERROR");
+       if (n != cnt)
+               return CMD_RET_FAILURE;
+       return CMD_RET_SUCCESS;
+}
+static int do_mmcrpmb_counter(cmd_tbl_t *cmdtp, int flag,
+                             int argc, char * const argv[])
+{
+       unsigned long counter;
+       struct mmc *mmc = find_mmc_device(curr_device);
+
+       if (mmc_rpmb_get_counter(mmc, &counter))
+               return CMD_RET_FAILURE;
+       printf("RPMB Write counter= %lx\n", counter);
+       return CMD_RET_SUCCESS;
+}
+
+static cmd_tbl_t cmd_rpmb[] = {
+       U_BOOT_CMD_MKENT(key, 2, 0, do_mmcrpmb_key, "", ""),
+       U_BOOT_CMD_MKENT(read, 5, 1, do_mmcrpmb_read, "", ""),
+       U_BOOT_CMD_MKENT(write, 5, 0, do_mmcrpmb_write, "", ""),
+       U_BOOT_CMD_MKENT(counter, 1, 1, do_mmcrpmb_counter, "", ""),
+};
+
+static int do_mmcrpmb(cmd_tbl_t *cmdtp, int flag,
+                     int argc, char * const argv[])
+{
+       cmd_tbl_t *cp;
+       struct mmc *mmc;
+       char original_part;
+       int ret;
+
+       cp = find_cmd_tbl(argv[1], cmd_rpmb, ARRAY_SIZE(cmd_rpmb));
+
+       /* Drop the rpmb subcommand */
+       argc--;
+       argv++;
+
+       if (cp == NULL || argc > cp->maxargs)
+               return CMD_RET_USAGE;
+       if (flag == CMD_FLAG_REPEAT && !cp->repeatable)
+               return CMD_RET_SUCCESS;
+
+       mmc = init_mmc_device(curr_device);
+       if (!mmc)
+               return CMD_RET_FAILURE;
+
+       if (!(mmc->version & MMC_VERSION_MMC)) {
+               printf("It is not a EMMC device\n");
+               return CMD_RET_FAILURE;
+       }
+       if (mmc->version < MMC_VERSION_4_41) {
+               printf("RPMB not supported before version 4.41\n");
+               return CMD_RET_FAILURE;
+       }
+       /* Switch to the RPMB partition */
+       original_part = mmc->part_num;
+       if (mmc->part_num != MMC_PART_RPMB) {
+               if (mmc_switch_part(curr_device, MMC_PART_RPMB) != 0)
+                       return CMD_RET_FAILURE;
+               mmc->part_num = MMC_PART_RPMB;
        }
+       ret = cp->cmd(cmdtp, flag, argc, argv);
 
-       if (strcmp(argv[1], "rescan") == 0) {
-               struct mmc *mmc;
+       /* Return to original partition */
+       if (mmc->part_num != original_part) {
+               if (mmc_switch_part(curr_device, original_part) != 0)
+                       return CMD_RET_FAILURE;
+               mmc->part_num = original_part;
+       }
+       return ret;
+}
+#endif
 
-               if (argc != 2)
-                       return CMD_RET_USAGE;
+static int do_mmc_read(cmd_tbl_t *cmdtp, int flag,
+                      int argc, char * const argv[])
+{
+       struct mmc *mmc;
+       u32 blk, cnt, n;
+       void *addr;
 
-               mmc = find_mmc_device(curr_device);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", curr_device);
-                       return 1;
-               }
+       if (argc != 4)
+               return CMD_RET_USAGE;
 
-               mmc->has_init = 0;
+       addr = (void *)simple_strtoul(argv[1], NULL, 16);
+       blk = simple_strtoul(argv[2], NULL, 16);
+       cnt = simple_strtoul(argv[3], NULL, 16);
 
-               if (mmc_init(mmc))
-                       return 1;
-               else
-                       return 0;
-       } else if (strcmp(argv[1], "part") == 0) {
-               block_dev_desc_t *mmc_dev;
-               struct mmc *mmc;
+       mmc = init_mmc_device(curr_device);
+       if (!mmc)
+               return CMD_RET_FAILURE;
 
-               if (argc != 2)
-                       return CMD_RET_USAGE;
+       printf("\nMMC read: dev # %d, block # %d, count %d ... ",
+              curr_device, blk, cnt);
 
-               mmc = find_mmc_device(curr_device);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", curr_device);
-                       return 1;
-               }
-               mmc_init(mmc);
-               mmc_dev = mmc_get_dev(curr_device);
-               if (mmc_dev != NULL &&
-                               mmc_dev->type != DEV_TYPE_UNKNOWN) {
-                       print_part(mmc_dev);
-                       return 0;
-               }
+       n = mmc->block_dev.block_read(curr_device, blk, cnt, addr);
+       /* flush cache after read */
+       flush_cache((ulong)addr, cnt * 512); /* FIXME */
+       printf("%d blocks read: %s\n", n, (n == cnt) ? "OK" : "ERROR");
 
-               puts("get mmc type error!\n");
-               return 1;
-       } else if (strcmp(argv[1], "list") == 0) {
-               if (argc != 2)
-                       return CMD_RET_USAGE;
-               print_mmc_devices('\n');
-               return 0;
-       } else if (strcmp(argv[1], "dev") == 0) {
-               int dev, part = -1;
-               struct mmc *mmc;
-
-               if (argc == 2)
-                       dev = curr_device;
-               else if (argc == 3)
-                       dev = simple_strtoul(argv[2], NULL, 10);
-               else if (argc == 4) {
-                       dev = (int)simple_strtoul(argv[2], NULL, 10);
-                       part = (int)simple_strtoul(argv[3], NULL, 10);
-                       if (part > PART_ACCESS_MASK) {
-                               printf("#part_num shouldn't be larger"
-                                       " than %d\n", PART_ACCESS_MASK);
-                               return 1;
-                       }
-               } else
-                       return CMD_RET_USAGE;
+       return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
+}
+static int do_mmc_write(cmd_tbl_t *cmdtp, int flag,
+                       int argc, char * const argv[])
+{
+       struct mmc *mmc;
+       u32 blk, cnt, n;
+       void *addr;
 
-               mmc = find_mmc_device(dev);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", dev);
-                       return 1;
-               }
+       if (argc != 4)
+               return CMD_RET_USAGE;
 
-               mmc_init(mmc);
-               if (part != -1) {
-                       int ret;
-                       if (mmc->part_config == MMCPART_NOAVAILABLE) {
-                               printf("Card doesn't support part_switch\n");
-                               return 1;
-                       }
+       addr = (void *)simple_strtoul(argv[1], NULL, 16);
+       blk = simple_strtoul(argv[2], NULL, 16);
+       cnt = simple_strtoul(argv[3], NULL, 16);
 
-                       if (part != mmc->part_num) {
-                               ret = mmc_switch_part(dev, part);
-                               if (!ret)
-                                       mmc->part_num = part;
+       mmc = init_mmc_device(curr_device);
+       if (!mmc)
+               return CMD_RET_FAILURE;
 
-                               printf("switch to partitions #%d, %s\n",
-                                               part, (!ret) ? "OK" : "ERROR");
-                       }
-               }
-               curr_device = dev;
-               if (mmc->part_config == MMCPART_NOAVAILABLE)
-                       printf("mmc%d is current device\n", curr_device);
-               else
-                       printf("mmc%d(part %d) is current device\n",
-                               curr_device, mmc->part_num);
+       printf("\nMMC write: dev # %d, block # %d, count %d ... ",
+              curr_device, blk, cnt);
 
-               return 0;
-#ifdef CONFIG_SUPPORT_EMMC_BOOT
-       } else if (strcmp(argv[1], "partconf") == 0) {
-               int dev;
-               struct mmc *mmc;
-               u8 ack, part_num, access;
-
-               if (argc == 6) {
-                       dev = simple_strtoul(argv[2], NULL, 10);
-                       ack = simple_strtoul(argv[3], NULL, 10);
-                       part_num = simple_strtoul(argv[4], NULL, 10);
-                       access = simple_strtoul(argv[5], NULL, 10);
-               } else {
-                       return CMD_RET_USAGE;
-               }
+       if (mmc_getwp(mmc) == 1) {
+               printf("Error: card is write protected!\n");
+               return CMD_RET_FAILURE;
+       }
+       n = mmc->block_dev.block_write(curr_device, blk, cnt, addr);
+       printf("%d blocks written: %s\n", n, (n == cnt) ? "OK" : "ERROR");
 
-               mmc = find_mmc_device(dev);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", dev);
-                       return 1;
-               }
+       return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
+}
+static int do_mmc_erase(cmd_tbl_t *cmdtp, int flag,
+                       int argc, char * const argv[])
+{
+       struct mmc *mmc;
+       u32 blk, cnt, n;
 
-               if (IS_SD(mmc)) {
-                       puts("PARTITION_CONFIG only exists on eMMC\n");
-                       return 1;
-               }
+       if (argc != 3)
+               return CMD_RET_USAGE;
 
-               /* acknowledge to be sent during boot operation */
-               return mmc_set_part_conf(mmc, ack, part_num, access);
-       } else if (strcmp(argv[1], "bootbus") == 0) {
-               int dev;
-               struct mmc *mmc;
-               u8 width, reset, mode;
-
-               if (argc == 6) {
-                       dev = simple_strtoul(argv[2], NULL, 10);
-                       width = simple_strtoul(argv[3], NULL, 10);
-                       reset = simple_strtoul(argv[4], NULL, 10);
-                       mode = simple_strtoul(argv[5], NULL, 10);
-               } else {
-                       return CMD_RET_USAGE;
-               }
+       blk = simple_strtoul(argv[1], NULL, 16);
+       cnt = simple_strtoul(argv[2], NULL, 16);
 
-               mmc = find_mmc_device(dev);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", dev);
-                       return 1;
-               }
+       mmc = init_mmc_device(curr_device);
+       if (!mmc)
+               return CMD_RET_FAILURE;
 
-               if (IS_SD(mmc)) {
-                       puts("BOOT_BUS_WIDTH only exists on eMMC\n");
-                       return 1;
-               }
+       printf("\nMMC erase: dev # %d, block # %d, count %d ... ",
+              curr_device, blk, cnt);
 
-               /* acknowledge to be sent during boot operation */
-               return mmc_set_boot_bus_width(mmc, width, reset, mode);
-       } else if (strcmp(argv[1], "bootpart-resize") == 0) {
-               int dev;
-               struct mmc *mmc;
-               u32 bootsize, rpmbsize;
-
-               if (argc == 5) {
-                       dev = simple_strtoul(argv[2], NULL, 10);
-                       bootsize = simple_strtoul(argv[3], NULL, 10);
-                       rpmbsize = simple_strtoul(argv[4], NULL, 10);
-               } else {
-                       return CMD_RET_USAGE;
-               }
+       if (mmc_getwp(mmc) == 1) {
+               printf("Error: card is write protected!\n");
+               return CMD_RET_FAILURE;
+       }
+       n = mmc->block_dev.block_erase(curr_device, blk, cnt);
+       printf("%d blocks erased: %s\n", n, (n == cnt) ? "OK" : "ERROR");
 
-               mmc = find_mmc_device(dev);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", dev);
-                       return 1;
-               }
+       return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
+}
+static int do_mmc_rescan(cmd_tbl_t *cmdtp, int flag,
+                        int argc, char * const argv[])
+{
+       struct mmc *mmc;
 
-               if (IS_SD(mmc)) {
-                       printf("It is not a EMMC device\n");
-                       return 1;
-               }
+       mmc = find_mmc_device(curr_device);
+       if (!mmc) {
+               printf("no mmc device at slot %x\n", curr_device);
+               return CMD_RET_FAILURE;
+       }
 
-               if (0 == mmc_boot_partition_size_change(mmc,
-                                                       bootsize, rpmbsize)) {
-                       printf("EMMC boot partition Size %d MB\n", bootsize);
-                       printf("EMMC RPMB partition Size %d MB\n", rpmbsize);
-                       return 0;
-               } else {
-                       printf("EMMC boot partition Size change Failed.\n");
-                       return 1;
-               }
-       } else if (strcmp(argv[1], "rst-function") == 0) {
-               /*
-                * Set the RST_n_ENABLE bit of RST_n_FUNCTION
-                * The only valid values are 0x0, 0x1 and 0x2 and writing
-                * a value of 0x1 or 0x2 sets the value permanently.
-                */
-               int dev;
-               struct mmc *mmc;
-               u8 enable;
-
-               if (argc == 4) {
-                       dev = simple_strtoul(argv[2], NULL, 10);
-                       enable = simple_strtoul(argv[3], NULL, 10);
-               } else {
-                       return CMD_RET_USAGE;
-               }
+       mmc->has_init = 0;
 
-               if (enable > 2 || enable < 0) {
-                       puts("Invalid RST_n_ENABLE value\n");
-                       return CMD_RET_USAGE;
-               }
+       if (mmc_init(mmc))
+               return CMD_RET_FAILURE;
+       return CMD_RET_SUCCESS;
+}
+static int do_mmc_part(cmd_tbl_t *cmdtp, int flag,
+                      int argc, char * const argv[])
+{
+       block_dev_desc_t *mmc_dev;
+       struct mmc *mmc;
 
-               mmc = find_mmc_device(dev);
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", dev);
-                       return 1;
+       mmc = init_mmc_device(curr_device);
+       if (!mmc)
+               return CMD_RET_FAILURE;
+
+       mmc_dev = mmc_get_dev(curr_device);
+       if (mmc_dev != NULL && mmc_dev->type != DEV_TYPE_UNKNOWN) {
+               print_part(mmc_dev);
+               return CMD_RET_SUCCESS;
+       }
+
+       puts("get mmc type error!\n");
+       return CMD_RET_FAILURE;
+}
+static int do_mmc_dev(cmd_tbl_t *cmdtp, int flag,
+                     int argc, char * const argv[])
+{
+       int dev, part = -1, ret;
+       struct mmc *mmc;
+
+       if (argc == 1) {
+               dev = curr_device;
+       } else if (argc == 2) {
+               dev = simple_strtoul(argv[1], NULL, 10);
+       } else if (argc == 3) {
+               dev = (int)simple_strtoul(argv[1], NULL, 10);
+               part = (int)simple_strtoul(argv[2], NULL, 10);
+               if (part > PART_ACCESS_MASK) {
+                       printf("#part_num shouldn't be larger than %d\n",
+                              PART_ACCESS_MASK);
+                       return CMD_RET_FAILURE;
                }
+       } else {
+               return CMD_RET_USAGE;
+       }
+
+       mmc = init_mmc_device(dev);
+       if (!mmc)
+               return CMD_RET_FAILURE;
 
-               if (IS_SD(mmc)) {
-                       puts("RST_n_FUNCTION only exists on eMMC\n");
+       if (part != -1) {
+               ret = mmc_select_hwpart(dev, part);
+               printf("switch to partitions #%d, %s\n",
+                       part, (!ret) ? "OK" : "ERROR");
+               if (ret)
                        return 1;
-               }
+       }
+       curr_device = dev;
+       if (mmc->part_config == MMCPART_NOAVAILABLE)
+               printf("mmc%d is current device\n", curr_device);
+       else
+               printf("mmc%d(part %d) is current device\n",
+                      curr_device, mmc->part_num);
 
-               return mmc_set_rst_n_function(mmc, enable);
-#endif /* CONFIG_SUPPORT_EMMC_BOOT */
+       return CMD_RET_SUCCESS;
+}
+static int do_mmc_list(cmd_tbl_t *cmdtp, int flag,
+                      int argc, char * const argv[])
+{
+       print_mmc_devices('\n');
+       return CMD_RET_SUCCESS;
+}
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+static int do_mmc_bootbus(cmd_tbl_t *cmdtp, int flag,
+                         int argc, char * const argv[])
+{
+       int dev;
+       struct mmc *mmc;
+       u8 width, reset, mode;
+
+       if (argc != 5)
+               return CMD_RET_USAGE;
+       dev = simple_strtoul(argv[1], NULL, 10);
+       width = simple_strtoul(argv[2], NULL, 10);
+       reset = simple_strtoul(argv[3], NULL, 10);
+       mode = simple_strtoul(argv[4], NULL, 10);
+
+       mmc = init_mmc_device(dev);
+       if (!mmc)
+               return CMD_RET_FAILURE;
+
+       if (IS_SD(mmc)) {
+               puts("BOOT_BUS_WIDTH only exists on eMMC\n");
+               return CMD_RET_FAILURE;
        }
 
-       else if (argc == 3 && strcmp(argv[1], "setdsr") == 0) {
-               struct mmc *mmc = find_mmc_device(curr_device);
-               u32 val = simple_strtoul(argv[2], NULL, 16);
-               int ret;
+       /* acknowledge to be sent during boot operation */
+       return mmc_set_boot_bus_width(mmc, width, reset, mode);
+}
+static int do_mmc_boot_resize(cmd_tbl_t *cmdtp, int flag,
+                             int argc, char * const argv[])
+{
+       int dev;
+       struct mmc *mmc;
+       u32 bootsize, rpmbsize;
+
+       if (argc != 4)
+               return CMD_RET_USAGE;
+       dev = simple_strtoul(argv[1], NULL, 10);
+       bootsize = simple_strtoul(argv[2], NULL, 10);
+       rpmbsize = simple_strtoul(argv[3], NULL, 10);
 
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", curr_device);
-                       return 1;
-               }
-               ret = mmc_set_dsr(mmc, val);
-               printf("set dsr %s\n", (!ret) ? "OK, force rescan" : "ERROR");
-               if (!ret) {
-                       mmc->has_init = 0;
-                       if (mmc_init(mmc))
-                               return 1;
-                       else
-                               return 0;
-               }
-               return ret;
+       mmc = init_mmc_device(dev);
+       if (!mmc)
+               return CMD_RET_FAILURE;
+
+       if (IS_SD(mmc)) {
+               printf("It is not a EMMC device\n");
+               return CMD_RET_FAILURE;
        }
 
-       state = MMC_INVALID;
-       if (argc == 5 && strcmp(argv[1], "read") == 0)
-               state = MMC_READ;
-       else if (argc == 5 && strcmp(argv[1], "write") == 0)
-               state = MMC_WRITE;
-       else if (argc == 4 && strcmp(argv[1], "erase") == 0)
-               state = MMC_ERASE;
-
-       if (state != MMC_INVALID) {
-               struct mmc *mmc = find_mmc_device(curr_device);
-               int idx = 2;
-               u32 blk, cnt, n;
-               void *addr;
-
-               if (state != MMC_ERASE) {
-                       addr = (void *)simple_strtoul(argv[idx], NULL, 16);
-                       ++idx;
-               } else
-                       addr = NULL;
-               blk = simple_strtoul(argv[idx], NULL, 16);
-               cnt = simple_strtoul(argv[idx + 1], NULL, 16);
-
-               if (!mmc) {
-                       printf("no mmc device at slot %x\n", curr_device);
-                       return 1;
-               }
+       if (mmc_boot_partition_size_change(mmc, bootsize, rpmbsize)) {
+               printf("EMMC boot partition Size change Failed.\n");
+               return CMD_RET_FAILURE;
+       }
+
+       printf("EMMC boot partition Size %d MB\n", bootsize);
+       printf("EMMC RPMB partition Size %d MB\n", rpmbsize);
+       return CMD_RET_SUCCESS;
+}
+static int do_mmc_partconf(cmd_tbl_t *cmdtp, int flag,
+                          int argc, char * const argv[])
+{
+       int dev;
+       struct mmc *mmc;
+       u8 ack, part_num, access;
 
-               printf("\nMMC %s: dev # %d, block # %d, count %d ... ",
-                               argv[1], curr_device, blk, cnt);
+       if (argc != 5)
+               return CMD_RET_USAGE;
 
-               mmc_init(mmc);
+       dev = simple_strtoul(argv[1], NULL, 10);
+       ack = simple_strtoul(argv[2], NULL, 10);
+       part_num = simple_strtoul(argv[3], NULL, 10);
+       access = simple_strtoul(argv[4], NULL, 10);
 
-               if ((state == MMC_WRITE || state == MMC_ERASE)) {
-                       if (mmc_getwp(mmc) == 1) {
-                               printf("Error: card is write protected!\n");
-                               return 1;
-                       }
-               }
+       mmc = init_mmc_device(dev);
+       if (!mmc)
+               return CMD_RET_FAILURE;
 
-               switch (state) {
-               case MMC_READ:
-                       n = mmc->block_dev.block_read(curr_device, blk,
-                                                     cnt, addr);
-                       /* flush cache after read */
-                       flush_cache((ulong)addr, cnt * 512); /* FIXME */
-                       break;
-               case MMC_WRITE:
-                       n = mmc->block_dev.block_write(curr_device, blk,
-                                                     cnt, addr);
-                       break;
-               case MMC_ERASE:
-                       n = mmc->block_dev.block_erase(curr_device, blk, cnt);
-                       break;
-               default:
-                       BUG();
-               }
+       if (IS_SD(mmc)) {
+               puts("PARTITION_CONFIG only exists on eMMC\n");
+               return CMD_RET_FAILURE;
+       }
+
+       /* acknowledge to be sent during boot operation */
+       return mmc_set_part_conf(mmc, ack, part_num, access);
+}
+static int do_mmc_rst_func(cmd_tbl_t *cmdtp, int flag,
+                          int argc, char * const argv[])
+{
+       int dev;
+       struct mmc *mmc;
+       u8 enable;
+
+       /*
+        * Set the RST_n_ENABLE bit of RST_n_FUNCTION
+        * The only valid values are 0x0, 0x1 and 0x2 and writing
+        * a value of 0x1 or 0x2 sets the value permanently.
+        */
+       if (argc != 3)
+               return CMD_RET_USAGE;
+
+       dev = simple_strtoul(argv[1], NULL, 10);
+       enable = simple_strtoul(argv[2], NULL, 10);
+
+       if (enable > 2 || enable < 0) {
+               puts("Invalid RST_n_ENABLE value\n");
+               return CMD_RET_USAGE;
+       }
+
+       mmc = init_mmc_device(dev);
+       if (!mmc)
+               return CMD_RET_FAILURE;
+
+       if (IS_SD(mmc)) {
+               puts("RST_n_FUNCTION only exists on eMMC\n");
+               return CMD_RET_FAILURE;
+       }
 
-               printf("%d blocks %s: %s\n",
-                               n, argv[1], (n == cnt) ? "OK" : "ERROR");
-               return (n == cnt) ? 0 : 1;
+       return mmc_set_rst_n_function(mmc, enable);
+}
+#endif
+static int do_mmc_setdsr(cmd_tbl_t *cmdtp, int flag,
+                        int argc, char * const argv[])
+{
+       struct mmc *mmc;
+       u32 val;
+       int ret;
+
+       if (argc != 2)
+               return CMD_RET_USAGE;
+       val = simple_strtoul(argv[2], NULL, 16);
+
+       mmc = find_mmc_device(curr_device);
+       if (!mmc) {
+               printf("no mmc device at slot %x\n", curr_device);
+               return CMD_RET_FAILURE;
+       }
+       ret = mmc_set_dsr(mmc, val);
+       printf("set dsr %s\n", (!ret) ? "OK, force rescan" : "ERROR");
+       if (!ret) {
+               mmc->has_init = 0;
+               if (mmc_init(mmc))
+                       return CMD_RET_FAILURE;
+               else
+                       return CMD_RET_SUCCESS;
        }
+       return ret;
+}
+
+static cmd_tbl_t cmd_mmc[] = {
+       U_BOOT_CMD_MKENT(info, 1, 0, do_mmcinfo, "", ""),
+       U_BOOT_CMD_MKENT(read, 4, 1, do_mmc_read, "", ""),
+       U_BOOT_CMD_MKENT(write, 4, 0, do_mmc_write, "", ""),
+       U_BOOT_CMD_MKENT(erase, 3, 0, do_mmc_erase, "", ""),
+       U_BOOT_CMD_MKENT(rescan, 1, 1, do_mmc_rescan, "", ""),
+       U_BOOT_CMD_MKENT(part, 1, 1, do_mmc_part, "", ""),
+       U_BOOT_CMD_MKENT(dev, 3, 0, do_mmc_dev, "", ""),
+       U_BOOT_CMD_MKENT(list, 1, 1, do_mmc_list, "", ""),
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+       U_BOOT_CMD_MKENT(bootbus, 5, 0, do_mmc_bootbus, "", ""),
+       U_BOOT_CMD_MKENT(bootpart-resize, 3, 0, do_mmc_boot_resize, "", ""),
+       U_BOOT_CMD_MKENT(partconf, 5, 0, do_mmc_partconf, "", ""),
+       U_BOOT_CMD_MKENT(rst-function, 3, 0, do_mmc_rst_func, "", ""),
+#endif
+#ifdef CONFIG_SUPPORT_EMMC_RPMB
+       U_BOOT_CMD_MKENT(rpmb, CONFIG_SYS_MAXARGS, 1, do_mmcrpmb, "", ""),
+#endif
+       U_BOOT_CMD_MKENT(setdsr, 2, 0, do_mmc_setdsr, "", ""),
+};
+
+static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       cmd_tbl_t *cp;
+
+       cp = find_cmd_tbl(argv[1], cmd_mmc, ARRAY_SIZE(cmd_mmc));
+
+       /* Drop the mmc command */
+       argc--;
+       argv++;
+
+       if (cp == NULL || argc > cp->maxargs)
+               return CMD_RET_USAGE;
+       if (flag == CMD_FLAG_REPEAT && !cp->repeatable)
+               return CMD_RET_SUCCESS;
 
-       return CMD_RET_USAGE;
+       if (curr_device < 0) {
+               if (get_mmc_num() > 0) {
+                       curr_device = 0;
+               } else {
+                       puts("No MMC device available\n");
+                       return CMD_RET_FAILURE;
+               }
+       }
+       return cp->cmd(cmdtp, flag, argc, argv);
 }
 
 U_BOOT_CMD(
-       mmc, 6, 1, do_mmcops,
+       mmc, 7, 1, do_mmcops,
        "MMC sub system",
-       "read addr blk# cnt\n"
+       "info - display info of the current MMC device\n"
+       "mmc read addr blk# cnt\n"
        "mmc write addr blk# cnt\n"
        "mmc erase blk# cnt\n"
        "mmc rescan\n"
@@ -474,6 +665,20 @@ U_BOOT_CMD(
        " - Change the RST_n_FUNCTION field of the specified device\n"
        "   WARNING: This is a write-once field and 0 / 1 / 2 are the only valid values.\n"
 #endif
-       "mmc setdsr - set DSR register value\n"
+#ifdef CONFIG_SUPPORT_EMMC_RPMB
+       "mmc rpmb read addr blk# cnt [address of auth-key] - block size is 256 bytes\n"
+       "mmc rpmb write addr blk# cnt <address of auth-key> - block size is 256 bytes\n"
+       "mmc rpmb key <address of auth-key> - program the RPMB authentication key.\n"
+       "mmc rpmb counter - read the value of the write counter\n"
+#endif
+       "mmc setdsr <value> - set DSR register value\n"
        );
+
+/* Old command kept for compatibility. Same as 'mmc info' */
+U_BOOT_CMD(
+       mmcinfo, 1, 0, do_mmcinfo,
+       "display MMC info",
+       "- display info of the current MMC device"
+);
+
 #endif /* !CONFIG_GENERIC_MMC */
index 04ab0f19be05d911541567e09b12279984715a2a..a84f7dc2d1fd301adff83aae7d8a41ad1b8acdf7 100644 (file)
@@ -605,22 +605,16 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                opts.spread = spread;
 
                if (scrub) {
-                       if (!scrub_yes)
-                               puts(scrub_warn);
-
-                       if (scrub_yes)
+                       if (scrub_yes) {
                                opts.scrub = 1;
-                       else if (getc() == 'y') {
-                               puts("y");
-                               if (getc() == '\r')
+                       } else {
+                               puts(scrub_warn);
+                               if (confirm_yesno()) {
                                        opts.scrub = 1;
-                               else {
+                               else {
                                        puts("scrub aborted\n");
                                        return 1;
                                }
-                       } else {
-                               puts("scrub aborted\n");
-                               return 1;
                        }
                }
                ret = nand_erase_opts(nand, &opts);
index c53601cf7457e89475885ab4f1f57870487129be..f4e306ceba9a3b67fa2319a6668ff35aa9410978 100644 (file)
@@ -33,6 +33,7 @@
 #include <watchdog.h>
 #include <linux/stddef.h>
 #include <asm/byteorder.h>
+#include <asm/io.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -846,7 +847,8 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag,
                         int argc, char * const argv[])
 {
        char    buf[32];
-       char    *addr, *cmd, *res;
+       ulong   addr;
+       char    *ptr, *cmd, *res;
        size_t  size = 0;
        ssize_t len;
        env_t   *envp;
@@ -891,10 +893,11 @@ NXTARG:           ;
        if (argc < 1)
                return CMD_RET_USAGE;
 
-       addr = (char *)simple_strtoul(argv[0], NULL, 16);
+       addr = simple_strtoul(argv[0], NULL, 16);
+       ptr = map_sysmem(addr, size);
 
        if (size)
-               memset(addr, '\0', size);
+               memset(ptr, '\0', size);
 
        argc--;
        argv++;
@@ -902,7 +905,7 @@ NXTARG:             ;
        if (sep) {              /* export as text file */
                len = hexport_r(&env_htab, sep,
                                H_MATCH_KEY | H_MATCH_IDENT,
-                               &addr, size, argc, argv);
+                               &ptr, size, argc, argv);
                if (len < 0) {
                        error("Cannot export environment: errno = %d\n", errno);
                        return 1;
@@ -913,12 +916,12 @@ NXTARG:           ;
                return 0;
        }
 
-       envp = (env_t *)addr;
+       envp = (env_t *)ptr;
 
        if (chk)                /* export as checksum protected block */
                res = (char *)envp->data;
        else                    /* export as raw binary data */
-               res = addr;
+               res = ptr;
 
        len = hexport_r(&env_htab, '\0',
                        H_MATCH_KEY | H_MATCH_IDENT,
@@ -960,7 +963,8 @@ sep_err:
 static int do_env_import(cmd_tbl_t *cmdtp, int flag,
                         int argc, char * const argv[])
 {
-       char    *cmd, *addr;
+       ulong   addr;
+       char    *cmd, *ptr;
        char    sep = '\n';
        int     chk = 0;
        int     fmt = 0;
@@ -1004,7 +1008,8 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
        if (!fmt)
                printf("## Warning: defaulting to text format\n");
 
-       addr = (char *)simple_strtoul(argv[0], NULL, 16);
+       addr = simple_strtoul(argv[0], NULL, 16);
+       ptr = map_sysmem(addr, 0);
 
        if (argc == 2) {
                size = simple_strtoul(argv[1], NULL, 16);
@@ -1012,7 +1017,7 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
                puts("## Error: external checksum format must pass size\n");
                return CMD_RET_FAILURE;
        } else {
-               char *s = addr;
+               char *s = ptr;
 
                size = 0;
 
@@ -1032,7 +1037,7 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
 
        if (chk) {
                uint32_t crc;
-               env_t *ep = (env_t *)addr;
+               env_t *ep = (env_t *)ptr;
 
                size -= offsetof(env_t, data);
                memcpy(&crc, &ep->crc, sizeof(crc));
@@ -1041,11 +1046,11 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
                        puts("## Error: bad CRC, import failed\n");
                        return 1;
                }
-               addr = (char *)ep->data;
+               ptr = (char *)ep->data;
        }
 
-       if (himport_r(&env_htab, addr, size, sep, del ? 0 : H_NOCLEAR,
-                       0, NULL) == 0) {
+       if (himport_r(&env_htab, ptr, size, sep, del ? 0 : H_NOCLEAR, 0,
+                     NULL) == 0) {
                error("Environment import failed: errno = %d\n", errno);
                return 1;
        }
index 67808aa377ef15cdf3059bae08e6bfe8592ca886..593bb8c650ca18fdb5418884d3941d0191021f83 100644 (file)
@@ -158,21 +158,9 @@ int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        lowup(half + count - 1), page + (half + count - 1) / 2,
                        half + count
                );
-
-               i = 0;
-               while (1) {
-                       if (tstc()) {
-                               const char exp_ans[] = "YES\r";
-                               char c;
-                               putc(c = getc());
-                               if (exp_ans[i++] != c) {
-                                       printf(" Aborting\n");
-                                       return 1;
-                               } else if (!exp_ans[i]) {
-                                       puts("\n");
-                                       break;
-                               }
-                       }
+               if (!confirm_yesno()) {
+                       printf(" Aborting\n");
+                       return 1;
                }
        }
 
index 14248548d9fede555a90902d84a4787ab7cbf10f..c84bc27b40428225ff564c658ab8e6e40f949319 100644 (file)
@@ -82,7 +82,7 @@ int do_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 U_BOOT_CMD(
        part,   5,      1,      do_part,
        "disk partition related commands",
-       "uuid <interface> <dev>:<part>\n"
+       "part uuid <interface> <dev>:<part>\n"
        "    - print partition UUID\n"
        "part uuid <interface> <dev>:<part> <varname>\n"
        "    - set environment variable to partition UUID\n"
index 5180cb46a8777e981db219110fec6d00e126f662..de57e3b9dd5e05a1efc2b4b12741b9dc3d5eb03a 100644 (file)
@@ -21,8 +21,7 @@ static void report_time(ulong cycles)
        printf("\ntime:");
        if (minutes)
                printf(" %lu minutes,", minutes);
-       printf(" %lu.%03lu seconds, %lu ticks\n",
-                       seconds, milliseconds, cycles);
+       printf(" %lu.%03lu seconds\n", seconds, milliseconds);
 }
 
 static int do_time(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
index d8d9efd4f62b348b6ad553fbb95c1d50d3b824a4..2c879ea0837c5e13e69fb60333bb921e68b2d991 100644 (file)
 #include <common.h>
 #include <command.h>
 #include <g_dnl.h>
+#include <part.h>
 #include <usb.h>
 #include <usb_mass_storage.h>
 
+static int ums_read_sector(struct ums *ums_dev,
+                          ulong start, lbaint_t blkcnt, void *buf)
+{
+       block_dev_desc_t *block_dev = ums_dev->block_dev;
+       lbaint_t blkstart = start + ums_dev->start_sector;
+       int dev_num = block_dev->dev;
+
+       return block_dev->block_read(dev_num, blkstart, blkcnt, buf);
+}
+
+static int ums_write_sector(struct ums *ums_dev,
+                           ulong start, lbaint_t blkcnt, const void *buf)
+{
+       block_dev_desc_t *block_dev = ums_dev->block_dev;
+       lbaint_t blkstart = start + ums_dev->start_sector;
+       int dev_num = block_dev->dev;
+
+       return block_dev->block_write(dev_num, blkstart, blkcnt, buf);
+}
+
+static struct ums ums_dev = {
+       .read_sector = ums_read_sector,
+       .write_sector = ums_write_sector,
+       .name = "UMS disk",
+};
+
+struct ums *ums_init(const char *devtype, const char *devnum)
+{
+       block_dev_desc_t *block_dev;
+       int ret;
+
+       ret = get_device(devtype, devnum, &block_dev);
+       if (ret < 0)
+               return NULL;
+
+       /* f_mass_storage.c assumes SECTOR_SIZE sectors */
+       if (block_dev->blksz != SECTOR_SIZE)
+               return NULL;
+
+       ums_dev.block_dev = block_dev;
+       ums_dev.start_sector = 0;
+       ums_dev.num_sectors = block_dev->lba;
+
+       printf("UMS: disk start sector: %#x, count: %#x\n",
+              ums_dev.start_sector, ums_dev.num_sectors);
+
+       return &ums_dev;
+}
+
 int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
                               int argc, char * const argv[])
 {
+       const char *usb_controller;
+       const char *devtype;
+       const char *devnum;
+       struct ums *ums;
+       unsigned int controller_index;
+       int rc;
+       int cable_ready_timeout __maybe_unused;
+
        if (argc < 3)
                return CMD_RET_USAGE;
 
-       const char *usb_controller = argv[1];
-       const char *mmc_devstring  = argv[2];
-
-       unsigned int dev_num = simple_strtoul(mmc_devstring, NULL, 0);
+       usb_controller = argv[1];
+       if (argc >= 4) {
+               devtype = argv[2];
+               devnum  = argv[3];
+       } else {
+               devtype = "mmc";
+               devnum  = argv[2];
+       }
 
-       struct ums *ums = ums_init(dev_num);
+       ums = ums_init(devtype, devnum);
        if (!ums)
                return CMD_RET_FAILURE;
 
-       unsigned int controller_index = (unsigned int)(simple_strtoul(
-                                       usb_controller, NULL, 0));
+       controller_index = (unsigned int)(simple_strtoul(
+                               usb_controller, NULL, 0));
        if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
                error("Couldn't init USB controller.");
                return CMD_RET_FAILURE;
        }
 
-       int rc = fsg_init(ums);
+       rc = fsg_init(ums);
        if (rc) {
                error("fsg_init failed");
                return CMD_RET_FAILURE;
        }
 
-       g_dnl_register("usb_dnl_ums");
+       rc = g_dnl_register("usb_dnl_ums");
+       if (rc) {
+               error("g_dnl_register failed");
+               return CMD_RET_FAILURE;
+       }
 
        /* Timeout unit: seconds */
-       int cable_ready_timeout = UMS_CABLE_READY_TIMEOUT;
+       cable_ready_timeout = UMS_CABLE_READY_TIMEOUT;
 
        if (!g_dnl_board_usb_cable_connected()) {
                /*
@@ -91,7 +157,8 @@ exit:
        return CMD_RET_SUCCESS;
 }
 
-U_BOOT_CMD(ums, CONFIG_SYS_MAXARGS, 1, do_usb_mass_storage,
+U_BOOT_CMD(ums, 4, 1, do_usb_mass_storage,
        "Use the UMS [User Mass Storage]",
-       "ums <USB_controller> <mmc_dev>  e.g. ums 0 0"
+       "ums <USB_controller> [<devtype>] <devnum>  e.g. ums 0 mmc 0\n"
+       "    devtype defaults to mmc"
 );
index 2dfb788885bc81609224e9d3d7d43d1735bc6d65..5453726f693270f8a028a570445d13c53e045010 100644 (file)
@@ -537,7 +537,33 @@ int ctrlc(void)
        }
        return 0;
 }
-
+/* Reads user's confirmation.
+   Returns 1 if user's input is "y", "Y", "yes" or "YES"
+*/
+int confirm_yesno(void)
+{
+       int i;
+       char str_input[5];
+
+       /* Flush input */
+       while (tstc())
+               getc();
+       i = 0;
+       while (i < sizeof(str_input)) {
+               str_input[i] = getc();
+               putc(str_input[i]);
+               if (str_input[i] == '\r')
+                       break;
+               i++;
+       }
+       putc('\n');
+       if (strncmp(str_input, "y\r", 2) == 0 ||
+           strncmp(str_input, "Y\r", 2) == 0 ||
+           strncmp(str_input, "yes\r", 4) == 0 ||
+           strncmp(str_input, "YES\r", 4) == 0)
+               return 1;
+       return 0;
+}
 /* pass 1 to disable ctrlc() checking, 0 to enable.
  * returns previous state
  */
index df10267d644257476fdcad5b22ec1f5d3246cdc6..5b432247599fc521cc184d7ca0b81c8109ee4f8e 100644 (file)
@@ -996,7 +996,7 @@ static void get_user_input(struct in_str *i)
        i->p = the_command;
 #else
        int n;
-       static char the_command[CONFIG_SYS_CBSIZE];
+       static char the_command[CONFIG_SYS_CBSIZE + 1];
 
 #ifdef CONFIG_BOOT_RETRY_TIME
 #  ifndef CONFIG_RESET_TO_RETRY
diff --git a/common/image-android.c b/common/image-android.c
new file mode 100644 (file)
index 0000000..6ded7e2
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2011 Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <image.h>
+#include <android_image.h>
+
+static char andr_tmp_str[ANDR_BOOT_ARGS_SIZE + 1];
+
+int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
+                            ulong *os_data, ulong *os_len)
+{
+       /*
+        * Not all Android tools use the id field for signing the image with
+        * sha1 (or anything) so we don't check it. It is not obvious that the
+        * string is null terminated so we take care of this.
+        */
+       strncpy(andr_tmp_str, hdr->name, ANDR_BOOT_NAME_SIZE);
+       andr_tmp_str[ANDR_BOOT_NAME_SIZE] = '\0';
+       if (strlen(andr_tmp_str))
+               printf("Android's image name: %s\n", andr_tmp_str);
+
+       printf("Kernel load addr 0x%08x size %u KiB\n",
+              hdr->kernel_addr, DIV_ROUND_UP(hdr->kernel_size, 1024));
+       strncpy(andr_tmp_str, hdr->cmdline, ANDR_BOOT_ARGS_SIZE);
+       andr_tmp_str[ANDR_BOOT_ARGS_SIZE] = '\0';
+       if (strlen(andr_tmp_str)) {
+               printf("Kernel command line: %s\n", andr_tmp_str);
+               setenv("bootargs", andr_tmp_str);
+       }
+       if (hdr->ramdisk_size)
+               printf("RAM disk load addr 0x%08x size %u KiB\n",
+                      hdr->ramdisk_addr,
+                      DIV_ROUND_UP(hdr->ramdisk_size, 1024));
+
+       if (os_data) {
+               *os_data = (ulong)hdr;
+               *os_data += hdr->page_size;
+       }
+       if (os_len)
+               *os_len = hdr->kernel_size;
+       return 0;
+}
+
+int android_image_check_header(const struct andr_img_hdr *hdr)
+{
+       return memcmp(ANDR_BOOT_MAGIC, hdr->magic, ANDR_BOOT_MAGIC_SIZE);
+}
+
+ulong android_image_get_end(const struct andr_img_hdr *hdr)
+{
+       u32 size = 0;
+       /*
+        * The header takes a full page, the remaining components are aligned
+        * on page boundary
+        */
+       size += hdr->page_size;
+       size += ALIGN(hdr->kernel_size, hdr->page_size);
+       size += ALIGN(hdr->ramdisk_size, hdr->page_size);
+       size += ALIGN(hdr->second_size, hdr->page_size);
+
+       return size;
+}
+
+ulong android_image_get_kload(const struct andr_img_hdr *hdr)
+{
+       return hdr->kernel_addr;
+}
+
+int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
+                             ulong *rd_data, ulong *rd_len)
+{
+       if (!hdr->ramdisk_size)
+               return -1;
+       *rd_data = (unsigned long)hdr;
+       *rd_data += hdr->page_size;
+       *rd_data += ALIGN(hdr->kernel_size, hdr->page_size);
+
+       *rd_len = hdr->ramdisk_size;
+       return 0;
+}
index fcc5a9c3e12ae581dea63888ece615f4a3df27c2..26eb89a2b29b56875736f78acdaccae4c3ebf883 100644 (file)
@@ -139,6 +139,7 @@ static const table_entry_t uimage_type[] = {
        {       IH_TYPE_STANDALONE, "standalone", "Standalone Program", },
        {       IH_TYPE_UBLIMAGE,   "ublimage",   "Davinci UBL image",},
        {       IH_TYPE_MXSIMAGE,   "mxsimage",   "Freescale MXS Boot Image",},
+       {       IH_TYPE_ATMELIMAGE, "atmelimage", "ATMEL ROM-Boot Image",},
        {       -1,                 "",           "",                   },
 };
 
@@ -660,10 +661,12 @@ int genimg_get_format(const void *img_addr)
        if (image_check_magic(hdr))
                format = IMAGE_FORMAT_LEGACY;
 #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT)
-       else {
-               if (fdt_check_header(img_addr) == 0)
-                       format = IMAGE_FORMAT_FIT;
-       }
+       else if (fdt_check_header(img_addr) == 0)
+               format = IMAGE_FORMAT_FIT;
+#endif
+#ifdef CONFIG_ANDROID_BOOT_IMAGE
+       else if (android_image_check_header(img_addr) == 0)
+               format = IMAGE_FORMAT_ANDROID;
 #endif
 
        return format;
@@ -933,7 +936,15 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
                                (ulong)images->legacy_hdr_os);
 
                image_multi_getimg(images->legacy_hdr_os, 1, &rd_data, &rd_len);
-       } else {
+       }
+#ifdef CONFIG_ANDROID_BOOT_IMAGE
+       else if ((genimg_get_format(images) == IMAGE_FORMAT_ANDROID) &&
+                (!android_image_get_ramdisk((void *)images->os.start,
+                &rd_data, &rd_len))) {
+               /* empty */
+       }
+#endif
+       else {
                /*
                 * no initrd image
                 */
index e54f63b95626615001f5deee9756362675346934..9bee7bdc6b0e9b8deeb21b15647ff48a8e88156d 100644 (file)
@@ -1550,7 +1550,7 @@ int do_run (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
                        return 1;
                }
 
-               if (run_command(arg, flag) != 0)
+               if (run_command_list(arg, -1, flag) != 0)
                        return 1;
        }
        return 0;
index 9da021862eaf9c67c4e680564222b9aae1f319bd..062461b2b6069140d604dbeab62b8f46db0ca9f5 100644 (file)
@@ -76,7 +76,7 @@ void spl_nand_load_image(void)
 #endif
        /* Load u-boot */
        nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
-               CONFIG_SYS_NAND_PAGE_SIZE, (void *)header);
+               sizeof(*header), (void *)header);
        spl_parse_image_header(header);
        nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
                spl_image.size, (void *)spl_image.load_addr);
index b8c6aac801626f165bab1bb800ccf657c5a944f4..2827089d8d5f74eeb0d0a6b12863bf30e110f63e 100644 (file)
@@ -22,6 +22,7 @@
 struct block_drvr {
        char *name;
        block_dev_desc_t* (*get_dev)(int dev);
+       int (*select_hwpart)(int dev_num, int hwpart);
 };
 
 static const struct block_drvr block_drvr[] = {
@@ -38,7 +39,11 @@ static const struct block_drvr block_drvr[] = {
        { .name = "usb", .get_dev = usb_stor_get_dev, },
 #endif
 #if defined(CONFIG_MMC)
-       { .name = "mmc", .get_dev = mmc_get_dev, },
+       {
+               .name = "mmc",
+               .get_dev = mmc_get_dev,
+               .select_hwpart = mmc_select_hwpart,
+       },
 #endif
 #if defined(CONFIG_SYSTEMACE)
        { .name = "ace", .get_dev = systemace_get_dev, },
@@ -52,11 +57,13 @@ static const struct block_drvr block_drvr[] = {
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef HAVE_BLOCK_DEVICE
-block_dev_desc_t *get_dev(const char *ifname, int dev)
+block_dev_desc_t *get_dev_hwpart(const char *ifname, int dev, int hwpart)
 {
        const struct block_drvr *drvr = block_drvr;
        block_dev_desc_t* (*reloc_get_dev)(int dev);
+       int (*select_hwpart)(int dev_num, int hwpart);
        char *name;
+       int ret;
 
        if (!ifname)
                return NULL;
@@ -68,17 +75,41 @@ block_dev_desc_t *get_dev(const char *ifname, int dev)
        while (drvr->name) {
                name = drvr->name;
                reloc_get_dev = drvr->get_dev;
+               select_hwpart = drvr->select_hwpart;
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
                name += gd->reloc_off;
                reloc_get_dev += gd->reloc_off;
-#endif
-               if (strncmp(ifname, name, strlen(name)) == 0)
-                       return reloc_get_dev(dev);
+               if (select_hwpart)
+                       select_hwpart += gd->reloc_off;
+#endif
+               if (strncmp(ifname, name, strlen(name)) == 0) {
+                       block_dev_desc_t *dev_desc = reloc_get_dev(dev);
+                       if (!dev_desc)
+                               return NULL;
+                       if (hwpart == -1)
+                               return dev_desc;
+                       if (!select_hwpart)
+                               return NULL;
+                       ret = select_hwpart(dev_desc->dev, hwpart);
+                       if (ret < 0)
+                               return NULL;
+                       return dev_desc;
+               }
                drvr++;
        }
        return NULL;
 }
+
+block_dev_desc_t *get_dev(const char *ifname, int dev)
+{
+       return get_dev_hwpart(ifname, dev, -1);
+}
 #else
+block_dev_desc_t *get_dev_hwpart(const char *ifname, int dev, int hwpart)
+{
+       return NULL;
+}
+
 block_dev_desc_t *get_dev(const char *ifname, int dev)
 {
        return NULL;
@@ -413,25 +444,52 @@ int get_partition_info(block_dev_desc_t *dev_desc, int part
        return -1;
 }
 
-int get_device(const char *ifname, const char *dev_str,
+int get_device(const char *ifname, const char *dev_hwpart_str,
               block_dev_desc_t **dev_desc)
 {
        char *ep;
-       int dev;
+       char *dup_str = NULL;
+       const char *dev_str, *hwpart_str;
+       int dev, hwpart;
+
+       hwpart_str = strchr(dev_hwpart_str, '.');
+       if (hwpart_str) {
+               dup_str = strdup(dev_hwpart_str);
+               dup_str[hwpart_str - dev_hwpart_str] = 0;
+               dev_str = dup_str;
+               hwpart_str++;
+       } else {
+               dev_str = dev_hwpart_str;
+               hwpart = -1;
+       }
 
        dev = simple_strtoul(dev_str, &ep, 16);
        if (*ep) {
                printf("** Bad device specification %s %s **\n",
                       ifname, dev_str);
-               return -1;
+               dev = -1;
+               goto cleanup;
+       }
+
+       if (hwpart_str) {
+               hwpart = simple_strtoul(hwpart_str, &ep, 16);
+               if (*ep) {
+                       printf("** Bad HW partition specification %s %s **\n",
+                           ifname, hwpart_str);
+                       dev = -1;
+                       goto cleanup;
+               }
        }
 
-       *dev_desc = get_dev(ifname, dev);
+       *dev_desc = get_dev_hwpart(ifname, dev, hwpart);
        if (!(*dev_desc) || ((*dev_desc)->type == DEV_TYPE_UNKNOWN)) {
-               printf("** Bad device %s %s **\n", ifname, dev_str);
-               return -1;
+               printf("** Bad device %s %s **\n", ifname, dev_hwpart_str);
+               dev = -1;
+               goto cleanup;
        }
 
+cleanup:
+       free(dup_str);
        return dev;
 }
 
index 216a2920c27da5f893f3f94b6288fd720ab19d1a..c74b7b91705b8eb1b21385127d5fbbc8d45cbe28 100644 (file)
@@ -93,7 +93,15 @@ void print_part_efi(block_dev_desc_t * dev_desc)
        if (is_gpt_valid(dev_desc, GPT_PRIMARY_PARTITION_TABLE_LBA,
                         gpt_head, &gpt_pte) != 1) {
                printf("%s: *** ERROR: Invalid GPT ***\n", __func__);
-               return;
+               if (is_gpt_valid(dev_desc, (dev_desc->lba - 1),
+                                gpt_head, &gpt_pte) != 1) {
+                       printf("%s: *** ERROR: Invalid Backup GPT ***\n",
+                              __func__);
+                       return;
+               } else {
+                       printf("%s: ***        Using Backup GPT ***\n",
+                              __func__);
+               }
        }
 
        debug("%s: gpt-entry at %p\n", __func__, gpt_pte);
@@ -142,7 +150,15 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, int part,
        if (is_gpt_valid(dev_desc, GPT_PRIMARY_PARTITION_TABLE_LBA,
                        gpt_head, &gpt_pte) != 1) {
                printf("%s: *** ERROR: Invalid GPT ***\n", __func__);
-               return -1;
+               if (is_gpt_valid(dev_desc, (dev_desc->lba - 1),
+                                gpt_head, &gpt_pte) != 1) {
+                       printf("%s: *** ERROR: Invalid Backup GPT ***\n",
+                              __func__);
+                       return -1;
+               } else {
+                       printf("%s: ***        Using Backup GPT ***\n",
+                              __func__);
+               }
        }
 
        if (part > le32_to_cpu(gpt_head->num_partition_entries) ||
@@ -252,7 +268,7 @@ int write_gpt_table(block_dev_desc_t *dev_desc,
            != pte_blk_cnt)
                goto err;
 
-       /* recalculate the values for the Second GPT Header */
+       /* recalculate the values for the Backup GPT Header */
        val = le64_to_cpu(gpt_h->my_lba);
        gpt_h->my_lba = gpt_h->alternate_lba;
        gpt_h->alternate_lba = cpu_to_le64(val);
diff --git a/doc/README.android-fastboot b/doc/README.android-fastboot
new file mode 100644 (file)
index 0000000..f1d128c
--- /dev/null
@@ -0,0 +1,91 @@
+Android Fastboot
+~~~~~~~~~~~~~~~~
+
+Overview
+========
+The protocol that is used over USB is described in
+README.android-fastboot-protocol in same directory.
+
+The current implementation does not yet support the flash and erase
+commands.
+
+Client installation
+===================
+The counterpart to this gadget is the fastboot client which can
+be found in Android's platform/system/core repository in the fastboot
+folder. It runs on Windows, Linux and even OSX. Linux user are lucky since
+they only need libusb.
+Windows users need to bring some time until they have Android SDK (currently
+http://dl.google.com/android/installer_r12-windows.exe) installed. You
+need to install ADB package which contains the required glue libraries for
+accessing USB. Also you need "Google USB driver package" and "SDK platform
+tools". Once installed the usb driver is placed in your SDK folder under
+extras\google\usb_driver. The android_winusb.inf needs a line like
+
+   %SingleBootLoaderInterface% = USB_Install, USB\VID_0451&PID_D022
+
+either in the [Google.NTx86] section for 32bit Windows or [Google.NTamd64]
+for 64bit Windows. VID and PID should match whatever the fastboot is
+advertising.
+
+Board specific
+==============
+The fastboot gadget relies on the USB download gadget, so the following
+options must be configured:
+
+CONFIG_USBDOWNLOAD_GADGET
+CONFIG_G_DNL_VENDOR_NUM
+CONFIG_G_DNL_PRODUCT_NUM
+CONFIG_G_DNL_MANUFACTURER
+
+The fastboot function is enabled by defining CONFIG_CMD_FASTBOOT and
+CONFIG_ANDROID_BOOT_IMAGE.
+
+The fastboot protocol requires a large memory buffer for downloads. This
+buffer should be as large as possible for a platform. The location of the
+buffer and size are set with CONFIG_USB_FASTBOOT_BUF_ADDR and
+CONFIG_USB_FASTBOOT_BUF_SIZE.
+
+In Action
+=========
+Enter into fastboot by executing the fastboot command in u-boot and you
+should see:
+|GADGET DRIVER: usb_dnl_fastboot
+
+On the client side you can fetch the bootloader version for instance:
+|>fastboot getvar bootloader-version
+|bootloader-version: U-Boot 2014.04-00005-gd24cabc
+|finished. total time: 0.000s
+
+or initiate a reboot:
+|>fastboot reboot
+
+and once the client comes back, the board should reset.
+
+You can also specify a kernel image to boot. You have to either specify
+the an image in Android format _or_ pass a binary kernel and let the
+fastboot client wrap the Android suite around it. On OMAP for instance you
+take zImage kernel and pass it to the fastboot client:
+
+|>fastboot -b 0x80000000 -c "console=ttyO2 earlyprintk root=/dev/ram0
+|      mem=128M" boot zImage
+|creating boot image...
+|creating boot image - 1847296 bytes
+|downloading 'boot.img'...
+|OKAY [  2.766s]
+|booting...
+|OKAY [ -0.000s]
+|finished. total time: 2.766s
+
+and on the gadget side you should see:
+|Starting download of 1847296 bytes
+|........................................................
+|downloading of 1847296 bytes finished
+|Booting kernel..
+|## Booting Android Image at 0x81000000 ...
+|Kernel load addr 0x80008000 size 1801 KiB
+|Kernel command line: console=ttyO2 earlyprintk root=/dev/ram0 mem=128M
+|   Loading Kernel Image ... OK
+|OK
+|
+|Starting kernel ...
diff --git a/doc/README.android-fastboot-protocol b/doc/README.android-fastboot-protocol
new file mode 100644 (file)
index 0000000..e9e7166
--- /dev/null
@@ -0,0 +1,170 @@
+FastBoot  Version  0.4
+----------------------
+
+The fastboot protocol is a mechanism for communicating with bootloaders
+over USB.  It is designed to be very straightforward to implement, to
+allow it to be used across a wide range of devices and from hosts running
+Linux, Windows, or OSX.
+
+
+Basic Requirements
+------------------
+
+* Two bulk endpoints (in, out) are required
+* Max packet size must be 64 bytes for full-speed and 512 bytes for
+  high-speed USB
+* The protocol is entirely host-driven and synchronous (unlike the
+  multi-channel, bi-directional, asynchronous ADB protocol)
+
+
+Transport and Framing
+---------------------
+
+1. Host sends a command, which is an ascii string in a single
+   packet no greater than 64 bytes.
+
+2. Client response with a single packet no greater than 64 bytes.
+   The first four bytes of the response are "OKAY", "FAIL", "DATA",
+   or "INFO".  Additional bytes may contain an (ascii) informative
+   message.
+
+   a. INFO -> the remaining 60 bytes are an informative message
+      (providing progress or diagnostic messages).  They should
+      be displayed and then step #2 repeats
+
+   b. FAIL -> the requested command failed.  The remaining 60 bytes
+      of the response (if present) provide a textual failure message
+      to present to the user.  Stop.
+
+   c. OKAY -> the requested command completed successfully.  Go to #5
+
+   d. DATA -> the requested command is ready for the data phase.
+      A DATA response packet will be 12 bytes long, in the form of
+      DATA00000000 where the 8 digit hexidecimal number represents
+      the total data size to transfer.
+
+3. Data phase.  Depending on the command, the host or client will
+   send the indicated amount of data.  Short packets are always
+   acceptable and zero-length packets are ignored.  This phase continues
+   until the client has sent or received the number of bytes indicated
+   in the "DATA" response above.
+
+4. Client responds with a single packet no greater than 64 bytes.
+   The first four bytes of the response are "OKAY", "FAIL", or "INFO".
+   Similar to #2:
+
+   a. INFO -> display the remaining 60 bytes and return to #4
+
+   b. FAIL -> display the remaining 60 bytes (if present) as a failure
+      reason and consider the command failed.  Stop.
+
+   c. OKAY -> success.  Go to #5
+
+5. Success.  Stop.
+
+
+Example Session
+---------------
+
+Host:    "getvar:version"        request version variable
+
+Client:  "OKAY0.4"               return version "0.4"
+
+Host:    "getvar:nonexistant"    request some undefined variable
+
+Client:  "OKAY"                  return value ""
+
+Host:    "download:00001234"     request to send 0x1234 bytes of data
+
+Client:  "DATA00001234"          ready to accept data
+
+Host:    < 0x1234 bytes >        send data
+
+Client:  "OKAY"                  success
+
+Host:    "flash:bootloader"      request to flash the data to the bootloader
+
+Client:  "INFOerasing flash"     indicate status / progress
+         "INFOwriting flash"
+         "OKAY"                  indicate success
+
+Host:    "powerdown"             send a command
+
+Client:  "FAILunknown command"   indicate failure
+
+
+Command Reference
+-----------------
+
+* Command parameters are indicated by printf-style escape sequences.
+
+* Commands are ascii strings and sent without the quotes (which are
+  for illustration only here) and without a trailing 0 byte.
+
+* Commands that begin with a lowercase letter are reserved for this
+  specification.  OEM-specific commands should not begin with a
+  lowercase letter, to prevent incompatibilities with future specs.
+
+ "getvar:%s"           Read a config/version variable from the bootloader.
+                       The variable contents will be returned after the
+                       OKAY response.
+
+ "download:%08x"       Write data to memory which will be later used
+                       by "boot", "ramdisk", "flash", etc.  The client
+                       will reply with "DATA%08x" if it has enough
+                       space in RAM or "FAIL" if not.  The size of
+                       the download is remembered.
+
+  "verify:%08x"        Send a digital signature to verify the downloaded
+                       data.  Required if the bootloader is "secure"
+                       otherwise "flash" and "boot" will be ignored.
+
+  "flash:%s"           Write the previously downloaded image to the
+                       named partition (if possible).
+
+  "erase:%s"           Erase the indicated partition (clear to 0xFFs)
+
+  "boot"               The previously downloaded data is a boot.img
+                       and should be booted according to the normal
+                       procedure for a boot.img
+
+  "continue"           Continue booting as normal (if possible)
+
+  "reboot"             Reboot the device.
+
+  "reboot-bootloader"  Reboot back into the bootloader.
+                       Useful for upgrade processes that require upgrading
+                       the bootloader and then upgrading other partitions
+                       using the new bootloader.
+
+  "powerdown"          Power off the device.
+
+
+
+Client Variables
+----------------
+
+The "getvar:%s" command is used to read client variables which
+represent various information about the device and the software
+on it.
+
+The various currently defined names are:
+
+  version             Version of FastBoot protocol supported.
+                      It should be "0.3" for this document.
+
+  version-bootloader  Version string for the Bootloader.
+
+  version-baseband    Version string of the Baseband Software
+
+  product             Name of the product
+
+  serialno            Product serial number
+
+  secure              If the value is "yes", this is a secure
+                      bootloader requiring a signature before
+                      it will install or boot images.
+
+Names starting with a lowercase character are reserved by this
+specification.  OEM-specific names should not start with lowercase
+characters.
index cf8373b54e826c8877acca3382e21cf9ed3e7197..cc0f73db8f1c70dbca708b5529ed5fee35e8a87e 100644 (file)
@@ -27,3 +27,24 @@ Take AT91SAM9X5EK as an example, the board definition file likes:
 #define CONFIG_ATMEL_NAND_HW_PMECC     1
 #define CONFIG_PMECC_CAP               2
 #define CONFIG_PMECC_SECTOR_SIZE       512
+
+How to enable PMECC header for direct programmable boot.bin
+-----------------------------------------------------------
+2014-05-19 Andreas Bießmann <andreas.devel@googlemail.com>
+
+The usual way to program SPL into NAND flash is to use the SAM-BA Atmel tool.
+This however is often not usable when doing field updates. To be able to
+program a SPL binary into NAND flash we need to add the PMECC header to the
+binary before. Chapter '12.4.4.1 NAND Flash Boot: NAND Flash Detection' in
+sama5d3 SoC spec (as of 03. April 2014) defines how this PMECC header has to
+look like. In order to do so we have a new image type added to mkimage to
+generate this PMECC header and integrated this into the build process of SPL.
+
+To enable the generation of atmel PMECC header for SPL one need to define
+CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER. The required parameters are taken from
+board configuration and compiled into the host tools atmel_pmecc_params. This
+tool will be called in build process to parametrize mkimage for atmelimage
+type. The mkimage tool has intentionally _not_ compiled in those parameters.
+
+The mkimage image type atmelimage also set the 6'th interrupt vector to the
+correct value. This feature can also be used to setup a boot.bin for MMC boot.
index 50d3a26849d7bf5d234edcd1f85243c960d5f375..17da0b9f8776d837dd9ec8fea1ee4c686b1f8f01 100644 (file)
@@ -17,7 +17,7 @@ architecture-specific board.c file before October 2014.
 Background
 ----------
 
-U-Boot has tranditionally had a board.c file for each architecture. This has
+U-Boot has traditionally had a board.c file for each architecture. This has
 introduced quite a lot of duplication, with each architecture tending to do
 initialisation slightly differently. To address this, a new 'generic board
 init' feature was introduced a year ago in March 2013 (further motivation is
index f822894709ee800288142d8bcd2cdafd5c9a7659..ec0156d8aa9b8073555bbe00f5836f4e0883fe1c 100644 (file)
@@ -66,14 +66,14 @@ GPT brief explanation:
                       |Partition n                      |
                       |                                 |
        ----------------------------------------------------------
-       LBA -34        |Entry 1|Entry 2| Entry 3| Entry 4| Secondary
-       -------------------------------------------------- (bkp)
-       LBA -33        |Entries 5 - 128                  | GPT
+       LBA -34        |Entry 1|Entry 2| Entry 3| Entry 4| Backup
+       -------------------------------------------------- GPT
+       LBA -33        |Entries 5 - 128                  |
                       |                                 |
                       |                                 |
        LBA -2         |                                 |
        --------------------------------------------------
-       LBA -1         |Secondary GPT Header             |
+       LBA -1         |Backup GPT Header                |
        ----------------------------------------------------------
 
 For a legacy reasons, GPT's LBA 0 sector has a MBR structure. It is called
@@ -86,7 +86,7 @@ It is possible to define 128 linearly placed partition entries.
 "LBA -1" means the last addressable block (in the mmc subsystem:
 "dev_desc->lba - 1")
 
-Primary/Secondary GPT header:
+Primary/Backup GPT header:
 ----------------------------
 Offset  Size    Description
 
@@ -115,7 +115,7 @@ IMPORTANT:
 
 GPT headers and partition entries are protected by CRC32 (the POSIX CRC32).
 
-Primary GPT header and Secondary GPT header have swapped values of "Current LBA"
+Primary GPT header and Backup GPT header have swapped values of "Current LBA"
 and "Backup LBA" and therefore different CRC32 check-sum.
 
 CRC32 for GPT headers (field "CRC of header") are calculated up till
@@ -125,7 +125,7 @@ CRC32 for partition entries (field "CRC32 of partition array") is calculated for
 the whole array entry ( Number_of_partition_entries *
 sizeof(partition_entry_size (usually 128)))
 
-Observe, how Secondary GPT is placed in the memory. It is NOT a mirror reflect
+Observe, how Backup GPT is placed in the memory. It is NOT a mirror reflect
 of the Primary.
 
           Partition Entry Format:
index 251586e05277ed7f715446c0c11889832d62c603..e53c888351fd22933ff32b2ac1a35bc485f9aa45 100644 (file)
@@ -22,6 +22,7 @@ alias jagan        Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>
 alias jasonjin       Jason Jin <jason.jin@freescale.com>
 alias jhersh         Joe Hershberger <joe.hershberger@gmail.com>
 alias kimphill       Kim Phillips <kim.phillips@freescale.com>
+alias lukma          Lukasz Majewski <l.majewski@samsung.com>
 alias macpaul        Macpaul Lin <macpaul@andestech.com>
 alias marex          Marek Vasut <marex@denx.de>
 alias monstr         Michal Simek <monstr@monstr.eu>
@@ -101,6 +102,7 @@ alias x86            uboot, sjg, gruss
 
 # Subsystem aliases
 alias cfi            uboot, stroese
+alias dfu            uboot, lukma
 alias kerneldoc      uboot, marex
 alias fdt            uboot, Jerry Van Baren <vanbaren@cideas.com>
 alias i2c            uboot, hs
index 51b10263b8824e947c4c4cdbbd272fb1eb2fb46b..a93810934ac90ec670792b979163d9a693b97d92 100644 (file)
@@ -131,6 +131,10 @@ int dfu_flush(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
 {
        int ret = 0;
 
+       ret = dfu_write_buffer_drain(dfu);
+       if (ret)
+               return ret;
+
        if (dfu->flush_medium)
                ret = dfu->flush_medium(dfu);
 
index 5e10ea7e66478a7308039e066989c6547d19a565..63cc876612c9aa44df4539e5e6c1a3b1d0af0b14 100644 (file)
@@ -18,11 +18,29 @@ static unsigned char __aligned(CONFIG_SYS_CACHELINE_SIZE)
                                dfu_file_buf[CONFIG_SYS_DFU_MAX_FILE_SIZE];
 static long dfu_file_buf_len;
 
+static int mmc_access_part(struct dfu_entity *dfu, struct mmc *mmc, int part)
+{
+       int ret;
+
+       if (part == mmc->part_num)
+               return 0;
+
+       ret = mmc_switch_part(dfu->dev_num, part);
+       if (ret) {
+               error("Cannot switch to partition %d\n", part);
+               return ret;
+       }
+       mmc->part_num = part;
+
+       return 0;
+}
+
 static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
                        u64 offset, void *buf, long *len)
 {
        struct mmc *mmc = find_mmc_device(dfu->dev_num);
        u32 blk_start, blk_count, n = 0;
+       int ret, part_num_bkp = 0;
 
        /*
         * We must ensure that we work in lba_blk_size chunks, so ALIGN
@@ -39,6 +57,13 @@ static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
                return -EINVAL;
        }
 
+       if (dfu->data.mmc.hw_partition >= 0) {
+               part_num_bkp = mmc->part_num;
+               ret = mmc_access_part(dfu, mmc, dfu->data.mmc.hw_partition);
+               if (ret)
+                       return ret;
+       }
+
        debug("%s: %s dev: %d start: %d cnt: %d buf: 0x%p\n", __func__,
              op == DFU_OP_READ ? "MMC READ" : "MMC WRITE", dfu->dev_num,
              blk_start, blk_count, buf);
@@ -57,9 +82,17 @@ static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
 
        if (n != blk_count) {
                error("MMC operation failed");
+               if (dfu->data.mmc.hw_partition >= 0)
+                       mmc_access_part(dfu, mmc, part_num_bkp);
                return -EIO;
        }
 
+       if (dfu->data.mmc.hw_partition >= 0) {
+               ret = mmc_access_part(dfu, mmc, part_num_bkp);
+               if (ret)
+                       return ret;
+       }
+
        return 0;
 }
 
@@ -194,6 +227,8 @@ int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, void *buf,
  *     2nd and 3rd:
  *             lba_start and lba_size, for raw write
  *             mmc_dev and mmc_part, for filesystems and part
+ *     4th (optional):
+ *             mmcpart <num> (access to HW eMMC partitions)
  */
 int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *s)
 {
@@ -233,11 +268,22 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *s)
                return -ENODEV;
        }
 
+       dfu->data.mmc.hw_partition = -EINVAL;
        if (!strcmp(entity_type, "raw")) {
                dfu->layout                     = DFU_RAW_ADDR;
                dfu->data.mmc.lba_start         = second_arg;
                dfu->data.mmc.lba_size          = third_arg;
                dfu->data.mmc.lba_blk_size      = mmc->read_bl_len;
+
+               /*
+                * Check for an extra entry at dfu_alt_info env variable
+                * specifying the mmc HW defined partition number
+                */
+               if (s)
+                       if (!strcmp(strsep(&s, " "), "mmcpart"))
+                               dfu->data.mmc.hw_partition =
+                                       simple_strtoul(s, NULL, 0);
+
        } else if (!strcmp(entity_type, "part")) {
                disk_partition_t partinfo;
                block_dev_desc_t *blk_dev = &mmc->block_dev;
index 2d07097e850af70544d95f5481d6d5af9ef26f5c..ccdbef6b75f26fe78fe5fc52438d797bad5b3b46 100644 (file)
@@ -163,6 +163,18 @@ static int dfu_flush_medium_nand(struct dfu_entity *dfu)
        return ret;
 }
 
+unsigned int dfu_polltimeout_nand(struct dfu_entity *dfu)
+{
+       /*
+        * Currently, Poll Timeout != 0 is only needed on nand
+        * ubi partition, as the not used sectors need an erase
+        */
+       if (dfu->data.nand.ubi)
+               return DFU_MANIFEST_POLL_TIMEOUT;
+
+       return DFU_DEFAULT_POLL_TIMEOUT;
+}
+
 int dfu_fill_entity_nand(struct dfu_entity *dfu, char *s)
 {
        char *st;
@@ -211,6 +223,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;
+       dfu->poll_timeout = dfu_polltimeout_nand;
 
        /* initial state */
        dfu->inited = 0;
index b940d9b316bc67ead42096066502032207c88650..37946d5e183a73d07bff9da4f324c8357a72a89c 100644 (file)
@@ -173,16 +173,45 @@ int fpga_add(fpga_type devtype, void *desc)
 /*
  * Convert bitstream data and load into the fpga
  */
-int __weak fpga_loadbitstream(int devnum, char *fpgadata, size_t size)
+int __weak fpga_loadbitstream(int devnum, char *fpgadata, size_t size,
+                             bitstream_type bstype)
 {
        printf("Bitstream support not implemented for this FPGA device\n");
        return FPGA_FAIL;
 }
 
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+int fpga_fsload(int devnum, const void *buf, size_t size,
+                fpga_fs_info *fpga_fsinfo)
+{
+       int ret_val = FPGA_FAIL;           /* assume failure */
+       const fpga_desc *desc = fpga_validate(devnum, buf, size,
+                                             (char *)__func__);
+
+       if (desc) {
+               switch (desc->devtype) {
+               case fpga_xilinx:
+#if defined(CONFIG_FPGA_XILINX)
+                       ret_val = xilinx_loadfs(desc->devdesc, buf, size,
+                                               fpga_fsinfo);
+#else
+                       fpga_no_sup((char *)__func__, "Xilinx devices");
+#endif
+                       break;
+               default:
+                       printf("%s: Invalid or unsupported device type %d\n",
+                              __func__, desc->devtype);
+               }
+       }
+
+       return ret_val;
+}
+#endif
+
 /*
  * Generic multiplexing code
  */
-int fpga_load(int devnum, const void *buf, size_t bsize)
+int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype)
 {
        int ret_val = FPGA_FAIL;           /* assume failure */
        const fpga_desc *desc = fpga_validate(devnum, buf, bsize,
@@ -192,7 +221,8 @@ int fpga_load(int devnum, const void *buf, size_t bsize)
                switch (desc->devtype) {
                case fpga_xilinx:
 #if defined(CONFIG_FPGA_XILINX)
-                       ret_val = xilinx_load(desc->devdesc, buf, bsize);
+                       ret_val = xilinx_load(desc->devdesc, buf, bsize,
+                                             bstype);
 #else
                        fpga_no_sup((char *)__func__, "Xilinx devices");
 #endif
index 6eab1b51e5569c576c1880c2e33d2119cd27dc3f..859fb3c7787af8562336e6c7e378b70b9fb3c994 100644 (file)
 #define CONFIG_SYS_FPGA_WAIT CONFIG_SYS_HZ/100 /* 10 ms */
 #endif
 
-static int Spartan2_sp_load(Xilinx_desc *desc, const void *buf, size_t bsize);
-static int Spartan2_sp_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-/* static int Spartan2_sp_info(Xilinx_desc *desc ); */
+static int spartan2_sp_load(xilinx_desc *desc, const void *buf, size_t bsize);
+static int spartan2_sp_dump(xilinx_desc *desc, const void *buf, size_t bsize);
+/* static int spartan2_sp_info(xilinx_desc *desc ); */
 
-static int Spartan2_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize);
-static int Spartan2_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-/* static int Spartan2_ss_info(Xilinx_desc *desc ); */
+static int spartan2_ss_load(xilinx_desc *desc, const void *buf, size_t bsize);
+static int spartan2_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize);
+/* static int spartan2_ss_info(xilinx_desc *desc ); */
 
 /* ------------------------------------------------------------------------- */
 /* Spartan-II Generic Implementation */
-int Spartan2_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan2_load(xilinx_desc *desc, const void *buf, size_t bsize,
+                        bitstream_type bstype)
 {
        int ret_val = FPGA_FAIL;
 
        switch (desc->iface) {
        case slave_serial:
                PRINTF ("%s: Launching Slave Serial Load\n", __FUNCTION__);
-               ret_val = Spartan2_ss_load (desc, buf, bsize);
+               ret_val = spartan2_ss_load(desc, buf, bsize);
                break;
 
        case slave_parallel:
                PRINTF ("%s: Launching Slave Parallel Load\n", __FUNCTION__);
-               ret_val = Spartan2_sp_load (desc, buf, bsize);
+               ret_val = spartan2_sp_load(desc, buf, bsize);
                break;
 
        default:
@@ -64,19 +65,19 @@ int Spartan2_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-int Spartan2_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan2_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;
 
        switch (desc->iface) {
        case slave_serial:
                PRINTF ("%s: Launching Slave Serial Dump\n", __FUNCTION__);
-               ret_val = Spartan2_ss_dump (desc, buf, bsize);
+               ret_val = spartan2_ss_dump(desc, buf, bsize);
                break;
 
        case slave_parallel:
                PRINTF ("%s: Launching Slave Parallel Dump\n", __FUNCTION__);
-               ret_val = Spartan2_sp_dump (desc, buf, bsize);
+               ret_val = spartan2_sp_dump(desc, buf, bsize);
                break;
 
        default:
@@ -87,7 +88,7 @@ int Spartan2_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-int Spartan2_info( Xilinx_desc *desc )
+static int spartan2_info(xilinx_desc *desc)
 {
        return FPGA_SUCCESS;
 }
@@ -96,10 +97,10 @@ int Spartan2_info( Xilinx_desc *desc )
 /* ------------------------------------------------------------------------- */
 /* Spartan-II Slave Parallel Generic Implementation */
 
-static int Spartan2_sp_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan2_sp_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;        /* assume the worst */
-       Xilinx_Spartan2_Slave_Parallel_fns *fn = desc->iface_fns;
+       xilinx_spartan2_slave_parallel_fns *fn = desc->iface_fns;
 
        PRINTF ("%s: start with interface functions @ 0x%p\n",
                        __FUNCTION__, fn);
@@ -248,10 +249,10 @@ static int Spartan2_sp_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-static int Spartan2_sp_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan2_sp_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;        /* assume the worst */
-       Xilinx_Spartan2_Slave_Parallel_fns *fn = desc->iface_fns;
+       xilinx_spartan2_slave_parallel_fns *fn = desc->iface_fns;
 
        if (fn) {
                unsigned char *data = (unsigned char *) buf;
@@ -296,10 +297,10 @@ static int Spartan2_sp_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
 
 /* ------------------------------------------------------------------------- */
 
-static int Spartan2_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan2_ss_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;        /* assume the worst */
-       Xilinx_Spartan2_Slave_Serial_fns *fn = desc->iface_fns;
+       xilinx_spartan2_slave_serial_fns *fn = desc->iface_fns;
        int i;
        unsigned char val;
 
@@ -439,7 +440,7 @@ static int Spartan2_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-static int Spartan2_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan2_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        /* Readback is only available through the Slave Parallel and         */
        /* boundary-scan interfaces.                                         */
@@ -447,3 +448,9 @@ static int Spartan2_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
                        __FUNCTION__);
        return FPGA_FAIL;
 }
+
+struct xilinx_fpga_op spartan2_op = {
+       .load = spartan2_load,
+       .dump = spartan2_dump,
+       .info = spartan2_info,
+};
index 3edc5c2c66a63cbde86b75466ff89d1e2bb90c12..b0213e69992b5772f4e1984bf0a697cd34331832 100644 (file)
 #define CONFIG_SYS_FPGA_WAIT CONFIG_SYS_HZ/100 /* 10 ms */
 #endif
 
-static int Spartan3_sp_load(Xilinx_desc *desc, const void *buf, size_t bsize);
-static int Spartan3_sp_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-/* static int Spartan3_sp_info(Xilinx_desc *desc ); */
+static int spartan3_sp_load(xilinx_desc *desc, const void *buf, size_t bsize);
+static int spartan3_sp_dump(xilinx_desc *desc, const void *buf, size_t bsize);
+/* static int spartan3_sp_info(xilinx_desc *desc ); */
 
-static int Spartan3_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize);
-static int Spartan3_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-/* static int Spartan3_ss_info(Xilinx_desc *desc); */
+static int spartan3_ss_load(xilinx_desc *desc, const void *buf, size_t bsize);
+static int spartan3_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize);
+/* static int spartan3_ss_info(xilinx_desc *desc); */
 
 /* ------------------------------------------------------------------------- */
 /* Spartan-II Generic Implementation */
-int Spartan3_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan3_load(xilinx_desc *desc, const void *buf, size_t bsize,
+                        bitstream_type bstype)
 {
        int ret_val = FPGA_FAIL;
 
        switch (desc->iface) {
        case slave_serial:
                PRINTF ("%s: Launching Slave Serial Load\n", __FUNCTION__);
-               ret_val = Spartan3_ss_load (desc, buf, bsize);
+               ret_val = spartan3_ss_load(desc, buf, bsize);
                break;
 
        case slave_parallel:
                PRINTF ("%s: Launching Slave Parallel Load\n", __FUNCTION__);
-               ret_val = Spartan3_sp_load (desc, buf, bsize);
+               ret_val = spartan3_sp_load(desc, buf, bsize);
                break;
 
        default:
@@ -68,19 +69,19 @@ int Spartan3_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-int Spartan3_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan3_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;
 
        switch (desc->iface) {
        case slave_serial:
                PRINTF ("%s: Launching Slave Serial Dump\n", __FUNCTION__);
-               ret_val = Spartan3_ss_dump (desc, buf, bsize);
+               ret_val = spartan3_ss_dump(desc, buf, bsize);
                break;
 
        case slave_parallel:
                PRINTF ("%s: Launching Slave Parallel Dump\n", __FUNCTION__);
-               ret_val = Spartan3_sp_dump (desc, buf, bsize);
+               ret_val = spartan3_sp_dump(desc, buf, bsize);
                break;
 
        default:
@@ -91,7 +92,7 @@ int Spartan3_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-int Spartan3_info( Xilinx_desc *desc )
+static int spartan3_info(xilinx_desc *desc)
 {
        return FPGA_SUCCESS;
 }
@@ -100,10 +101,10 @@ int Spartan3_info( Xilinx_desc *desc )
 /* ------------------------------------------------------------------------- */
 /* Spartan-II Slave Parallel Generic Implementation */
 
-static int Spartan3_sp_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan3_sp_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;        /* assume the worst */
-       Xilinx_Spartan3_Slave_Parallel_fns *fn = desc->iface_fns;
+       xilinx_spartan3_slave_parallel_fns *fn = desc->iface_fns;
 
        PRINTF ("%s: start with interface functions @ 0x%p\n",
                        __FUNCTION__, fn);
@@ -254,10 +255,10 @@ static int Spartan3_sp_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-static int Spartan3_sp_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan3_sp_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;        /* assume the worst */
-       Xilinx_Spartan3_Slave_Parallel_fns *fn = desc->iface_fns;
+       xilinx_spartan3_slave_parallel_fns *fn = desc->iface_fns;
 
        if (fn) {
                unsigned char *data = (unsigned char *) buf;
@@ -302,10 +303,10 @@ static int Spartan3_sp_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
 
 /* ------------------------------------------------------------------------- */
 
-static int Spartan3_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan3_ss_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;        /* assume the worst */
-       Xilinx_Spartan3_Slave_Serial_fns *fn = desc->iface_fns;
+       xilinx_spartan3_slave_serial_fns *fn = desc->iface_fns;
        int i;
        unsigned char val;
 
@@ -457,7 +458,7 @@ static int Spartan3_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-static int Spartan3_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int spartan3_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        /* Readback is only available through the Slave Parallel and         */
        /* boundary-scan interfaces.                                         */
@@ -465,3 +466,9 @@ static int Spartan3_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
                        __FUNCTION__);
        return FPGA_FAIL;
 }
+
+struct xilinx_fpga_op spartan3_op = {
+       .load = spartan3_load,
+       .dump = spartan3_dump,
+       .info = spartan3_info,
+};
index b5a895d41a7343c783bf8bfda2d300f8e06d6dac..0d2d9a4693264684bbeb5167790057c0ae07b732 100644 (file)
 #define CONFIG_SYS_FPGA_WAIT_CONFIG    CONFIG_SYS_HZ/5 /* 200 ms */
 #endif
 
-static int Virtex2_ssm_load(Xilinx_desc *desc, const void *buf, size_t bsize);
-static int Virtex2_ssm_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
+static int virtex2_ssm_load(xilinx_desc *desc, const void *buf, size_t bsize);
+static int virtex2_ssm_dump(xilinx_desc *desc, const void *buf, size_t bsize);
 
-static int Virtex2_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize);
-static int Virtex2_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
+static int virtex2_ss_load(xilinx_desc *desc, const void *buf, size_t bsize);
+static int virtex2_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize);
 
-int Virtex2_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int virtex2_load(xilinx_desc *desc, const void *buf, size_t bsize,
+                       bitstream_type bstype)
 {
        int ret_val = FPGA_FAIL;
 
        switch (desc->iface) {
        case slave_serial:
                PRINTF ("%s: Launching Slave Serial Load\n", __FUNCTION__);
-               ret_val = Virtex2_ss_load (desc, buf, bsize);
+               ret_val = virtex2_ss_load(desc, buf, bsize);
                break;
 
        case slave_selectmap:
                PRINTF ("%s: Launching Slave Parallel Load\n", __FUNCTION__);
-               ret_val = Virtex2_ssm_load (desc, buf, bsize);
+               ret_val = virtex2_ssm_load(desc, buf, bsize);
                break;
 
        default:
@@ -112,19 +113,19 @@ int Virtex2_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-int Virtex2_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int virtex2_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;
 
        switch (desc->iface) {
        case slave_serial:
                PRINTF ("%s: Launching Slave Serial Dump\n", __FUNCTION__);
-               ret_val = Virtex2_ss_dump (desc, buf, bsize);
+               ret_val = virtex2_ss_dump(desc, buf, bsize);
                break;
 
        case slave_parallel:
                PRINTF ("%s: Launching Slave Parallel Dump\n", __FUNCTION__);
-               ret_val = Virtex2_ssm_dump (desc, buf, bsize);
+               ret_val = virtex2_ssm_dump(desc, buf, bsize);
                break;
 
        default:
@@ -134,7 +135,7 @@ int Virtex2_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-int Virtex2_info (Xilinx_desc * desc)
+static int virtex2_info(xilinx_desc *desc)
 {
        return FPGA_SUCCESS;
 }
@@ -153,10 +154,10 @@ int Virtex2_info (Xilinx_desc * desc)
  *    INIT_B and DONE lines.  If both are high, configuration has
  *    succeeded. Congratulations!
  */
-static int Virtex2_ssm_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int virtex2_ssm_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;
-       Xilinx_Virtex2_Slave_SelectMap_fns *fn = desc->iface_fns;
+       xilinx_virtex2_slave_selectmap_fns *fn = desc->iface_fns;
 
        PRINTF ("%s:%d: Start with interface functions @ 0x%p\n",
                        __FUNCTION__, __LINE__, fn);
@@ -352,10 +353,10 @@ static int Virtex2_ssm_load(Xilinx_desc *desc, const void *buf, size_t bsize)
 /*
  * Read the FPGA configuration data
  */
-static int Virtex2_ssm_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int virtex2_ssm_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        int ret_val = FPGA_FAIL;
-       Xilinx_Virtex2_Slave_SelectMap_fns *fn = desc->iface_fns;
+       xilinx_virtex2_slave_selectmap_fns *fn = desc->iface_fns;
 
        if (fn) {
                unsigned char *data = (unsigned char *) buf;
@@ -404,16 +405,22 @@ static int Virtex2_ssm_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
        return ret_val;
 }
 
-static int Virtex2_ss_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int virtex2_ss_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        printf ("%s: Slave Serial Loading is unsupported\n", __FUNCTION__);
        return FPGA_FAIL;
 }
 
-static int Virtex2_ss_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int virtex2_ss_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        printf ("%s: Slave Serial Dumping is unsupported\n", __FUNCTION__);
        return FPGA_FAIL;
 }
 
 /* vim: set ts=4 tw=78: */
+
+struct xilinx_fpga_op virtex2_op = {
+       .load = virtex2_load,
+       .dump = virtex2_dump,
+       .info = virtex2_info,
+};
index 2e0db535d474ca74c5f42d8072228a66f9b41cd5..3795c1aff6e267640c4ef869c0e344c52e3b9f93 100644 (file)
 #include <spartan3.h>
 #include <zynqpl.h>
 
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* Define FPGA_DEBUG to get debug printf's */
-#ifdef FPGA_DEBUG
-#define        PRINTF(fmt,args...)     printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
 /* Local Static Functions */
-static int xilinx_validate (Xilinx_desc * desc, char *fn);
+static int xilinx_validate(xilinx_desc *desc, char *fn);
 
 /* ------------------------------------------------------------------------- */
 
-int fpga_loadbitstream(int devnum, char *fpgadata, size_t size)
+int fpga_loadbitstream(int devnum, char *fpgadata, size_t size,
+                      bitstream_type bstype)
 {
        unsigned int length;
        unsigned int swapsize;
@@ -43,7 +33,7 @@ int fpga_loadbitstream(int devnum, char *fpgadata, size_t size)
        unsigned char *dataptr;
        unsigned int i;
        const fpga_desc *desc;
-       Xilinx_desc *xdesc;
+       xilinx_desc *xdesc;
 
        dataptr = (unsigned char *)fpgadata;
        /* Find out fpga_description */
@@ -94,7 +84,7 @@ int fpga_loadbitstream(int devnum, char *fpgadata, size_t size)
                        return FPGA_FAIL;
                }
        } else {
-               printf("%s: Please fill correct device ID to Xilinx_desc\n",
+               printf("%s: Please fill correct device ID to xilinx_desc\n",
                       __func__);
        }
        printf("  part number = \"%s\"\n", buffer);
@@ -138,137 +128,60 @@ int fpga_loadbitstream(int devnum, char *fpgadata, size_t size)
        dataptr += 4;
        printf("  bytes in bitstream = %d\n", swapsize);
 
-       return fpga_load(devnum, dataptr, swapsize);
+       return fpga_load(devnum, dataptr, swapsize, bstype);
 }
 
-int xilinx_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+int xilinx_load(xilinx_desc *desc, const void *buf, size_t bsize,
+               bitstream_type bstype)
 {
-       int ret_val = FPGA_FAIL;        /* assume a failure */
-
        if (!xilinx_validate (desc, (char *)__FUNCTION__)) {
                printf ("%s: Invalid device descriptor\n", __FUNCTION__);
-       } else
-               switch (desc->family) {
-               case Xilinx_Spartan2:
-#if defined(CONFIG_FPGA_SPARTAN2)
-                       PRINTF ("%s: Launching the Spartan-II Loader...\n",
-                                       __FUNCTION__);
-                       ret_val = Spartan2_load (desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case Xilinx_Spartan3:
-#if defined(CONFIG_FPGA_SPARTAN3)
-                       PRINTF ("%s: Launching the Spartan-III Loader...\n",
-                                       __FUNCTION__);
-                       ret_val = Spartan3_load (desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-III devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case Xilinx_Virtex2:
-#if defined(CONFIG_FPGA_VIRTEX2)
-                       PRINTF ("%s: Launching the Virtex-II Loader...\n",
-                                       __FUNCTION__);
-                       ret_val = Virtex2_load (desc, buf, bsize);
-#else
-                       printf ("%s: No support for Virtex-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_zynq:
-#if defined(CONFIG_FPGA_ZYNQPL)
-                       PRINTF("%s: Launching the Zynq PL Loader...\n",
-                              __func__);
-                       ret_val = zynq_load(desc, buf, bsize);
-#else
-                       printf("%s: No support for Zynq devices.\n",
-                              __func__);
-#endif
-                       break;
-
-               default:
-                       printf ("%s: Unsupported family type, %d\n",
-                                       __FUNCTION__, desc->family);
-               }
+               return FPGA_FAIL;
+       }
 
-       return ret_val;
+       return desc->operations->load(desc, buf, bsize, bstype);
 }
 
-int xilinx_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+int xilinx_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
+                  fpga_fs_info *fpga_fsinfo)
 {
-       int ret_val = FPGA_FAIL;        /* assume a failure */
+       if (!xilinx_validate(desc, (char *)__func__)) {
+               printf("%s: Invalid device descriptor\n", __func__);
+               return FPGA_FAIL;
+       }
 
-       if (!xilinx_validate (desc, (char *)__FUNCTION__)) {
-               printf ("%s: Invalid device descriptor\n", __FUNCTION__);
-       } else
-               switch (desc->family) {
-               case Xilinx_Spartan2:
-#if defined(CONFIG_FPGA_SPARTAN2)
-                       PRINTF ("%s: Launching the Spartan-II Reader...\n",
-                                       __FUNCTION__);
-                       ret_val = Spartan2_dump (desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case Xilinx_Spartan3:
-#if defined(CONFIG_FPGA_SPARTAN3)
-                       PRINTF ("%s: Launching the Spartan-III Reader...\n",
-                                       __FUNCTION__);
-                       ret_val = Spartan3_dump (desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-III devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case Xilinx_Virtex2:
-#if defined( CONFIG_FPGA_VIRTEX2)
-                       PRINTF ("%s: Launching the Virtex-II Reader...\n",
-                                       __FUNCTION__);
-                       ret_val = Virtex2_dump (desc, buf, bsize);
-#else
-                       printf ("%s: No support for Virtex-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_zynq:
-#if defined(CONFIG_FPGA_ZYNQPL)
-                       PRINTF("%s: Launching the Zynq PL Reader...\n",
-                              __func__);
-                       ret_val = zynq_dump(desc, buf, bsize);
-#else
-                       printf("%s: No support for Zynq devices.\n",
-                              __func__);
+       if (!desc->operations->loadfs)
+               return FPGA_FAIL;
+
+       return desc->operations->loadfs(desc, buf, bsize, fpga_fsinfo);
+}
 #endif
-                       break;
 
-               default:
-                       printf ("%s: Unsupported family type, %d\n",
-                                       __FUNCTION__, desc->family);
-               }
+int xilinx_dump(xilinx_desc *desc, const void *buf, size_t bsize)
+{
+       if (!xilinx_validate (desc, (char *)__FUNCTION__)) {
+               printf ("%s: Invalid device descriptor\n", __FUNCTION__);
+               return FPGA_FAIL;
+       }
 
-       return ret_val;
+       return desc->operations->dump(desc, buf, bsize);
 }
 
-int xilinx_info (Xilinx_desc * desc)
+int xilinx_info(xilinx_desc *desc)
 {
        int ret_val = FPGA_FAIL;
 
        if (xilinx_validate (desc, (char *)__FUNCTION__)) {
                printf ("Family:        \t");
                switch (desc->family) {
-               case Xilinx_Spartan2:
+               case xilinx_spartan2:
                        printf ("Spartan-II\n");
                        break;
-               case Xilinx_Spartan3:
+               case xilinx_spartan3:
                        printf ("Spartan-III\n");
                        break;
-               case Xilinx_Virtex2:
+               case xilinx_virtex2:
                        printf ("Virtex-II\n");
                        break;
                case xilinx_zynq:
@@ -315,47 +228,7 @@ int xilinx_info (Xilinx_desc * desc)
 
                if (desc->iface_fns) {
                        printf ("Device Function Table @ 0x%p\n", desc->iface_fns);
-                       switch (desc->family) {
-                       case Xilinx_Spartan2:
-#if defined(CONFIG_FPGA_SPARTAN2)
-                               Spartan2_info (desc);
-#else
-                               /* just in case */
-                               printf ("%s: No support for Spartan-II devices.\n",
-                                               __FUNCTION__);
-#endif
-                               break;
-                       case Xilinx_Spartan3:
-#if defined(CONFIG_FPGA_SPARTAN3)
-                               Spartan3_info (desc);
-#else
-                               /* just in case */
-                               printf ("%s: No support for Spartan-III devices.\n",
-                                               __FUNCTION__);
-#endif
-                               break;
-                       case Xilinx_Virtex2:
-#if defined(CONFIG_FPGA_VIRTEX2)
-                               Virtex2_info (desc);
-#else
-                               /* just in case */
-                               printf ("%s: No support for Virtex-II devices.\n",
-                                               __FUNCTION__);
-#endif
-                               break;
-                       case xilinx_zynq:
-#if defined(CONFIG_FPGA_ZYNQPL)
-                               zynq_info(desc);
-#else
-                               /* just in case */
-                               printf("%s: No support for Zynq devices.\n",
-                                      __func__);
-#endif
-                               /* Add new family types here */
-                       default:
-                               /* we don't need a message here - we give one up above */
-                               ;
-                       }
+                       desc->operations->info(desc);
                } else
                        printf ("No Device Function Table.\n");
 
@@ -369,7 +242,7 @@ int xilinx_info (Xilinx_desc * desc)
 
 /* ------------------------------------------------------------------------- */
 
-static int xilinx_validate (Xilinx_desc * desc, char *fn)
+static int xilinx_validate(xilinx_desc *desc, char *fn)
 {
        int ret_val = false;
 
index 923a1586d8b558e7ac2241383fb9d8d7bca70c6a..68fe0f3b03afb99085fada927806cbe7afca6407 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <common.h>
 #include <asm/io.h>
+#include <fs.h>
 #include <zynqpl.h>
 #include <linux/sizes.h>
 #include <asm/arch/hardware.h>
@@ -36,7 +37,7 @@
 #define CONFIG_SYS_FPGA_PROG_TIME      (CONFIG_SYS_HZ * 4) /* 4 s */
 #endif
 
-int zynq_info(Xilinx_desc *desc)
+static int zynq_info(xilinx_desc *desc)
 {
        return FPGA_SUCCESS;
 }
@@ -147,81 +148,62 @@ static void *check_data(u8 *buf, size_t bsize, u32 *swap)
                }
                /* Loop can be huge - support CTRL + C */
                if (ctrlc())
-                       return 0;
+                       return NULL;
        }
-       return 0;
+       return NULL;
 }
 
-
-int zynq_load(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int zynq_dma_transfer(u32 srcbuf, u32 srclen, u32 dstbuf, u32 dstlen)
 {
-       unsigned long ts; /* Timestamp */
-       u32 partialbit = 0;
-       u32 i, control, isr_status, status, swap, diff;
-       u32 *buf_start;
+       unsigned long ts;
+       u32 isr_status;
 
-       /* Detect if we are going working with partial or full bitstream */
-       if (bsize != desc->size) {
-               printf("%s: Working with partial bitstream\n", __func__);
-               partialbit = 1;
-       }
-
-       buf_start = check_data((u8 *)buf, bsize, &swap);
-       if (!buf_start)
-               return FPGA_FAIL;
-
-       /* Check if data is postpone from start */
-       diff = (u32)buf_start - (u32)buf;
-       if (diff) {
-               printf("%s: Bitstream is not validated yet (diff %x)\n",
-                      __func__, diff);
-               return FPGA_FAIL;
-       }
+       /* Set up the transfer */
+       writel((u32)srcbuf, &devcfg_base->dma_src_addr);
+       writel(dstbuf, &devcfg_base->dma_dst_addr);
+       writel(srclen, &devcfg_base->dma_src_len);
+       writel(dstlen, &devcfg_base->dma_dst_len);
 
-       if ((u32)buf < SZ_1M) {
-               printf("%s: Bitstream has to be placed up to 1MB (%x)\n",
-                      __func__, (u32)buf);
-               return FPGA_FAIL;
-       }
+       isr_status = readl(&devcfg_base->int_sts);
 
-       if ((u32)buf != ALIGN((u32)buf, ARCH_DMA_MINALIGN)) {
-               u32 *new_buf = (u32 *)ALIGN((u32)buf, ARCH_DMA_MINALIGN);
+       /* Polling the PCAP_INIT status for Set */
+       ts = get_timer(0);
+       while (!(isr_status & DEVCFG_ISR_DMA_DONE)) {
+               if (isr_status & DEVCFG_ISR_ERROR_FLAGS_MASK) {
+                       debug("%s: Error: isr = 0x%08X\n", __func__,
+                             isr_status);
+                       debug("%s: Write count = 0x%08X\n", __func__,
+                             readl(&devcfg_base->write_count));
+                       debug("%s: Read count = 0x%08X\n", __func__,
+                             readl(&devcfg_base->read_count));
 
-               /*
-                * This might be dangerous but permits to flash if
-                * ARCH_DMA_MINALIGN is greater than header size
-                */
-               if (new_buf > buf_start) {
-                       debug("%s: Aligned buffer is after buffer start\n",
-                             __func__);
-                       new_buf -= ARCH_DMA_MINALIGN;
+                       return FPGA_FAIL;
                }
+               if (get_timer(ts) > CONFIG_SYS_FPGA_PROG_TIME) {
+                       printf("%s: Timeout wait for DMA to complete\n",
+                              __func__);
+                       return FPGA_FAIL;
+               }
+               isr_status = readl(&devcfg_base->int_sts);
+       }
 
-               printf("%s: Align buffer at %x to %x(swap %d)\n", __func__,
-                      (u32)buf_start, (u32)new_buf, swap);
-
-               for (i = 0; i < (bsize/4); i++)
-                       new_buf[i] = load_word(&buf_start[i], swap);
-
-               swap = SWAP_DONE;
-               buf = new_buf;
-       } else if (swap != SWAP_DONE) {
-               /* For bitstream which are aligned */
-               u32 *new_buf = (u32 *)buf;
+       debug("%s: DMA transfer is done\n", __func__);
 
-               printf("%s: Bitstream is not swapped(%d) - swap it\n", __func__,
-                      swap);
+       /* Clear out the DMA status */
+       writel(DEVCFG_ISR_DMA_DONE, &devcfg_base->int_sts);
 
-               for (i = 0; i < (bsize/4); i++)
-                       new_buf[i] = load_word(&buf_start[i], swap);
+       return FPGA_SUCCESS;
+}
 
-               swap = SWAP_DONE;
-       }
+static int zynq_dma_xfer_init(bitstream_type bstype)
+{
+       u32 status, control, isr_status;
+       unsigned long ts;
 
        /* Clear loopback bit */
        clrbits_le32(&devcfg_base->mctrl, DEVCFG_MCTRL_PCAP_LPBK);
 
-       if (!partialbit) {
+       if (bstype != BIT_PARTIAL) {
                zynq_slcr_devcfg_disable();
 
                /* Setting PCFG_PROG_B signal to high */
@@ -298,6 +280,95 @@ int zynq_load(Xilinx_desc *desc, const void *buf, size_t bsize)
                writel(DEVCFG_STATUS_DMA_DONE_CNT_MASK, &devcfg_base->status);
        }
 
+       return FPGA_SUCCESS;
+}
+
+static u32 *zynq_align_dma_buffer(u32 *buf, u32 len, u32 swap)
+{
+       u32 *new_buf;
+       u32 i;
+
+       if ((u32)buf != ALIGN((u32)buf, ARCH_DMA_MINALIGN)) {
+               new_buf = (u32 *)ALIGN((u32)buf, ARCH_DMA_MINALIGN);
+
+               /*
+                * This might be dangerous but permits to flash if
+                * ARCH_DMA_MINALIGN is greater than header size
+                */
+               if (new_buf > buf) {
+                       debug("%s: Aligned buffer is after buffer start\n",
+                             __func__);
+                       new_buf -= ARCH_DMA_MINALIGN;
+               }
+               printf("%s: Align buffer at %x to %x(swap %d)\n", __func__,
+                      (u32)buf, (u32)new_buf, swap);
+
+               for (i = 0; i < (len/4); i++)
+                       new_buf[i] = load_word(&buf[i], swap);
+
+               buf = new_buf;
+       } else if (swap != SWAP_DONE) {
+               /* For bitstream which are aligned */
+               u32 *new_buf = (u32 *)buf;
+
+               printf("%s: Bitstream is not swapped(%d) - swap it\n", __func__,
+                      swap);
+
+               for (i = 0; i < (len/4); i++)
+                       new_buf[i] = load_word(&buf[i], swap);
+       }
+
+       return buf;
+}
+
+static int zynq_validate_bitstream(xilinx_desc *desc, const void *buf,
+                                  size_t bsize, u32 blocksize, u32 *swap,
+                                  bitstream_type *bstype)
+{
+       u32 *buf_start;
+       u32 diff;
+
+       buf_start = check_data((u8 *)buf, blocksize, swap);
+
+       if (!buf_start)
+               return FPGA_FAIL;
+
+       /* Check if data is postpone from start */
+       diff = (u32)buf_start - (u32)buf;
+       if (diff) {
+               printf("%s: Bitstream is not validated yet (diff %x)\n",
+                      __func__, diff);
+               return FPGA_FAIL;
+       }
+
+       if ((u32)buf < SZ_1M) {
+               printf("%s: Bitstream has to be placed up to 1MB (%x)\n",
+                      __func__, (u32)buf);
+               return FPGA_FAIL;
+       }
+
+       if (zynq_dma_xfer_init(*bstype))
+               return FPGA_FAIL;
+
+       return 0;
+}
+
+static int zynq_load(xilinx_desc *desc, const void *buf, size_t bsize,
+                    bitstream_type bstype)
+{
+       unsigned long ts; /* Timestamp */
+       u32 isr_status, swap;
+
+       /*
+        * send bsize inplace of blocksize as it was not a bitstream
+        * in chunks
+        */
+       if (zynq_validate_bitstream(desc, buf, bsize, bsize, &swap,
+                                   &bstype))
+               return FPGA_FAIL;
+
+       buf = zynq_align_dma_buffer((u32 *)buf, bsize, swap);
+
        debug("%s: Source = 0x%08X\n", __func__, (u32)buf);
        debug("%s: Size = %zu\n", __func__, bsize);
 
@@ -305,36 +376,89 @@ int zynq_load(Xilinx_desc *desc, const void *buf, size_t bsize)
        flush_dcache_range((u32)buf, (u32)buf +
                           roundup(bsize, ARCH_DMA_MINALIGN));
 
-       /* Set up the transfer */
-       writel((u32)buf | 1, &devcfg_base->dma_src_addr);
-       writel(0xFFFFFFFF, &devcfg_base->dma_dst_addr);
-       writel(bsize >> 2, &devcfg_base->dma_src_len);
-       writel(0, &devcfg_base->dma_dst_len);
+       if (zynq_dma_transfer((u32)buf | 1, bsize >> 2, 0xffffffff, 0))
+               return FPGA_FAIL;
 
        isr_status = readl(&devcfg_base->int_sts);
-
-       /* Polling the PCAP_INIT status for Set */
+       /* Check FPGA configuration completion */
        ts = get_timer(0);
-       while (!(isr_status & DEVCFG_ISR_DMA_DONE)) {
-               if (isr_status & DEVCFG_ISR_ERROR_FLAGS_MASK) {
-                       debug("%s: Error: isr = 0x%08X\n", __func__,
-                             isr_status);
-                       debug("%s: Write count = 0x%08X\n", __func__,
-                             readl(&devcfg_base->write_count));
-                       debug("%s: Read count = 0x%08X\n", __func__,
-                             readl(&devcfg_base->read_count));
-
-                       return FPGA_FAIL;
-               }
-               if (get_timer(ts) > CONFIG_SYS_FPGA_PROG_TIME) {
-                       printf("%s: Timeout wait for DMA to complete\n",
+       while (!(isr_status & DEVCFG_ISR_PCFG_DONE)) {
+               if (get_timer(ts) > CONFIG_SYS_FPGA_WAIT) {
+                       printf("%s: Timeout wait for FPGA to config\n",
                               __func__);
                        return FPGA_FAIL;
                }
                isr_status = readl(&devcfg_base->int_sts);
        }
 
-       debug("%s: DMA transfer is done\n", __func__);
+       debug("%s: FPGA config done\n", __func__);
+
+       if (bstype != BIT_PARTIAL)
+               zynq_slcr_devcfg_enable();
+
+       return FPGA_SUCCESS;
+}
+
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+static int zynq_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
+                      fpga_fs_info *fsinfo)
+{
+       unsigned long ts; /* Timestamp */
+       u32 isr_status, swap;
+       u32 partialbit = 0;
+       u32 blocksize;
+       u32 pos = 0;
+       int fstype;
+       char *interface, *dev_part, *filename;
+
+       blocksize = fsinfo->blocksize;
+       interface = fsinfo->interface;
+       dev_part = fsinfo->dev_part;
+       filename = fsinfo->filename;
+       fstype = fsinfo->fstype;
+
+       if (fs_set_blk_dev(interface, dev_part, fstype))
+               return FPGA_FAIL;
+
+       if (fs_read(filename, (u32) buf, pos, blocksize) < 0)
+               return FPGA_FAIL;
+
+       if (zynq_validate_bitstream(desc, buf, bsize, blocksize, &swap,
+                                   &partialbit))
+               return FPGA_FAIL;
+
+       dcache_disable();
+
+       do {
+               buf = zynq_align_dma_buffer((u32 *)buf, blocksize, swap);
+
+               if (zynq_dma_transfer((u32)buf | 1, blocksize >> 2,
+                                     0xffffffff, 0))
+                       return FPGA_FAIL;
+
+               bsize -= blocksize;
+               pos   += blocksize;
+
+               if (fs_set_blk_dev(interface, dev_part, fstype))
+                       return FPGA_FAIL;
+
+               if (bsize > blocksize) {
+                       if (fs_read(filename, (u32) buf, pos, blocksize) < 0)
+                               return FPGA_FAIL;
+               } else {
+                       if (fs_read(filename, (u32) buf, pos, bsize) < 0)
+                               return FPGA_FAIL;
+               }
+       } while (bsize > blocksize);
+
+       buf = zynq_align_dma_buffer((u32 *)buf, blocksize, swap);
+
+       if (zynq_dma_transfer((u32)buf | 1, bsize >> 2, 0xffffffff, 0))
+               return FPGA_FAIL;
+
+       dcache_enable();
+
+       isr_status = readl(&devcfg_base->int_sts);
 
        /* Check FPGA configuration completion */
        ts = get_timer(0);
@@ -349,16 +473,23 @@ int zynq_load(Xilinx_desc *desc, const void *buf, size_t bsize)
 
        debug("%s: FPGA config done\n", __func__);
 
-       /* Clear out the DMA status */
-       writel(DEVCFG_ISR_DMA_DONE, &devcfg_base->int_sts);
-
        if (!partialbit)
                zynq_slcr_devcfg_enable();
 
        return FPGA_SUCCESS;
 }
+#endif
 
-int zynq_dump(Xilinx_desc *desc, const void *buf, size_t bsize)
+static int zynq_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
        return FPGA_FAIL;
 }
+
+struct xilinx_fpga_op zynq_op = {
+       .load = zynq_load,
+#if defined(CONFIG_CMD_FPGA_LOADFS)
+       .loadfs = zynq_loadfs,
+#endif
+       .dump = zynq_dump,
+       .info = zynq_info,
+};
index 0b70071871ce8046577fab9453c195d2281bc81d..6517af162815ea8e5715dabb390ed46de12f4617 100644 (file)
@@ -34,6 +34,7 @@ static struct at91_port *at91_pio_get_port(unsigned port)
 #endif
 #endif
        default:
+               printf("Error: at91_gpio: Fail to get PIO base!\n");
                return NULL;
        }
 }
@@ -200,7 +201,7 @@ int at91_set_pio_output(unsigned port, u32 pin, int value)
        struct at91_port *at91_port = at91_pio_get_port(port);
        u32 mask;
 
-       if ((port < ATMEL_PIO_PORTS) && (pin < 32)) {
+       if (at91_port && (port < ATMEL_PIO_PORTS) && (pin < 32)) {
                mask = 1 << pin;
                writel(mask, &at91_port->idr);
                writel(mask, &at91_port->pudr);
index 90c83879182c12596ef0d26518c3b07145547aec..5ba0e038624eb5456c1cf1376b34d7206311a4ec 100644 (file)
@@ -216,21 +216,7 @@ static int twsi_stop(int status)
  */
 
 #define TWSI_FREQUENCY(m, n) \
-       ((u8) (CONFIG_SYS_TCLK / (10 * (m + 1) * 2 * (1 << n))))
-
-/*
- * These are required to be reprogrammed before enabling the controller
- * because a reset loses them.
- * Default values come from the spec, but a twsi_reset will change them.
- * twsi_slave_address left uninitialized lest checkpatch.pl complains.
- */
-
-/* Baudrate generator: m (bits 7..4) =4, n (bits 3..0) =4 */
-static u8 twsi_baud_rate = 0x44; /* baudrate at controller reset */
-/* Default frequency corresponding to default m=4, n=4 */
-static u8 twsi_actual_speed = TWSI_FREQUENCY(4, 4);
-/* Default slave address is 0 (so is an uninitialized static) */
-static u8 twsi_slave_address;
+       (CONFIG_SYS_TCLK / (10 * (m + 1) * (1 << n)))
 
 /*
  * Reset controller.
@@ -238,7 +224,7 @@ static u8 twsi_slave_address;
  * Controller reset also resets the baud rate and slave address, so
  * re-establish them.
  */
-static void twsi_reset(void)
+static void twsi_reset(u8 baud_rate, u8 slave_address)
 {
        /* ensure controller will be enabled by any twsi*() function */
        twsi_control_flags = MVTWSI_CONTROL_TWSIEN;
@@ -247,9 +233,9 @@ static void twsi_reset(void)
        /* wait 2 ms -- this is what the Marvell LSP does */
        udelay(20000);
        /* set baud rate */
-       writel(twsi_baud_rate, &twsi->baudrate);
+       writel(baud_rate, &twsi->baudrate);
        /* set slave address even though we don't use it */
-       writel(twsi_slave_address, &twsi->slave_address);
+       writel(slave_address, &twsi->slave_address);
        writel(0, &twsi->xtnd_slave_addr);
        /* assert STOP but don't care for the result */
        (void) twsi_stop(0);
@@ -277,12 +263,8 @@ void i2c_init(int requested_speed, int slaveadd)
                        }
                }
        }
-       /* save baud rate and slave for later calls to twsi_reset */
-       twsi_baud_rate = baud;
-       twsi_actual_speed = highest_speed;
-       twsi_slave_address = slaveadd;
        /* reset controller */
-       twsi_reset();
+       twsi_reset(baud, slaveadd);
 }
 
 /*
index f1f65131a2a93166afffcb053e4d607029180a08..b3264af4526eb778262313334eca4d5ce4141ff4 100644 (file)
@@ -142,7 +142,7 @@ static u32 zynq_i2c_wait(struct zynq_i2c_registers *zynq_i2c, u32 mask)
                        break;
        }
 #ifdef DEBUG
-       zynq_i2c_debug_status(zynq_i2c));
+       zynq_i2c_debug_status(zynq_i2c);
 #endif
        /* Clear interrupt status flags */
        writel(int_status & mask, &zynq_i2c->interrupt_status);
@@ -235,7 +235,7 @@ static int zynq_i2c_read(struct i2c_adapter *adap, u8 dev, uint addr,
        clrbits_le32(&zynq_i2c->control, ZYNQ_I2C_CONTROL_HOLD);
 
 #ifdef DEBUG
-       zynq_i2c_debug_status();
+       zynq_i2c_debug_status(zynq_i2c);
 #endif
        return 0;
 }
index 931922bc4a7ca4b111c5babed425852d3a42925e..34febf52f0ee993b2172236dbd03a4fa7020789c 100644 (file)
@@ -28,8 +28,10 @@ obj-$(CONFIG_SPEAR_SDHCI) += spear_sdhci.o
 obj-$(CONFIG_TEGRA_MMC) += tegra_mmc.o
 obj-$(CONFIG_DWMMC) += dw_mmc.o
 obj-$(CONFIG_EXYNOS_DWMMC) += exynos_dw_mmc.o
+obj-$(CONFIG_MMC_SUNXI) += sunxi_mmc.o
 obj-$(CONFIG_ZYNQ_SDHCI) += zynq_sdhci.o
 obj-$(CONFIG_SOCFPGA_DWMMC) += socfpga_dw_mmc.o
+obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
 ifdef CONFIG_SPL_BUILD
 obj-$(CONFIG_SPL_MMC_BOOT) += fsl_esdhc_spl.o
 else
index 4c3b93d413dec99e361338fd8d7a6c360a54981b..55416136ab2a46b15371be43517837b7c46b4aae 100644 (file)
@@ -96,7 +96,7 @@ static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data)
        else if (cmd->resp_type & MMC_RSP_PRESENT)
                xfertyp |= XFERTYP_RSPTYP_48;
 
-#if defined(CONFIG_MX53) || defined(CONFIG_T4240QDS)
+#if defined(CONFIG_MX53) || defined(CONFIG_PPC_T4240)
        if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
                xfertyp |= XFERTYP_CMDTYP_ABORT;
 #endif
@@ -174,7 +174,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
        int timeout;
        struct fsl_esdhc_cfg *cfg = mmc->priv;
        struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
-#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
+
        uint wml_value;
 
        wml_value = data->blocksize/4;
@@ -184,12 +184,15 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
                        wml_value = WML_RD_WML_MAX_VAL;
 
                esdhc_clrsetbits32(&regs->wml, WML_RD_WML_MASK, wml_value);
+#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
                esdhc_write32(&regs->dsaddr, (u32)data->dest);
+#endif
        } else {
+#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
                flush_dcache_range((ulong)data->src,
                                   (ulong)data->src+data->blocks
                                         *data->blocksize);
-
+#endif
                if (wml_value > WML_WR_WML_MAX)
                        wml_value = WML_WR_WML_MAX_VAL;
                if ((esdhc_read32(&regs->prsstat) & PRSSTAT_WPSPL) == 0) {
@@ -199,19 +202,10 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
 
                esdhc_clrsetbits32(&regs->wml, WML_WR_WML_MASK,
                                        wml_value << 16);
+#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
                esdhc_write32(&regs->dsaddr, (u32)data->src);
+#endif
        }
-#else  /* CONFIG_SYS_FSL_ESDHC_USE_PIO */
-       if (!(data->flags & MMC_DATA_READ)) {
-               if ((esdhc_read32(&regs->prsstat) & PRSSTAT_WPSPL) == 0) {
-                       printf("\nThe SD card is locked. "
-                               "Can not write to a locked card.\n\n");
-                       return TIMEOUT;
-               }
-               esdhc_write32(&regs->dsaddr, (u32)data->src);
-       } else
-               esdhc_write32(&regs->dsaddr, (u32)data->dest);
-#endif /* CONFIG_SYS_FSL_ESDHC_USE_PIO */
 
        esdhc_write32(&regs->blkattr, data->blocks << 16 | data->blocksize);
 
@@ -252,6 +246,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
        return 0;
 }
 
+#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO
 static void check_and_invalidate_dcache_range
        (struct mmc_cmd *cmd,
         struct mmc_data *data) {
@@ -261,6 +256,8 @@ static void check_and_invalidate_dcache_range
        unsigned end = start+size ;
        invalidate_dcache_range(start, end);
 }
+#endif
+
 /*
  * Sends a command out on the bus.  Takes the mmc pointer,
  * a command pointer, and an optional data pointer.
@@ -388,9 +385,10 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
                                goto out;
                        }
                } while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE);
-#endif
+
                if (data->flags & MMC_DATA_READ)
                        check_and_invalidate_dcache_range(cmd, data);
+#endif
        }
 
 out:
index acca0269e585a702fd9dfac5877a0bc449ab2b27..a57a9b1faff2f31079dc2349fd2240f82f56a894 100644 (file)
@@ -243,9 +243,10 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
 #ifdef DEBUG
                        if (data->flags & MMC_DATA_READ)
                        {
+                               u32 cnt = word_count * 4;
                                printf("Read Data:\n");
-                               print_buffer(0, data->dest, 1,
-                                       word_count*4, 0);
+                               print_buffer(0, data->dest + cnt * block_count,
+                                            1, cnt, 0);
                        }
 #endif
 #ifdef DEBUG
index 08187d5f3ead245d7327fe3522758d32fad1bec2..55c2c68cdb23218945d0af727632745897278d72 100644 (file)
@@ -150,6 +150,8 @@ int mmc_send_status(struct mmc *mmc, int timeout)
 #endif
                return TIMEOUT;
        }
+       if (cmd.response[0] & MMC_STATUS_SWITCH_ERROR)
+               return SWITCH_ERR;
 
        return 0;
 }
@@ -504,7 +506,7 @@ static int mmc_change_freq(struct mmc *mmc)
        err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, 1);
 
        if (err)
-               return err;
+               return err == SWITCH_ERR ? 0 : err;
 
        /* Now check to see that it worked */
        err = mmc_send_ext_csd(mmc, ext_csd);
@@ -556,6 +558,32 @@ static int mmc_set_capacity(struct mmc *mmc, int part_num)
        return 0;
 }
 
+int mmc_select_hwpart(int dev_num, int hwpart)
+{
+       struct mmc *mmc = find_mmc_device(dev_num);
+       int ret;
+
+       if (!mmc)
+               return -1;
+
+       if (mmc->part_num == hwpart)
+               return 0;
+
+       if (mmc->part_config == MMCPART_NOAVAILABLE) {
+               printf("Card doesn't support part_switch\n");
+               return -1;
+       }
+
+       ret = mmc_switch_part(dev_num, hwpart);
+       if (ret)
+               return -1;
+
+       mmc->part_num = hwpart;
+
+       return 0;
+}
+
+
 int mmc_switch_part(int dev_num, unsigned int part_num)
 {
        struct mmc *mmc = find_mmc_device(dev_num);
@@ -1320,10 +1348,13 @@ static int mmc_complete_init(struct mmc *mmc)
 int mmc_init(struct mmc *mmc)
 {
        int err = IN_PROGRESS;
-       unsigned start = get_timer(0);
+       unsigned start;
 
        if (mmc->has_init)
                return 0;
+
+       start = get_timer(0);
+
        if (!mmc->init_in_progress)
                err = mmc_start_init(mmc);
 
diff --git a/drivers/mmc/rpmb.c b/drivers/mmc/rpmb.c
new file mode 100644 (file)
index 0000000..05936f5
--- /dev/null
@@ -0,0 +1,323 @@
+/*
+ * Copyright 2014, Staubli Faverges
+ * Pierre Aubert
+ *
+ * eMMC- Replay Protected Memory Block
+ * According to JEDEC Standard No. 84-A441
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <common.h>
+#include <mmc.h>
+#include <sha256.h>
+#include "mmc_private.h"
+
+/* Request codes */
+#define RPMB_REQ_KEY           1
+#define RPMB_REQ_WCOUNTER      2
+#define RPMB_REQ_WRITE_DATA    3
+#define RPMB_REQ_READ_DATA     4
+#define RPMB_REQ_STATUS                5
+
+/* Response code */
+#define RPMB_RESP_KEY          0x0100
+#define RPMB_RESP_WCOUNTER     0x0200
+#define RPMB_RESP_WRITE_DATA   0x0300
+#define RPMB_RESP_READ_DATA    0x0400
+
+/* Error codes */
+#define RPMB_OK                        0
+#define RPMB_ERR_GENERAL       1
+#define RPMB_ERR_AUTH  2
+#define RPMB_ERR_COUNTER       3
+#define RPMB_ERR_ADDRESS       4
+#define RPMB_ERR_WRITE         5
+#define RPMB_ERR_READ          6
+#define RPMB_ERR_KEY           7
+#define RPMB_ERR_CNT_EXPIRED   0x80
+#define RPMB_ERR_MSK           0x7
+
+/* Sizes of RPMB data frame */
+#define RPMB_SZ_STUFF          196
+#define RPMB_SZ_MAC            32
+#define RPMB_SZ_DATA           256
+#define RPMB_SZ_NONCE          16
+
+#define SHA256_BLOCK_SIZE      64
+
+/* Error messages */
+static const char * const rpmb_err_msg[] = {
+       "",
+       "General failure",
+       "Authentication failure",
+       "Counter failure",
+       "Address failure",
+       "Write failure",
+       "Read failure",
+       "Authentication key not yet programmed",
+};
+
+
+/* Structure of RPMB data frame. */
+struct s_rpmb {
+       unsigned char stuff[RPMB_SZ_STUFF];
+       unsigned char mac[RPMB_SZ_MAC];
+       unsigned char data[RPMB_SZ_DATA];
+       unsigned char nonce[RPMB_SZ_NONCE];
+       unsigned long write_counter;
+       unsigned short address;
+       unsigned short block_count;
+       unsigned short result;
+       unsigned short request;
+};
+
+static int mmc_set_blockcount(struct mmc *mmc, unsigned int blockcount,
+                             bool is_rel_write)
+{
+       struct mmc_cmd cmd = {0};
+
+       cmd.cmdidx = MMC_CMD_SET_BLOCK_COUNT;
+       cmd.cmdarg = blockcount & 0x0000FFFF;
+       if (is_rel_write)
+               cmd.cmdarg |= 1 << 31;
+       cmd.resp_type = MMC_RSP_R1;
+
+       return mmc_send_cmd(mmc, &cmd, NULL);
+}
+static int mmc_rpmb_request(struct mmc *mmc, const struct s_rpmb *s,
+                           unsigned int count, bool is_rel_write)
+{
+       struct mmc_cmd cmd = {0};
+       struct mmc_data data;
+       int ret;
+
+       ret = mmc_set_blockcount(mmc, count, is_rel_write);
+       if (ret) {
+#ifdef CONFIG_MMC_RPMB_TRACE
+               printf("%s:mmc_set_blockcount-> %d\n", __func__, ret);
+#endif
+               return 1;
+       }
+
+       cmd.cmdidx = MMC_CMD_WRITE_MULTIPLE_BLOCK;
+       cmd.cmdarg = 0;
+       cmd.resp_type = MMC_RSP_R1b;
+
+       data.src = (const char *)s;
+       data.blocks = 1;
+       data.blocksize = MMC_MAX_BLOCK_LEN;
+       data.flags = MMC_DATA_WRITE;
+
+       ret = mmc_send_cmd(mmc, &cmd, &data);
+       if (ret) {
+#ifdef CONFIG_MMC_RPMB_TRACE
+               printf("%s:mmc_send_cmd-> %d\n", __func__, ret);
+#endif
+               return 1;
+       }
+       return 0;
+}
+static int mmc_rpmb_response(struct mmc *mmc, struct s_rpmb *s,
+                            unsigned short expected)
+{
+       struct mmc_cmd cmd = {0};
+       struct mmc_data data;
+       int ret;
+
+       ret = mmc_set_blockcount(mmc, 1, false);
+       if (ret) {
+#ifdef CONFIG_MMC_RPMB_TRACE
+               printf("%s:mmc_set_blockcount-> %d\n", __func__, ret);
+#endif
+               return -1;
+       }
+       cmd.cmdidx = MMC_CMD_READ_MULTIPLE_BLOCK;
+       cmd.cmdarg = 0;
+       cmd.resp_type = MMC_RSP_R1;
+
+       data.dest = (char *)s;
+       data.blocks = 1;
+       data.blocksize = MMC_MAX_BLOCK_LEN;
+       data.flags = MMC_DATA_READ;
+
+       ret = mmc_send_cmd(mmc, &cmd, &data);
+       if (ret) {
+#ifdef CONFIG_MMC_RPMB_TRACE
+               printf("%s:mmc_send_cmd-> %d\n", __func__, ret);
+#endif
+               return -1;
+       }
+       /* Check the response and the status */
+       if (be16_to_cpu(s->request) != expected) {
+#ifdef CONFIG_MMC_RPMB_TRACE
+               printf("%s:response= %x\n", __func__,
+                      be16_to_cpu(s->request));
+#endif
+               return -1;
+       }
+       ret = be16_to_cpu(s->result);
+       if (ret) {
+               printf("%s %s\n", rpmb_err_msg[ret & RPMB_ERR_MSK],
+                      (ret & RPMB_ERR_CNT_EXPIRED) ?
+                      "Write counter has expired" : "");
+       }
+
+       /* Return the status of the command */
+       return ret;
+}
+static int mmc_rpmb_status(struct mmc *mmc, unsigned short expected)
+{
+       ALLOC_CACHE_ALIGN_BUFFER(struct s_rpmb, rpmb_frame, 1);
+
+       memset(rpmb_frame, 0, sizeof(struct s_rpmb));
+       rpmb_frame->request = cpu_to_be16(RPMB_REQ_STATUS);
+       if (mmc_rpmb_request(mmc, rpmb_frame, 1, false))
+               return -1;
+
+       /* Read the result */
+       return mmc_rpmb_response(mmc, rpmb_frame, expected);
+}
+static void rpmb_hmac(unsigned char *key, unsigned char *buff, int len,
+                     unsigned char *output)
+{
+       sha256_context ctx;
+       int i;
+       unsigned char k_ipad[SHA256_BLOCK_SIZE];
+       unsigned char k_opad[SHA256_BLOCK_SIZE];
+
+       sha256_starts(&ctx);
+
+       /* According to RFC 4634, the HMAC transform looks like:
+          SHA(K XOR opad, SHA(K XOR ipad, text))
+
+          where K is an n byte key.
+          ipad is the byte 0x36 repeated blocksize times
+          opad is the byte 0x5c repeated blocksize times
+          and text is the data being protected.
+       */
+
+       for (i = 0; i < RPMB_SZ_MAC; i++) {
+               k_ipad[i] = key[i] ^ 0x36;
+               k_opad[i] = key[i] ^ 0x5c;
+       }
+       /* remaining pad bytes are '\0' XOR'd with ipad and opad values */
+       for ( ; i < SHA256_BLOCK_SIZE; i++) {
+               k_ipad[i] = 0x36;
+               k_opad[i] = 0x5c;
+       }
+       sha256_update(&ctx, k_ipad, SHA256_BLOCK_SIZE);
+       sha256_update(&ctx, buff, len);
+       sha256_finish(&ctx, output);
+
+       /* Init context for second pass */
+       sha256_starts(&ctx);
+
+       /* start with outer pad */
+       sha256_update(&ctx, k_opad, SHA256_BLOCK_SIZE);
+
+       /* then results of 1st hash */
+       sha256_update(&ctx, output, RPMB_SZ_MAC);
+
+       /* finish up 2nd pass */
+       sha256_finish(&ctx, output);
+}
+int mmc_rpmb_get_counter(struct mmc *mmc, unsigned long *pcounter)
+{
+       int ret;
+       ALLOC_CACHE_ALIGN_BUFFER(struct s_rpmb, rpmb_frame, 1);
+
+       /* Fill the request */
+       memset(rpmb_frame, 0, sizeof(struct s_rpmb));
+       rpmb_frame->request = cpu_to_be16(RPMB_REQ_WCOUNTER);
+       if (mmc_rpmb_request(mmc, rpmb_frame, 1, false))
+               return -1;
+
+       /* Read the result */
+       ret = mmc_rpmb_response(mmc, rpmb_frame, RPMB_RESP_WCOUNTER);
+       if (ret)
+               return ret;
+
+       *pcounter = be32_to_cpu(rpmb_frame->write_counter);
+       return 0;
+}
+int mmc_rpmb_set_key(struct mmc *mmc, void *key)
+{
+       ALLOC_CACHE_ALIGN_BUFFER(struct s_rpmb, rpmb_frame, 1);
+       /* Fill the request */
+       memset(rpmb_frame, 0, sizeof(struct s_rpmb));
+       rpmb_frame->request = cpu_to_be16(RPMB_REQ_KEY);
+       memcpy(rpmb_frame->mac, key, RPMB_SZ_MAC);
+
+       if (mmc_rpmb_request(mmc, rpmb_frame, 1, true))
+               return -1;
+
+       /* read the operation status */
+       return mmc_rpmb_status(mmc, RPMB_RESP_KEY);
+}
+int mmc_rpmb_read(struct mmc *mmc, void *addr, unsigned short blk,
+                 unsigned short cnt, unsigned char *key)
+{
+       ALLOC_CACHE_ALIGN_BUFFER(struct s_rpmb, rpmb_frame, 1);
+       int i;
+
+       for (i = 0; i < cnt; i++) {
+               /* Fill the request */
+               memset(rpmb_frame, 0, sizeof(struct s_rpmb));
+               rpmb_frame->address = cpu_to_be16(blk + i);
+               rpmb_frame->request = cpu_to_be16(RPMB_REQ_READ_DATA);
+               if (mmc_rpmb_request(mmc, rpmb_frame, 1, false))
+                       break;
+
+               /* Read the result */
+               if (mmc_rpmb_response(mmc, rpmb_frame, RPMB_RESP_READ_DATA))
+                       break;
+
+               /* Check the HMAC if key is provided */
+               if (key) {
+                       unsigned char ret_hmac[RPMB_SZ_MAC];
+
+                       rpmb_hmac(key, rpmb_frame->data, 284, ret_hmac);
+                       if (memcmp(ret_hmac, rpmb_frame->mac, RPMB_SZ_MAC)) {
+                               printf("MAC error on block #%d\n", i);
+                               break;
+                       }
+               }
+               /* Copy data */
+               memcpy(addr + i * RPMB_SZ_DATA, rpmb_frame->data, RPMB_SZ_DATA);
+       }
+       return i;
+}
+int mmc_rpmb_write(struct mmc *mmc, void *addr, unsigned short blk,
+                 unsigned short cnt, unsigned char *key)
+{
+       ALLOC_CACHE_ALIGN_BUFFER(struct s_rpmb, rpmb_frame, 1);
+       unsigned long wcount;
+       int i;
+
+       for (i = 0; i < cnt; i++) {
+               if (mmc_rpmb_get_counter(mmc, &wcount)) {
+                       printf("Cannot read RPMB write counter\n");
+                       break;
+               }
+
+               /* Fill the request */
+               memset(rpmb_frame, 0, sizeof(struct s_rpmb));
+               memcpy(rpmb_frame->data, addr + i * RPMB_SZ_DATA, RPMB_SZ_DATA);
+               rpmb_frame->address = cpu_to_be16(blk + i);
+               rpmb_frame->block_count = cpu_to_be16(1);
+               rpmb_frame->write_counter = cpu_to_be32(wcount);
+               rpmb_frame->request = cpu_to_be16(RPMB_REQ_WRITE_DATA);
+               /* Computes HMAC */
+               rpmb_hmac(key, rpmb_frame->data, 284, rpmb_frame->mac);
+
+               if (mmc_rpmb_request(mmc, rpmb_frame, 1, true))
+                       break;
+
+               /* Get status */
+               if (mmc_rpmb_status(mmc, RPMB_RESP_WRITE_DATA))
+                       break;
+       }
+       return i;
+}
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
new file mode 100644 (file)
index 0000000..eb7b115
--- /dev/null
@@ -0,0 +1,503 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Aaron <leafy.myeh@allwinnertech.com>
+ *
+ * MMC driver for allwinner sunxi platform.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <mmc.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/mmc.h>
+
+struct sunxi_mmc_des {
+       u32 reserved1_1:1;
+       u32 dic:1;              /* disable interrupt on completion */
+       u32 last_des:1;         /* 1-this data buffer is the last buffer */
+       u32 first_des:1;                /* 1-data buffer is the first buffer,
+                                  0-data buffer contained in the next
+                                  descriptor is 1st buffer */
+       u32 des_chain:1;        /* 1-the 2nd address in the descriptor is the
+                                  next descriptor address */
+       u32 end_of_ring:1;      /* 1-last descriptor flag when using dual
+                                  data buffer in descriptor */
+       u32 reserved1_2:24;
+       u32 card_err_sum:1;     /* transfer error flag */
+       u32 own:1;              /* des owner:1-idma owns it, 0-host owns it */
+#define SDXC_DES_NUM_SHIFT 16
+#define SDXC_DES_BUFFER_MAX_LEN        (1 << SDXC_DES_NUM_SHIFT)
+       u32 data_buf1_sz:16;
+       u32 data_buf2_sz:16;
+       u32 buf_addr_ptr1;
+       u32 buf_addr_ptr2;
+};
+
+struct sunxi_mmc_host {
+       unsigned mmc_no;
+       uint32_t *mclkreg;
+       unsigned database;
+       unsigned fatal_err;
+       unsigned mod_clk;
+       struct sunxi_mmc *reg;
+       struct mmc_config cfg;
+};
+
+/* support 4 mmc hosts */
+struct sunxi_mmc_host mmc_host[4];
+
+static int mmc_resource_init(int sdc_no)
+{
+       struct sunxi_mmc_host *mmchost = &mmc_host[sdc_no];
+       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       debug("init mmc %d resource\n", sdc_no);
+
+       switch (sdc_no) {
+       case 0:
+               mmchost->reg = (struct sunxi_mmc *)SUNXI_MMC0_BASE;
+               mmchost->mclkreg = &ccm->sd0_clk_cfg;
+               break;
+       case 1:
+               mmchost->reg = (struct sunxi_mmc *)SUNXI_MMC1_BASE;
+               mmchost->mclkreg = &ccm->sd1_clk_cfg;
+               break;
+       case 2:
+               mmchost->reg = (struct sunxi_mmc *)SUNXI_MMC2_BASE;
+               mmchost->mclkreg = &ccm->sd2_clk_cfg;
+               break;
+       case 3:
+               mmchost->reg = (struct sunxi_mmc *)SUNXI_MMC3_BASE;
+               mmchost->mclkreg = &ccm->sd3_clk_cfg;
+               break;
+       default:
+               printf("Wrong mmc number %d\n", sdc_no);
+               return -1;
+       }
+       mmchost->database = (unsigned int)mmchost->reg + 0x100;
+       mmchost->mmc_no = sdc_no;
+
+       return 0;
+}
+
+static int mmc_clk_io_on(int sdc_no)
+{
+       unsigned int pll_clk;
+       unsigned int divider;
+       struct sunxi_mmc_host *mmchost = &mmc_host[sdc_no];
+       struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       debug("init mmc %d clock and io\n", sdc_no);
+
+       /* config ahb clock */
+       setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_MMC(sdc_no));
+
+       /* config mod clock */
+       pll_clk = clock_get_pll6();
+       /* should be close to 100 MHz but no more, so round up */
+       divider = ((pll_clk + 99999999) / 100000000) - 1;
+       writel(CCM_MMC_CTRL_ENABLE | CCM_MMC_CTRL_PLL6 | divider,
+              mmchost->mclkreg);
+       mmchost->mod_clk = pll_clk / (divider + 1);
+
+       return 0;
+}
+
+static int mmc_update_clk(struct mmc *mmc)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       unsigned int cmd;
+       unsigned timeout_msecs = 2000;
+
+       cmd = SUNXI_MMC_CMD_START |
+             SUNXI_MMC_CMD_UPCLK_ONLY |
+             SUNXI_MMC_CMD_WAIT_PRE_OVER;
+       writel(cmd, &mmchost->reg->cmd);
+       while (readl(&mmchost->reg->cmd) & SUNXI_MMC_CMD_START) {
+               if (!timeout_msecs--)
+                       return -1;
+               udelay(1000);
+       }
+
+       /* clock update sets various irq status bits, clear these */
+       writel(readl(&mmchost->reg->rint), &mmchost->reg->rint);
+
+       return 0;
+}
+
+static int mmc_config_clock(struct mmc *mmc, unsigned div)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       unsigned rval = readl(&mmchost->reg->clkcr);
+
+       /* Disable Clock */
+       rval &= ~SUNXI_MMC_CLK_ENABLE;
+       writel(rval, &mmchost->reg->clkcr);
+       if (mmc_update_clk(mmc))
+               return -1;
+
+       /* Change Divider Factor */
+       rval &= ~SUNXI_MMC_CLK_DIVIDER_MASK;
+       rval |= div;
+       writel(rval, &mmchost->reg->clkcr);
+       if (mmc_update_clk(mmc))
+               return -1;
+       /* Re-enable Clock */
+       rval |= SUNXI_MMC_CLK_ENABLE;
+       writel(rval, &mmchost->reg->clkcr);
+
+       if (mmc_update_clk(mmc))
+               return -1;
+
+       return 0;
+}
+
+static void mmc_set_ios(struct mmc *mmc)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       unsigned int clkdiv = 0;
+
+       debug("set ios: bus_width: %x, clock: %d, mod_clk: %d\n",
+             mmc->bus_width, mmc->clock, mmchost->mod_clk);
+
+       /* Change clock first */
+       clkdiv = (mmchost->mod_clk + (mmc->clock >> 1)) / mmc->clock / 2;
+       if (mmc->clock) {
+               if (mmc_config_clock(mmc, clkdiv)) {
+                       mmchost->fatal_err = 1;
+                       return;
+               }
+       }
+
+       /* Change bus width */
+       if (mmc->bus_width == 8)
+               writel(0x2, &mmchost->reg->width);
+       else if (mmc->bus_width == 4)
+               writel(0x1, &mmchost->reg->width);
+       else
+               writel(0x0, &mmchost->reg->width);
+}
+
+static int mmc_core_init(struct mmc *mmc)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+
+       /* Reset controller */
+       writel(SUNXI_MMC_GCTRL_RESET, &mmchost->reg->gctrl);
+
+       return 0;
+}
+
+static int mmc_trans_data_by_cpu(struct mmc *mmc, struct mmc_data *data)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       const int reading = !!(data->flags & MMC_DATA_READ);
+       const uint32_t status_bit = reading ? SUNXI_MMC_STATUS_FIFO_EMPTY :
+                                             SUNXI_MMC_STATUS_FIFO_FULL;
+       unsigned i;
+       unsigned byte_cnt = data->blocksize * data->blocks;
+       unsigned timeout_msecs = 2000;
+       unsigned *buff = (unsigned int *)(reading ? data->dest : data->src);
+
+       for (i = 0; i < (byte_cnt >> 2); i++) {
+               while (readl(&mmchost->reg->status) & status_bit) {
+                       if (!timeout_msecs--)
+                               return -1;
+                       udelay(1000);
+               }
+
+               if (reading)
+                       buff[i] = readl(mmchost->database);
+               else
+                       writel(buff[i], mmchost->database);
+       }
+
+       return 0;
+}
+
+static int mmc_trans_data_by_dma(struct mmc *mmc, struct mmc_data *data)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       unsigned byte_cnt = data->blocksize * data->blocks;
+       unsigned char *buff;
+       unsigned des_idx = 0;
+       unsigned buff_frag_num =
+               (byte_cnt + SDXC_DES_BUFFER_MAX_LEN - 1) >> SDXC_DES_NUM_SHIFT;
+       unsigned remain;
+       unsigned i, rval;
+       ALLOC_CACHE_ALIGN_BUFFER(struct sunxi_mmc_des, pdes, buff_frag_num);
+
+       buff = data->flags & MMC_DATA_READ ?
+           (unsigned char *)data->dest : (unsigned char *)data->src;
+       remain = byte_cnt & (SDXC_DES_BUFFER_MAX_LEN - 1);
+
+       flush_cache((unsigned long)buff, (unsigned long)byte_cnt);
+       for (i = 0; i < buff_frag_num; i++, des_idx++) {
+               memset((void *)&pdes[des_idx], 0, sizeof(struct sunxi_mmc_des));
+               pdes[des_idx].des_chain = 1;
+               pdes[des_idx].own = 1;
+               pdes[des_idx].dic = 1;
+               if (buff_frag_num > 1 && i != buff_frag_num - 1)
+                       pdes[des_idx].data_buf1_sz = 0; /* 0 == max_len */
+               else
+                       pdes[des_idx].data_buf1_sz = remain;
+
+               pdes[des_idx].buf_addr_ptr1 =
+                   (u32) buff + i * SDXC_DES_BUFFER_MAX_LEN;
+               if (i == 0)
+                       pdes[des_idx].first_des = 1;
+
+               if (i == buff_frag_num - 1) {
+                       pdes[des_idx].dic = 0;
+                       pdes[des_idx].last_des = 1;
+                       pdes[des_idx].end_of_ring = 1;
+                       pdes[des_idx].buf_addr_ptr2 = 0;
+               } else {
+                       pdes[des_idx].buf_addr_ptr2 = (u32)&pdes[des_idx + 1];
+               }
+       }
+       flush_cache((unsigned long)pdes,
+                   sizeof(struct sunxi_mmc_des) * (des_idx + 1));
+
+       rval = readl(&mmchost->reg->gctrl);
+       /* Enable DMA */
+       writel(rval | SUNXI_MMC_GCTRL_DMA_RESET | SUNXI_MMC_GCTRL_DMA_ENABLE,
+              &mmchost->reg->gctrl);
+       /* Reset iDMA */
+       writel(SUNXI_MMC_IDMAC_RESET, &mmchost->reg->dmac);
+       /* Enable iDMA */
+       writel(SUNXI_MMC_IDMAC_FIXBURST | SUNXI_MMC_IDMAC_ENABLE,
+              &mmchost->reg->dmac);
+       rval = readl(&mmchost->reg->idie) &
+               ~(SUNXI_MMC_IDIE_TXIRQ|SUNXI_MMC_IDIE_RXIRQ);
+       if (data->flags & MMC_DATA_WRITE)
+               rval |= SUNXI_MMC_IDIE_TXIRQ;
+       else
+               rval |= SUNXI_MMC_IDIE_RXIRQ;
+       writel(rval, &mmchost->reg->idie);
+       writel((u32) pdes, &mmchost->reg->dlba);
+       writel((0x2 << 28) | (0x7 << 16) | (0x01 << 3),
+              &mmchost->reg->ftrglevel);
+
+       return 0;
+}
+
+static void mmc_enable_dma_accesses(struct mmc *mmc, int dma)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+
+       unsigned int gctrl = readl(&mmchost->reg->gctrl);
+       if (dma)
+               gctrl &= ~SUNXI_MMC_GCTRL_ACCESS_BY_AHB;
+       else
+               gctrl |= SUNXI_MMC_GCTRL_ACCESS_BY_AHB;
+       writel(gctrl, &mmchost->reg->gctrl);
+}
+
+static int mmc_rint_wait(struct mmc *mmc, unsigned int timeout_msecs,
+                        unsigned int done_bit, const char *what)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       unsigned int status;
+
+       do {
+               status = readl(&mmchost->reg->rint);
+               if (!timeout_msecs-- ||
+                   (status & SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT)) {
+                       debug("%s timeout %x\n", what,
+                             status & SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT);
+                       return TIMEOUT;
+               }
+               udelay(1000);
+       } while (!(status & done_bit));
+
+       return 0;
+}
+
+static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
+                       struct mmc_data *data)
+{
+       struct sunxi_mmc_host *mmchost = mmc->priv;
+       unsigned int cmdval = SUNXI_MMC_CMD_START;
+       unsigned int timeout_msecs;
+       int error = 0;
+       unsigned int status = 0;
+       unsigned int usedma = 0;
+       unsigned int bytecnt = 0;
+
+       if (mmchost->fatal_err)
+               return -1;
+       if (cmd->resp_type & MMC_RSP_BUSY)
+               debug("mmc cmd %d check rsp busy\n", cmd->cmdidx);
+       if (cmd->cmdidx == 12)
+               return 0;
+
+       if (!cmd->cmdidx)
+               cmdval |= SUNXI_MMC_CMD_SEND_INIT_SEQ;
+       if (cmd->resp_type & MMC_RSP_PRESENT)
+               cmdval |= SUNXI_MMC_CMD_RESP_EXPIRE;
+       if (cmd->resp_type & MMC_RSP_136)
+               cmdval |= SUNXI_MMC_CMD_LONG_RESPONSE;
+       if (cmd->resp_type & MMC_RSP_CRC)
+               cmdval |= SUNXI_MMC_CMD_CHK_RESPONSE_CRC;
+
+       if (data) {
+               if ((u32) data->dest & 0x3) {
+                       error = -1;
+                       goto out;
+               }
+
+               cmdval |= SUNXI_MMC_CMD_DATA_EXPIRE|SUNXI_MMC_CMD_WAIT_PRE_OVER;
+               if (data->flags & MMC_DATA_WRITE)
+                       cmdval |= SUNXI_MMC_CMD_WRITE;
+               if (data->blocks > 1)
+                       cmdval |= SUNXI_MMC_CMD_AUTO_STOP;
+               writel(data->blocksize, &mmchost->reg->blksz);
+               writel(data->blocks * data->blocksize, &mmchost->reg->bytecnt);
+       }
+
+       debug("mmc %d, cmd %d(0x%08x), arg 0x%08x\n", mmchost->mmc_no,
+             cmd->cmdidx, cmdval | cmd->cmdidx, cmd->cmdarg);
+       writel(cmd->cmdarg, &mmchost->reg->arg);
+
+       if (!data)
+               writel(cmdval | cmd->cmdidx, &mmchost->reg->cmd);
+
+       /*
+        * transfer data and check status
+        * STATREG[2] : FIFO empty
+        * STATREG[3] : FIFO full
+        */
+       if (data) {
+               int ret = 0;
+
+               bytecnt = data->blocksize * data->blocks;
+               debug("trans data %d bytes\n", bytecnt);
+#if defined(CONFIG_MMC_SUNXI_USE_DMA) && !defined(CONFIG_SPL_BUILD)
+               if (bytecnt > 64) {
+#else
+               if (0) {
+#endif
+                       usedma = 1;
+                       mmc_enable_dma_accesses(mmc, 1);
+                       ret = mmc_trans_data_by_dma(mmc, data);
+                       writel(cmdval | cmd->cmdidx, &mmchost->reg->cmd);
+               } else {
+                       mmc_enable_dma_accesses(mmc, 0);
+                       writel(cmdval | cmd->cmdidx, &mmchost->reg->cmd);
+                       ret = mmc_trans_data_by_cpu(mmc, data);
+               }
+               if (ret) {
+                       error = readl(&mmchost->reg->rint) & \
+                               SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT;
+                       error = TIMEOUT;
+                       goto out;
+               }
+       }
+
+       error = mmc_rint_wait(mmc, 0xfffff, SUNXI_MMC_RINT_COMMAND_DONE, "cmd");
+       if (error)
+               goto out;
+
+       if (data) {
+               timeout_msecs = usedma ? 120 * bytecnt : 120;
+               debug("cacl timeout %x msec\n", timeout_msecs);
+               error = mmc_rint_wait(mmc, timeout_msecs,
+                                     data->blocks > 1 ?
+                                     SUNXI_MMC_RINT_AUTO_COMMAND_DONE :
+                                     SUNXI_MMC_RINT_DATA_OVER,
+                                     "data");
+               if (error)
+                       goto out;
+       }
+
+       if (cmd->resp_type & MMC_RSP_BUSY) {
+               timeout_msecs = 2000;
+               do {
+                       status = readl(&mmchost->reg->status);
+                       if (!timeout_msecs--) {
+                               debug("busy timeout\n");
+                               error = TIMEOUT;
+                               goto out;
+                       }
+                       udelay(1000);
+               } while (status & SUNXI_MMC_STATUS_CARD_DATA_BUSY);
+       }
+
+       if (cmd->resp_type & MMC_RSP_136) {
+               cmd->response[0] = readl(&mmchost->reg->resp3);
+               cmd->response[1] = readl(&mmchost->reg->resp2);
+               cmd->response[2] = readl(&mmchost->reg->resp1);
+               cmd->response[3] = readl(&mmchost->reg->resp0);
+               debug("mmc resp 0x%08x 0x%08x 0x%08x 0x%08x\n",
+                     cmd->response[3], cmd->response[2],
+                     cmd->response[1], cmd->response[0]);
+       } else {
+               cmd->response[0] = readl(&mmchost->reg->resp0);
+               debug("mmc resp 0x%08x\n", cmd->response[0]);
+       }
+out:
+       if (data && usedma) {
+               /* IDMASTAREG
+                * IDST[0] : idma tx int
+                * IDST[1] : idma rx int
+                * IDST[2] : idma fatal bus error
+                * IDST[4] : idma descriptor invalid
+                * IDST[5] : idma error summary
+                * IDST[8] : idma normal interrupt sumary
+                * IDST[9] : idma abnormal interrupt sumary
+                */
+               status = readl(&mmchost->reg->idst);
+               writel(status, &mmchost->reg->idst);
+               writel(0, &mmchost->reg->idie);
+               writel(0, &mmchost->reg->dmac);
+               writel(readl(&mmchost->reg->gctrl) & ~SUNXI_MMC_GCTRL_DMA_ENABLE,
+                      &mmchost->reg->gctrl);
+       }
+       if (error < 0) {
+               writel(SUNXI_MMC_GCTRL_RESET, &mmchost->reg->gctrl);
+               mmc_update_clk(mmc);
+       }
+       writel(0xffffffff, &mmchost->reg->rint);
+       writel(readl(&mmchost->reg->gctrl) | SUNXI_MMC_GCTRL_FIFO_RESET,
+              &mmchost->reg->gctrl);
+
+       return error;
+}
+
+static const struct mmc_ops sunxi_mmc_ops = {
+       .send_cmd       = mmc_send_cmd,
+       .set_ios        = mmc_set_ios,
+       .init           = mmc_core_init,
+};
+
+int sunxi_mmc_init(int sdc_no)
+{
+       struct mmc_config *cfg = &mmc_host[sdc_no].cfg;
+
+       memset(&mmc_host[sdc_no], 0, sizeof(struct sunxi_mmc_host));
+
+       cfg->name = "SUNXI SD/MMC";
+       cfg->ops  = &sunxi_mmc_ops;
+
+       cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
+       cfg->host_caps = MMC_MODE_4BIT;
+       cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS;
+       cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
+
+       cfg->f_min = 400000;
+       cfg->f_max = 52000000;
+
+       mmc_resource_init(sdc_no);
+       mmc_clk_io_on(sdc_no);
+
+       if (mmc_create(cfg, &mmc_host[sdc_no]) == NULL)
+               return -1;
+
+       return 0;
+}
index 881a63618c3205786fbc866b5b2b3d90af240024..bf99b8e6759c1b0c6ad2c126fc75c322c9364322 100644 (file)
@@ -403,7 +403,7 @@ static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
                        dat[byte_pos] ^= 1 << bit_pos;
                        printf("nand: bit-flip corrected @data=%d\n", byte_pos);
                } else if (byte_pos < error_max) {
-                       read_ecc[byte_pos - SECTOR_BYTES] = 1 << bit_pos;
+                       read_ecc[byte_pos - SECTOR_BYTES] ^= 1 << bit_pos;
                        printf("nand: bit-flip corrected @oob=%d\n", byte_pos -
                                                                SECTOR_BYTES);
                } else {
index c45593bcc0970d18f2cb4b5bd6af518d410b4a0e..7186e3b491ecabd6128720a6284a1ef42d4b93c0 100644 (file)
@@ -249,7 +249,7 @@ static int dw_eth_init(struct eth_device *dev, bd_t *bis)
        rx_descs_init(dev);
        tx_descs_init(dev);
 
-       writel(FIXEDBURST | PRIORXTX_41 | BURST_16, &dma_p->busmode);
+       writel(FIXEDBURST | PRIORXTX_41 | DMA_PBL, &dma_p->busmode);
 
        writel(readl(&dma_p->opmode) | FLUSHTXFIFO | STOREFORWARD,
               &dma_p->opmode);
@@ -280,10 +280,18 @@ static int dw_eth_send(struct eth_device *dev, void *packet, int length)
        u32 desc_num = priv->tx_currdescnum;
        struct dmamacdescr *desc_p = &priv->tx_mac_descrtable[desc_num];
 
-       /* Invalidate only "status" field for the following check */
-       invalidate_dcache_range((unsigned long)&desc_p->txrx_status,
-                               (unsigned long)&desc_p->txrx_status +
-                               sizeof(desc_p->txrx_status));
+       /*
+        * Strictly we only need to invalidate the "txrx_status" field
+        * for the following check, but on some platforms we cannot
+        * invalidate only 4 bytes, so roundup to
+        * ARCH_DMA_MINALIGN. This is safe because the individual
+        * descriptors in the array are each aligned to
+        * ARCH_DMA_MINALIGN.
+        */
+       invalidate_dcache_range(
+               (unsigned long)desc_p,
+               (unsigned long)desc_p +
+               roundup(sizeof(desc_p->txrx_status), ARCH_DMA_MINALIGN));
 
        /* Check if the descriptor is owned by CPU */
        if (desc_p->txrx_status & DESC_TXSTS_OWNBYDMA) {
@@ -351,7 +359,7 @@ static int dw_eth_recv(struct eth_device *dev)
                /* Invalidate received data */
                invalidate_dcache_range((unsigned long)desc_p->dmamac_addr,
                                        (unsigned long)desc_p->dmamac_addr +
-                                       length);
+                                       roundup(length, ARCH_DMA_MINALIGN));
 
                NetReceive(desc_p->dmamac_addr, length);
 
@@ -390,6 +398,8 @@ static int dw_phy_init(struct eth_device *dev)
        if (!phydev)
                return -1;
 
+       phy_connect_dev(phydev, dev);
+
        phydev->supported &= PHY_GBIT_FEATURES;
        phydev->advertising = phydev->supported;
 
@@ -412,7 +422,8 @@ int designware_initialize(ulong base_addr, u32 interface)
         * Since the priv structure contains the descriptors which need a strict
         * buswidth alignment, memalign is used to allocate memory
         */
-       priv = (struct dw_eth_dev *) memalign(16, sizeof(struct dw_eth_dev));
+       priv = (struct dw_eth_dev *) memalign(ARCH_DMA_MINALIGN,
+                                             sizeof(struct dw_eth_dev));
        if (!priv) {
                free(dev);
                return -ENOMEM;
index 382b0c7f0a66c2a9dd4dab562a13f16f780e2bda..ce51102052eafad7e2b8fdb764f3cf91b33c5d2e 100644 (file)
@@ -77,18 +77,18 @@ struct eth_dma_regs {
 
 #define DW_DMA_BASE_OFFSET     (0x1000)
 
+/* Default DMA Burst length */
+#ifndef CONFIG_DW_GMAC_DEFAULT_DMA_PBL
+#define CONFIG_DW_GMAC_DEFAULT_DMA_PBL 8
+#endif
+
 /* Bus mode register definitions */
 #define FIXEDBURST             (1 << 16)
 #define PRIORXTX_41            (3 << 14)
 #define PRIORXTX_31            (2 << 14)
 #define PRIORXTX_21            (1 << 14)
 #define PRIORXTX_11            (0 << 14)
-#define BURST_1                        (1 << 8)
-#define BURST_2                        (2 << 8)
-#define BURST_4                        (4 << 8)
-#define BURST_8                        (8 << 8)
-#define BURST_16               (16 << 8)
-#define BURST_32               (32 << 8)
+#define DMA_PBL                        (CONFIG_DW_GMAC_DEFAULT_DMA_PBL<<8)
 #define RXHIGHPRIO             (1 << 1)
 #define DMAMAC_SRST            (1 << 0)
 
@@ -215,15 +215,14 @@ struct dmamacdescr {
 #endif
 
 struct dw_eth_dev {
-       u32 interface;
-       u32 tx_currdescnum;
-       u32 rx_currdescnum;
-
        struct dmamacdescr tx_mac_descrtable[CONFIG_TX_DESCR_NUM];
        struct dmamacdescr rx_mac_descrtable[CONFIG_RX_DESCR_NUM];
+       char txbuffs[TX_TOTAL_BUFSIZE] __aligned(ARCH_DMA_MINALIGN);
+       char rxbuffs[RX_TOTAL_BUFSIZE] __aligned(ARCH_DMA_MINALIGN);
 
-       char txbuffs[TX_TOTAL_BUFSIZE];
-       char rxbuffs[RX_TOTAL_BUFSIZE];
+       u32 interface;
+       u32 tx_currdescnum;
+       u32 rx_currdescnum;
 
        struct eth_mac_regs *mac_regs_p;
        struct eth_dma_regs *dma_regs_p;
index b68d808c74287f010bd29d5a740de617082b60f9..4de9d41642e8474d266cd3636655c8f50064980f 100644 (file)
@@ -345,7 +345,7 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd)
        if (!is_valid_ether_addr(dev->enetaddr)) {
 #ifdef CONFIG_RANDOM_MACADDR
                printf("Bad MAC address (uninitialized EEPROM?), randomizing\n");
-               eth_random_enetaddr(dev->enetaddr);
+               eth_random_addr(dev->enetaddr);
                printf("MAC: %pM\n", dev->enetaddr);
 #else
                printf("WARNING: Bad MAC address (uninitialized EEPROM?)\n");
index ee5d768937766f8b8dc012896f36ff87b01f22ae..5ae3b167a93d681fed0b929972966da805174328 100644 (file)
@@ -32,5 +32,6 @@ obj-$(CONFIG_PPC_T2080) += t2080.o
 obj-$(CONFIG_PPC_T2081) += t2080.o
 obj-$(CONFIG_PPC_T4240) += t4240.o
 obj-$(CONFIG_PPC_T4160) += t4240.o
+obj-$(CONFIG_PPC_T4080) += t4240.o
 obj-$(CONFIG_PPC_B4420) += b4860.o
 obj-$(CONFIG_PPC_B4860) += b4860.o
index 2f4bc11a6c294e6b1912e5ef12970f26d00cdb06..de9c0e9cd285558b1e21a4bc030b1b8d366d25e3 100644 (file)
@@ -29,10 +29,8 @@ int memac_mdio_write(struct mii_dev *bus, int port_addr, int dev_addr,
                c45 = 0; /* clause 22 */
                dev_addr = regnum & 0x1f;
                clrbits_be32(&regs->mdio_stat, MDIO_STAT_ENC);
-       } else {
+       } else
                setbits_be32(&regs->mdio_stat, MDIO_STAT_ENC);
-               setbits_be32(&regs->mdio_stat, MDIO_STAT_HOLD_15_CLK);
-       }
 
        /* Wait till the bus is free */
        while ((in_be32(&regs->mdio_stat)) & MDIO_STAT_BSY)
@@ -76,10 +74,8 @@ int memac_mdio_read(struct mii_dev *bus, int port_addr, int dev_addr,
                c45 = 0; /* clause 22 */
                dev_addr = regnum & 0x1f;
                clrbits_be32(&regs->mdio_stat, MDIO_STAT_ENC);
-       } else {
+       } else
                setbits_be32(&regs->mdio_stat, MDIO_STAT_ENC);
-               setbits_be32(&regs->mdio_stat, MDIO_STAT_HOLD_15_CLK);
-       }
 
        /* Wait till the bus is free */
        while ((in_be32(&regs->mdio_stat)) & MDIO_STAT_BSY)
index 8eee272cf1442145df4c308956d3c9ac8df0c09c..98c4f09629bdcd4fc5380822ededcb4a9152e1bd 100644 (file)
@@ -425,7 +425,7 @@ int ftmac110_initialize(bd_t *bis)
        dev->recv = ftmac110_recv;
 
        if (!eth_getenv_enetaddr_by_index("eth", card_nr, dev->enetaddr))
-               eth_random_enetaddr(dev->enetaddr);
+               eth_random_addr(dev->enetaddr);
 
        /* allocate tx descriptors (it must be 16 bytes aligned) */
        chip->txd = dma_alloc_coherent(
index abd4e5b463eef305438b1f54bcaf729519ff5f58..d509e30d35901505d19966d87f0eaa06a8ea6352 100644 (file)
@@ -31,9 +31,7 @@ static int ar8035_config(struct phy_device *phydev)
        regval = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
        phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, (regval|0x0100));
 
-       genphy_config_aneg(phydev);
-
-       phy_reset(phydev);
+       phydev->supported = phydev->drv->features;
 
        return 0;
 }
index c691fbbbc61b6e15cb97e3ef85e7cd47fd6f1edf..230ed97dd12def5b6913b030150a17d80910a4dc 100644 (file)
@@ -18,6 +18,7 @@
 #include <phy.h>
 #include <errno.h>
 #include <linux/err.h>
+#include <linux/compiler.h>
 
 /* Generic PHY support and helper functions */
 
@@ -577,7 +578,7 @@ static struct phy_device *phy_device_create(struct mii_dev *bus, int addr,
  * Description: Reads the ID registers of the PHY at @addr on the
  *   @bus, stores it in @phy_id and returns zero on success.
  */
-static int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id)
+int __weak get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id)
 {
        int phy_reg;
 
index 3a55d271a532f9c95756c377b5d8f252264dd0fe..c58fe50b7206e8d6fd5e78e9dfaf8f510306d85f 100644 (file)
 #define MIIM_VSC8514_18G_QSGMII                0x80e0
 #define MIIM_VSC8514_18G_CMDSTAT       0x8000
 
+/* Vitesse VSC8664 Control/Status Register */
+#define MIIM_VSC8664_SERDES_AND_SIGDET 0x13
+#define MIIM_VSC8664_ADDITIONAL_DEV    0x16
+#define MIIM_VSC8664_EPHY_CON          0x17
+#define MIIM_VSC8664_LED_CON           0x1E
+
+#define PHY_EXT_PAGE_ACCESS_EXTENDED   0x0001
+
 /* CIS8201 */
 static int vitesse_config(struct phy_device *phydev)
 {
@@ -244,6 +252,33 @@ static int vsc8514_config(struct phy_device *phydev)
        return 0;
 }
 
+static int vsc8664_config(struct phy_device *phydev)
+{
+       u32 val;
+
+       /* Enable MAC interface auto-negotiation */
+       phy_write(phydev, MDIO_DEVAD_NONE, PHY_EXT_PAGE_ACCESS, 0);
+       val = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_VSC8664_EPHY_CON);
+       val |= (1 << 13);
+       phy_write(phydev, MDIO_DEVAD_NONE, MIIM_VSC8664_EPHY_CON, val);
+
+       phy_write(phydev, MDIO_DEVAD_NONE, PHY_EXT_PAGE_ACCESS,
+                 PHY_EXT_PAGE_ACCESS_EXTENDED);
+       val = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_VSC8664_SERDES_AND_SIGDET);
+       val |= (1 << 11);
+       phy_write(phydev, MDIO_DEVAD_NONE, MIIM_VSC8664_SERDES_AND_SIGDET, val);
+       phy_write(phydev, MDIO_DEVAD_NONE, PHY_EXT_PAGE_ACCESS, 0);
+
+       /* Enable LED blink */
+       val = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_VSC8664_LED_CON);
+       val &= ~(1 << 2);
+       phy_write(phydev, MDIO_DEVAD_NONE, MIIM_VSC8664_LED_CON, val);
+
+       genphy_config_aneg(phydev);
+
+       return 0;
+}
+
 static struct phy_driver VSC8211_driver = {
        .name   = "Vitesse VSC8211",
        .uid    = 0xfc4b0,
@@ -334,6 +369,16 @@ static struct phy_driver VSC8662_driver = {
        .shutdown = &genphy_shutdown,
 };
 
+static struct phy_driver VSC8664_driver = {
+       .name = "Vitesse VSC8664",
+       .uid = 0x70660,
+       .mask = 0xffff0,
+       .features = PHY_GBIT_FEATURES,
+       .config = &vsc8664_config,
+       .startup = &vitesse_startup,
+       .shutdown = &genphy_shutdown,
+};
+
 /* Vitesse bought Cicada, so we'll put these here */
 static struct phy_driver cis8201_driver = {
        .name = "CIS8201",
@@ -366,6 +411,7 @@ int phy_vitesse_init(void)
        phy_register(&VSC8574_driver);
        phy_register(&VSC8514_driver);
        phy_register(&VSC8662_driver);
+       phy_register(&VSC8664_driver);
        phy_register(&cis8201_driver);
        phy_register(&cis8204_driver);
 
index 6317fb13241efd227a6d2d9691063de7e58e502c..3a41b0ec173ef8b6ec5a4030d9393054c64c8ce3 100644 (file)
@@ -49,8 +49,13 @@ static void set_inbound_window(volatile pit_t *pi,
                                u64 size)
 {
        u32 sz = (__ilog2_u64(size) - 1);
-       u32 flag = PIWAR_EN | PIWAR_LOCAL |
-                       PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP;
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005434
+       u32 flag = 0;
+#else
+       u32 flag = PIWAR_LOCAL;
+#endif
+
+       flag |= PIWAR_EN | PIWAR_READ_SNOOP | PIWAR_WRITE_SNOOP;
 
        out_be32(&pi->pitar, r->phys_start >> 12);
        out_be32(&pi->piwbar, r->bus_start >> 12);
index 3244f690b9c7b9c46ff63e45522d73b8698a2cd9..9a8bfe07b8e3a67c33123f45b97a69fe3c51a7c1 100644 (file)
@@ -5,6 +5,7 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
+obj-$(CONFIG_POWER_LTC3676) += pmic_ltc3676.o
 obj-$(CONFIG_POWER_MAX8998) += pmic_max8998.o
 obj-$(CONFIG_POWER_MAX8997) += pmic_max8997.o
 obj-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o
diff --git a/drivers/power/pmic/pmic_ltc3676.c b/drivers/power/pmic/pmic_ltc3676.c
new file mode 100644 (file)
index 0000000..9b874cb
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2014 Gateworks Corporation
+ * Tim Harvey <tharvey@gateworks.com>
+ *
+ * SPDX-License-Identifier:      GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <i2c.h>
+#include <power/pmic.h>
+#include <power/ltc3676_pmic.h>
+
+int power_ltc3676_init(unsigned char bus)
+{
+       static const char name[] = "LTC3676_PMIC";
+       struct pmic *p = pmic_alloc();
+
+       if (!p) {
+               printf("%s: POWER allocation error!\n", __func__);
+               return -ENOMEM;
+       }
+
+       p->name = name;
+       p->interface = PMIC_I2C;
+       p->number_of_regs = LTC3676_NUM_OF_REGS;
+       p->hw.i2c.addr = CONFIG_POWER_LTC3676_I2C_ADDR;
+       p->hw.i2c.tx_num = 1;
+       p->bus = bus;
+
+       return 0;
+}
index 22c1f15eeb4008acc93546efaff26815d050136a..21f12d2564ee00e1eb11885d3167e995a03e233b 100644 (file)
@@ -11,7 +11,7 @@
 #include <power/pmic.h>
 #include <power/pfuze100_pmic.h>
 
-int pmic_init(unsigned char bus)
+int power_pfuze100_init(unsigned char bus)
 {
        static const char name[] = "PFUZE100_PMIC";
        struct pmic *p = pmic_alloc();
index 704c2439b14ae5c0abeb23d80146a47336cb8027..d29d969533d53cfd4841ac2195508e21392f7b42 100644 (file)
@@ -32,7 +32,7 @@ enum {
 };
 
 #define MAX_I2C_RETRY  3
-int tps6586x_read(int reg)
+static int tps6586x_read(int reg)
 {
        int     i;
        uchar   data;
@@ -61,7 +61,7 @@ exit:
        return retval;
 }
 
-int tps6586x_write(int reg, uchar *data, uint len)
+static int tps6586x_write(int reg, uchar *data, uint len)
 {
        int     i;
        int     retval = -1;
index b1da75ec4d924dc4471c7daabe77fdef81a7fa1c..9c5fbd1d69474024c3758d9dffa0405ae2370444 100644 (file)
@@ -14,6 +14,8 @@
 #include "asm/immap_qe.h"
 #include "qe.h"
 
+#define MPC85xx_DEVDISR_QE_DISABLE     0x1
+
 qe_map_t               *qe_immr = NULL;
 static qe_snum_t       snums[QE_NUM_OF_SNUM];
 
@@ -317,7 +319,9 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
        size_t calc_size = sizeof(struct qe_firmware);
        size_t length;
        const struct qe_header *hdr;
-
+#ifdef CONFIG_DEEP_SLEEP
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+#endif
        if (!firmware) {
                printf("Invalid address\n");
                return -EINVAL;
@@ -330,6 +334,9 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
        if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') ||
            (hdr->magic[2] != 'F')) {
                printf("Not a microcode\n");
+#ifdef CONFIG_DEEP_SLEEP
+               setbits_be32(&gur->devdisr, MPC85xx_DEVDISR_QE_DISABLE);
+#endif
                return -EPERM;
        }
 
index 8a1345494336d56d6c0700f79e5851043b8fbf83..f26979dbe15e4ecf510b746dc4c92e58447ee2d5 100644 (file)
 #if defined(CONFIG_K2HK_EVM)
 #define UART_REG_VAL_PWREMU_MGMT_UART_DISABLE   0
 #define UART_REG_VAL_PWREMU_MGMT_UART_ENABLE ((1 << 14) | (1 << 13) | (1 << 0))
+#undef UART_MCRVAL
+#ifdef CONFIG_SERIAL_HW_FLOW_CONTROL
+#define UART_MCRVAL             (UART_MCR_RTS | UART_MCR_AFE)
+#else
+#define UART_MCRVAL             (UART_MCR_RTS)
+#endif
 #endif
 
 #ifndef CONFIG_SYS_NS16550_IER
index c4fb59cfb3109e356c59c3aa4d163cef17351b9e..fd61a5e54587890c53df39e157f8180d3ced6e35 100644 (file)
@@ -74,9 +74,6 @@ static int on_baudrate(const char *name, const char *value, enum env_op op,
                }
 
                gd->baudrate = baudrate;
-#if defined(CONFIG_PPC) || defined(CONFIG_MCF52x2)
-               gd->bd->bi_baudrate = baudrate;
-#endif
 
                serial_setbrg();
 
@@ -502,12 +499,11 @@ int uart_post_test(int flags)
        unsigned char c;
        int ret, saved_baud, b;
        struct serial_device *saved_dev, *s;
-       bd_t *bd = gd->bd;
 
        /* Save current serial state */
        ret = 0;
        saved_dev = serial_current;
-       saved_baud = bd->bi_baudrate;
+       saved_baud = gd->baudrate;
 
        for (s = serial_devices; s; s = s->next) {
                /* If this driver doesn't support loop back, skip it */
@@ -530,7 +526,7 @@ int uart_post_test(int flags)
 
                /* Test every available baud rate */
                for (b = 0; b < ARRAY_SIZE(bauds); ++b) {
-                       bd->bi_baudrate = bauds[b];
+                       gd->baudrate = bauds[b];
                        serial_setbrg();
 
                        /*
@@ -572,7 +568,7 @@ int uart_post_test(int flags)
  done:
        /* Restore previous serial state */
        serial_current = saved_dev;
-       bd->bi_baudrate = saved_baud;
+       gd->baudrate = saved_baud;
        serial_reinit_all();
        serial_setbrg();
 
index 896c8d407e4ba0dacaefa7d1c737164a75f05ea3..66becdc78226a942ccc1a621787e1ef2c0888fc7 100644 (file)
@@ -18,6 +18,7 @@ obj-$(CONFIG_THOR_FUNCTION) += f_thor.o
 obj-$(CONFIG_USBDOWNLOAD_GADGET) += g_dnl.o
 obj-$(CONFIG_DFU_FUNCTION) += f_dfu.o
 obj-$(CONFIG_USB_GADGET_MASS_STORAGE) += f_mass_storage.o
+obj-$(CONFIG_CMD_FASTBOOT) += f_fastboot.o
 endif
 ifdef CONFIG_USB_ETHER
 obj-y += ether.o
index 02d3fdade86c5edffcc668aae3d07a685044eb1c..9cd003636a4499ba57637f37f9e8fdeed709340f 100644 (file)
@@ -205,13 +205,26 @@ static void ci_invalidate_qtd(int ep_num)
 static struct usb_request *
 ci_ep_alloc_request(struct usb_ep *ep, unsigned int gfp_flags)
 {
-       struct ci_ep *ci_ep = container_of(ep, struct ci_ep, ep);
-       return &ci_ep->req;
+       struct ci_req *ci_req;
+
+       ci_req = memalign(ARCH_DMA_MINALIGN, sizeof(*ci_req));
+       if (!ci_req)
+               return NULL;
+
+       INIT_LIST_HEAD(&ci_req->queue);
+       ci_req->b_buf = 0;
+
+       return &ci_req->req;
 }
 
-static void ci_ep_free_request(struct usb_ep *ep, struct usb_request *_req)
+static void ci_ep_free_request(struct usb_ep *ep, struct usb_request *req)
 {
-       return;
+       struct ci_req *ci_req;
+
+       ci_req = container_of(req, struct ci_req, req);
+       if (ci_req->b_buf)
+               free(ci_req->b_buf);
+       free(ci_req);
 }
 
 static void ep_enable(int num, int in, int maxpacket)
@@ -267,99 +280,102 @@ static int ci_ep_disable(struct usb_ep *ep)
        return 0;
 }
 
-static int ci_bounce(struct ci_ep *ep, int in)
+static int ci_bounce(struct ci_req *ci_req, int in)
 {
-       uint32_t addr = (uint32_t)ep->req.buf;
-       uint32_t ba;
+       struct usb_request *req = &ci_req->req;
+       uint32_t addr = (uint32_t)req->buf;
+       uint32_t hwaddr;
+       uint32_t aligned_used_len;
 
        /* 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))
+       if (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;
+       ci_req->hw_len = req->length;
+       ci_req->hw_buf = 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)
+       if (ci_req->b_buf && req->length > ci_req->b_len) {
+               free(ci_req->b_buf);
+               ci_req->b_buf = 0;
+       }
+       if (!ci_req->b_buf) {
+               ci_req->b_len = roundup(req->length, ARCH_DMA_MINALIGN);
+               ci_req->b_buf = memalign(ARCH_DMA_MINALIGN, ci_req->b_len);
+               if (!ci_req->b_buf)
                        return -ENOMEM;
        }
+       ci_req->hw_len = ci_req->b_len;
+       ci_req->hw_buf = ci_req->b_buf;
+
        if (in)
-               memcpy(ep->b_buf, ep->req.buf, ep->req.length);
+               memcpy(ci_req->hw_buf, req->buf, req->length);
 
 flush:
-       ba = (uint32_t)ep->b_buf;
-       flush_dcache_range(ba, ba + ep->b_len);
+       hwaddr = (uint32_t)ci_req->hw_buf;
+       aligned_used_len = roundup(req->length, ARCH_DMA_MINALIGN);
+       flush_dcache_range(hwaddr, hwaddr + aligned_used_len);
 
        return 0;
 }
 
-static void ci_debounce(struct ci_ep *ep, int in)
+static void ci_debounce(struct ci_req *ci_req, int in)
 {
-       uint32_t addr = (uint32_t)ep->req.buf;
-       uint32_t ba = (uint32_t)ep->b_buf;
+       struct usb_request *req = &ci_req->req;
+       uint32_t addr = (uint32_t)req->buf;
+       uint32_t hwaddr = (uint32_t)ci_req->hw_buf;
+       uint32_t aligned_used_len;
 
-       if (in) {
-               if (addr == ba)
-                       return;         /* not a bounce */
-               goto free;
-       }
-       invalidate_dcache_range(ba, ba + ep->b_len);
+       if (in)
+               return;
+
+       aligned_used_len = roundup(req->actual, ARCH_DMA_MINALIGN);
+       invalidate_dcache_range(hwaddr, hwaddr + aligned_used_len);
 
-       if (addr == ba)
-               return;         /* not a bounce */
+       if (addr == hwaddr)
+               return; /* not a bounce */
 
-       memcpy(ep->req.buf, ep->b_buf, ep->req.actual);
-free:
-       /* Large payloads use allocated buffer, free it. */
-       if (ep->b_buf != ep->b_fast)
-               free(ep->b_buf);
+       memcpy(req->buf, ci_req->hw_buf, req->actual);
 }
 
-static int ci_ep_queue(struct usb_ep *ep,
-               struct usb_request *req, gfp_t gfp_flags)
+static void ci_ep_submit_next_request(struct ci_ep *ci_ep)
 {
-       struct ci_ep *ci_ep = container_of(ep, struct ci_ep, ep);
        struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
        struct ept_queue_item *item;
        struct ept_queue_head *head;
-       int bit, num, len, in, ret;
+       int bit, num, len, in;
+       struct ci_req *ci_req;
+
+       ci_ep->req_primed = true;
+
        num = ci_ep->desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
        in = (ci_ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
        item = ci_get_qtd(num, in);
        head = ci_get_qh(num, in);
-       len = req->length;
 
-       ret = ci_bounce(ci_ep, in);
-       if (ret)
-               return ret;
+       ci_req = list_first_entry(&ci_ep->queue, struct ci_req, queue);
+       len = ci_req->req.length;
 
        item->next = TERMINATE;
        item->info = INFO_BYTES(len) | INFO_IOC | INFO_ACTIVE;
-       item->page0 = (uint32_t)ci_ep->b_buf;
-       item->page1 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x1000;
-       item->page2 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x2000;
-       item->page3 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x3000;
-       item->page4 = ((uint32_t)ci_ep->b_buf & 0xfffff000) + 0x4000;
+       item->page0 = (uint32_t)ci_req->hw_buf;
+       item->page1 = ((uint32_t)ci_req->hw_buf & 0xfffff000) + 0x1000;
+       item->page2 = ((uint32_t)ci_req->hw_buf & 0xfffff000) + 0x2000;
+       item->page3 = ((uint32_t)ci_req->hw_buf & 0xfffff000) + 0x3000;
+       item->page4 = ((uint32_t)ci_req->hw_buf & 0xfffff000) + 0x4000;
        ci_flush_qtd(num);
 
        head->next = (unsigned) item;
        head->info = 0;
 
-       DBG("ept%d %s queue len %x, buffer %p\n",
-           num, in ? "in" : "out", len, ci_ep->b_buf);
+       DBG("ept%d %s queue len %x, req %p, buffer %p\n",
+           num, in ? "in" : "out", len, ci_req, ci_req->hw_buf);
        ci_flush_qh(num);
 
        if (in)
@@ -368,6 +384,29 @@ static int ci_ep_queue(struct usb_ep *ep,
                bit = EPT_RX(num);
 
        writel(bit, &udc->epprime);
+}
+
+static int ci_ep_queue(struct usb_ep *ep,
+               struct usb_request *req, gfp_t gfp_flags)
+{
+       struct ci_ep *ci_ep = container_of(ep, struct ci_ep, ep);
+       struct ci_req *ci_req = container_of(req, struct ci_req, req);
+       int in, ret;
+       int __maybe_unused num;
+
+       num = ci_ep->desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
+       in = (ci_ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
+
+       ret = ci_bounce(ci_req, in);
+       if (ret)
+               return ret;
+
+       DBG("ept%d %s pre-queue req %p, buffer %p\n",
+           num, in ? "in" : "out", ci_req, ci_req->hw_buf);
+       list_add_tail(&ci_req->queue, &ci_ep->queue);
+
+       if (!ci_ep->req_primed)
+               ci_ep_submit_next_request(ci_ep);
 
        return 0;
 }
@@ -376,6 +415,8 @@ static void handle_ep_complete(struct ci_ep *ep)
 {
        struct ept_queue_item *item;
        int num, in, len;
+       struct ci_req *ci_req;
+
        num = ep->desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
        in = (ep->desc->bEndpointAddress & USB_DIR_IN) != 0;
        if (num == 0)
@@ -383,20 +424,27 @@ static void handle_ep_complete(struct ci_ep *ep)
        item = ci_get_qtd(num, in);
        ci_invalidate_qtd(num);
 
+       len = (item->info >> 16) & 0x7fff;
        if (item->info & 0xff)
                printf("EP%d/%s FAIL info=%x pg0=%x\n",
                       num, in ? "in" : "out", item->info, item->page0);
 
-       len = (item->info >> 16) & 0x7fff;
-       ep->req.actual = ep->req.length - len;
-       ci_debounce(ep, in);
+       ci_req = list_first_entry(&ep->queue, struct ci_req, queue);
+       list_del_init(&ci_req->queue);
+       ep->req_primed = false;
+
+       if (!list_empty(&ep->queue))
+               ci_ep_submit_next_request(ep);
+
+       ci_req->req.actual = ci_req->req.length - len;
+       ci_debounce(ci_req, in);
 
-       DBG("ept%d %s complete %x\n",
-                       num, in ? "in" : "out", len);
-       ep->req.complete(&ep->ep, &ep->req);
+       DBG("ept%d %s req %p, complete %x\n",
+           num, in ? "in" : "out", ci_req, len);
+       ci_req->req.complete(&ep->ep, &ci_req->req);
        if (num == 0) {
-               ep->req.length = 0;
-               usb_ep_queue(&ep->ep, &ep->req, 0);
+               ci_req->req.length = 0;
+               usb_ep_queue(&ep->ep, &ci_req->req, 0);
                ep->desc = &ep0_in_desc;
        }
 }
@@ -405,13 +453,18 @@ static void handle_ep_complete(struct ci_ep *ep)
 
 static void handle_setup(void)
 {
-       struct usb_request *req = &controller.ep[0].req;
+       struct ci_ep *ci_ep = &controller.ep[0];
+       struct ci_req *ci_req;
+       struct usb_request *req;
        struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
        struct ept_queue_head *head;
        struct usb_ctrlrequest r;
        int status = 0;
        int num, in, _num, _in, i;
        char *buf;
+
+       ci_req = list_first_entry(&ci_ep->queue, struct ci_req, queue);
+       req = &ci_req->req;
        head = ci_get_qh(0, 0); /* EP0 OUT */
 
        ci_invalidate_qh(0);
@@ -424,6 +477,9 @@ static void handle_setup(void)
        DBG("handle setup %s, %x, %x index %x value %x\n", reqname(r.bRequest),
            r.bRequestType, r.bRequest, r.wIndex, r.wValue);
 
+       list_del_init(&ci_req->queue);
+       ci_ep->req_primed = false;
+
        switch (SETUP(r.bRequestType, r.bRequest)) {
        case SETUP(USB_RECIP_ENDPOINT, USB_REQ_CLEAR_FEATURE):
                _num = r.wIndex & 15;
@@ -701,6 +757,8 @@ static int ci_udc_probe(void)
        /* Init EP 0 */
        memcpy(&controller.ep[0].ep, &ci_ep_init[0], sizeof(*ci_ep_init));
        controller.ep[0].desc = &ep0_in_desc;
+       INIT_LIST_HEAD(&controller.ep[0].queue);
+       controller.ep[0].req_primed = false;
        controller.gadget.ep0 = &controller.ep[0].ep;
        INIT_LIST_HEAD(&controller.gadget.ep0->ep_list);
 
@@ -708,6 +766,8 @@ static int ci_udc_probe(void)
        for (i = 1; i < NUM_ENDPOINTS; i++) {
                memcpy(&controller.ep[i].ep, &ci_ep_init[1],
                       sizeof(*ci_ep_init));
+               INIT_LIST_HEAD(&controller.ep[i].queue);
+               controller.ep[i].req_primed = false;
                list_add_tail(&controller.ep[i].ep.ep_list,
                              &controller.gadget.ep_list);
        }
index 4425fd9345703d116e9e9d7638acb8f526bb8ac7..23cff56d7ec92d7653ece4611db27cfa8c5ce7a7 100644 (file)
@@ -77,15 +77,22 @@ struct ci_udc {
 #define CTRL_TXT_BULK  (2 << 18)
 #define CTRL_RXT_BULK  (2 << 2)
 
+struct ci_req {
+       struct usb_request      req;
+       struct list_head        queue;
+       /* Bounce buffer allocated if needed to align the transfer */
+       uint8_t *b_buf;
+       uint32_t b_len;
+       /* Buffer for the current transfer. Either req.buf/len or b_buf/len */
+       uint8_t *hw_buf;
+       uint32_t hw_len;
+};
+
 struct ci_ep {
        struct usb_ep ep;
        struct list_head queue;
+       bool req_primed;
        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 ci_drv {
index 1b1e1793d920f49076b5ccac37d25075a9e07060..859fe828de74c612cac582ae761b2e5e9a4804e4 100644 (file)
@@ -175,10 +175,17 @@ static void dnload_request_flush(struct usb_ep *ep, struct usb_request *req)
                  req->length, f_dfu->blk_seq_num);
 }
 
+static inline int dfu_get_manifest_timeout(struct dfu_entity *dfu)
+{
+       return dfu->poll_timeout ? dfu->poll_timeout(dfu) :
+               DFU_MANIFEST_POLL_TIMEOUT;
+}
+
 static void handle_getstatus(struct usb_request *req)
 {
        struct dfu_status *dstat = (struct dfu_status *)req->buf;
        struct f_dfu *f_dfu = req->context;
+       struct dfu_entity *dfu = dfu_get_entity(f_dfu->altsetting);
 
        dfu_set_poll_timeout(dstat, 0);
 
@@ -191,7 +198,8 @@ static void handle_getstatus(struct usb_request *req)
                f_dfu->dfu_state = DFU_STATE_dfuMANIFEST;
                break;
        case DFU_STATE_dfuMANIFEST:
-               dfu_set_poll_timeout(dstat, DFU_MANIFEST_POLL_TIMEOUT);
+               dfu_set_poll_timeout(dstat, dfu_get_manifest_timeout(dfu));
+               break;
        default:
                break;
        }
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
new file mode 100644 (file)
index 0000000..9dd85b6
--- /dev/null
@@ -0,0 +1,513 @@
+/*
+ * (C) Copyright 2008 - 2009
+ * Windriver, <www.windriver.com>
+ * Tom Rix <Tom.Rix@windriver.com>
+ *
+ * Copyright 2011 Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+ *
+ * Copyright 2014 Linaro, Ltd.
+ * Rob Herring <robh@kernel.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <errno.h>
+#include <malloc.h>
+#include <linux/usb/ch9.h>
+#include <linux/usb/gadget.h>
+#include <linux/usb/composite.h>
+#include <linux/compiler.h>
+#include <version.h>
+#include <g_dnl.h>
+
+#define FASTBOOT_VERSION               "0.4"
+
+#define FASTBOOT_INTERFACE_CLASS       0xff
+#define FASTBOOT_INTERFACE_SUB_CLASS   0x42
+#define FASTBOOT_INTERFACE_PROTOCOL    0x03
+
+#define RX_ENDPOINT_MAXIMUM_PACKET_SIZE_2_0  (0x0200)
+#define RX_ENDPOINT_MAXIMUM_PACKET_SIZE_1_1  (0x0040)
+#define TX_ENDPOINT_MAXIMUM_PACKET_SIZE      (0x0040)
+
+/* The 64 defined bytes plus \0 */
+#define RESPONSE_LEN   (64 + 1)
+
+#define EP_BUFFER_SIZE                 4096
+
+struct f_fastboot {
+       struct usb_function usb_function;
+
+       /* IN/OUT EP's and correspoinding requests */
+       struct usb_ep *in_ep, *out_ep;
+       struct usb_request *in_req, *out_req;
+};
+
+static inline struct f_fastboot *func_to_fastboot(struct usb_function *f)
+{
+       return container_of(f, struct f_fastboot, usb_function);
+}
+
+static struct f_fastboot *fastboot_func;
+static unsigned int download_size;
+static unsigned int download_bytes;
+
+static struct usb_endpoint_descriptor fs_ep_in = {
+       .bLength            = USB_DT_ENDPOINT_SIZE,
+       .bDescriptorType    = USB_DT_ENDPOINT,
+       .bEndpointAddress   = USB_DIR_IN,
+       .bmAttributes       = USB_ENDPOINT_XFER_BULK,
+       .wMaxPacketSize     = TX_ENDPOINT_MAXIMUM_PACKET_SIZE,
+       .bInterval          = 0x00,
+};
+
+static struct usb_endpoint_descriptor fs_ep_out = {
+       .bLength                = USB_DT_ENDPOINT_SIZE,
+       .bDescriptorType        = USB_DT_ENDPOINT,
+       .bEndpointAddress       = USB_DIR_OUT,
+       .bmAttributes           = USB_ENDPOINT_XFER_BULK,
+       .wMaxPacketSize         = RX_ENDPOINT_MAXIMUM_PACKET_SIZE_1_1,
+       .bInterval              = 0x00,
+};
+
+static struct usb_endpoint_descriptor hs_ep_out = {
+       .bLength                = USB_DT_ENDPOINT_SIZE,
+       .bDescriptorType        = USB_DT_ENDPOINT,
+       .bEndpointAddress       = USB_DIR_OUT,
+       .bmAttributes           = USB_ENDPOINT_XFER_BULK,
+       .wMaxPacketSize         = RX_ENDPOINT_MAXIMUM_PACKET_SIZE_2_0,
+       .bInterval              = 0x00,
+};
+
+static struct usb_interface_descriptor interface_desc = {
+       .bLength                = USB_DT_INTERFACE_SIZE,
+       .bDescriptorType        = USB_DT_INTERFACE,
+       .bInterfaceNumber       = 0x00,
+       .bAlternateSetting      = 0x00,
+       .bNumEndpoints          = 0x02,
+       .bInterfaceClass        = FASTBOOT_INTERFACE_CLASS,
+       .bInterfaceSubClass     = FASTBOOT_INTERFACE_SUB_CLASS,
+       .bInterfaceProtocol     = FASTBOOT_INTERFACE_PROTOCOL,
+};
+
+static struct usb_descriptor_header *fb_runtime_descs[] = {
+       (struct usb_descriptor_header *)&interface_desc,
+       (struct usb_descriptor_header *)&fs_ep_in,
+       (struct usb_descriptor_header *)&hs_ep_out,
+       NULL,
+};
+
+/*
+ * static strings, in UTF-8
+ */
+static const char fastboot_name[] = "Android Fastboot";
+
+static struct usb_string fastboot_string_defs[] = {
+       [0].s = fastboot_name,
+       {  }                    /* end of list */
+};
+
+static struct usb_gadget_strings stringtab_fastboot = {
+       .language       = 0x0409,       /* en-us */
+       .strings        = fastboot_string_defs,
+};
+
+static struct usb_gadget_strings *fastboot_strings[] = {
+       &stringtab_fastboot,
+       NULL,
+};
+
+static void rx_handler_command(struct usb_ep *ep, struct usb_request *req);
+
+static void fastboot_complete(struct usb_ep *ep, struct usb_request *req)
+{
+       int status = req->status;
+       if (!status)
+               return;
+       printf("status: %d ep '%s' trans: %d\n", status, ep->name, req->actual);
+}
+
+static int fastboot_bind(struct usb_configuration *c, struct usb_function *f)
+{
+       int id;
+       struct usb_gadget *gadget = c->cdev->gadget;
+       struct f_fastboot *f_fb = func_to_fastboot(f);
+
+       /* DYNAMIC interface numbers assignments */
+       id = usb_interface_id(c, f);
+       if (id < 0)
+               return id;
+       interface_desc.bInterfaceNumber = id;
+
+       id = usb_string_id(c->cdev);
+       if (id < 0)
+               return id;
+       fastboot_string_defs[0].id = id;
+       interface_desc.iInterface = id;
+
+       f_fb->in_ep = usb_ep_autoconfig(gadget, &fs_ep_in);
+       if (!f_fb->in_ep)
+               return -ENODEV;
+       f_fb->in_ep->driver_data = c->cdev;
+
+       f_fb->out_ep = usb_ep_autoconfig(gadget, &fs_ep_out);
+       if (!f_fb->out_ep)
+               return -ENODEV;
+       f_fb->out_ep->driver_data = c->cdev;
+
+       hs_ep_out.bEndpointAddress = fs_ep_out.bEndpointAddress;
+
+       return 0;
+}
+
+static void fastboot_unbind(struct usb_configuration *c, struct usb_function *f)
+{
+       memset(fastboot_func, 0, sizeof(*fastboot_func));
+}
+
+static void fastboot_disable(struct usb_function *f)
+{
+       struct f_fastboot *f_fb = func_to_fastboot(f);
+
+       usb_ep_disable(f_fb->out_ep);
+       usb_ep_disable(f_fb->in_ep);
+
+       if (f_fb->out_req) {
+               free(f_fb->out_req->buf);
+               usb_ep_free_request(f_fb->out_ep, f_fb->out_req);
+               f_fb->out_req = NULL;
+       }
+       if (f_fb->in_req) {
+               free(f_fb->in_req->buf);
+               usb_ep_free_request(f_fb->in_ep, f_fb->in_req);
+               f_fb->in_req = NULL;
+       }
+}
+
+static struct usb_request *fastboot_start_ep(struct usb_ep *ep)
+{
+       struct usb_request *req;
+
+       req = usb_ep_alloc_request(ep, 0);
+       if (!req)
+               return NULL;
+
+       req->length = EP_BUFFER_SIZE;
+       req->buf = memalign(CONFIG_SYS_CACHELINE_SIZE, EP_BUFFER_SIZE);
+       if (!req->buf) {
+               usb_ep_free_request(ep, req);
+               return NULL;
+       }
+
+       memset(req->buf, 0, req->length);
+       return req;
+}
+
+static int fastboot_set_alt(struct usb_function *f,
+                           unsigned interface, unsigned alt)
+{
+       int ret;
+       struct usb_composite_dev *cdev = f->config->cdev;
+       struct usb_gadget *gadget = cdev->gadget;
+       struct f_fastboot *f_fb = func_to_fastboot(f);
+
+       debug("%s: func: %s intf: %d alt: %d\n",
+             __func__, f->name, interface, alt);
+
+       /* make sure we don't enable the ep twice */
+       if (gadget->speed == USB_SPEED_HIGH)
+               ret = usb_ep_enable(f_fb->out_ep, &hs_ep_out);
+       else
+               ret = usb_ep_enable(f_fb->out_ep, &fs_ep_out);
+       if (ret) {
+               puts("failed to enable out ep\n");
+               return ret;
+       }
+
+       f_fb->out_req = fastboot_start_ep(f_fb->out_ep);
+       if (!f_fb->out_req) {
+               puts("failed to alloc out req\n");
+               ret = -EINVAL;
+               goto err;
+       }
+       f_fb->out_req->complete = rx_handler_command;
+
+       ret = usb_ep_enable(f_fb->in_ep, &fs_ep_in);
+       if (ret) {
+               puts("failed to enable in ep\n");
+               goto err;
+       }
+
+       f_fb->in_req = fastboot_start_ep(f_fb->in_ep);
+       if (!f_fb->in_req) {
+               puts("failed alloc req in\n");
+               ret = -EINVAL;
+               goto err;
+       }
+       f_fb->in_req->complete = fastboot_complete;
+
+       ret = usb_ep_queue(f_fb->out_ep, f_fb->out_req, 0);
+       if (ret)
+               goto err;
+
+       return 0;
+err:
+       fastboot_disable(f);
+       return ret;
+}
+
+static int fastboot_add(struct usb_configuration *c)
+{
+       struct f_fastboot *f_fb = fastboot_func;
+       int status;
+
+       debug("%s: cdev: 0x%p\n", __func__, c->cdev);
+
+       if (!f_fb) {
+               f_fb = memalign(CONFIG_SYS_CACHELINE_SIZE, sizeof(*f_fb));
+               if (!f_fb)
+                       return -ENOMEM;
+
+               fastboot_func = f_fb;
+               memset(f_fb, 0, sizeof(*f_fb));
+       }
+
+       f_fb->usb_function.name = "f_fastboot";
+       f_fb->usb_function.hs_descriptors = fb_runtime_descs;
+       f_fb->usb_function.bind = fastboot_bind;
+       f_fb->usb_function.unbind = fastboot_unbind;
+       f_fb->usb_function.set_alt = fastboot_set_alt;
+       f_fb->usb_function.disable = fastboot_disable;
+       f_fb->usb_function.strings = fastboot_strings;
+
+       status = usb_add_function(c, &f_fb->usb_function);
+       if (status) {
+               free(f_fb);
+               fastboot_func = f_fb;
+       }
+
+       return status;
+}
+DECLARE_GADGET_BIND_CALLBACK(usb_dnl_fastboot, fastboot_add);
+
+int fastboot_tx_write(const char *buffer, unsigned int buffer_size)
+{
+       struct usb_request *in_req = fastboot_func->in_req;
+       int ret;
+
+       memcpy(in_req->buf, buffer, buffer_size);
+       in_req->length = buffer_size;
+       ret = usb_ep_queue(fastboot_func->in_ep, in_req, 0);
+       if (ret)
+               printf("Error %d on queue\n", ret);
+       return 0;
+}
+
+static int fastboot_tx_write_str(const char *buffer)
+{
+       return fastboot_tx_write(buffer, strlen(buffer));
+}
+
+static void compl_do_reset(struct usb_ep *ep, struct usb_request *req)
+{
+       do_reset(NULL, 0, 0, NULL);
+}
+
+static void cb_reboot(struct usb_ep *ep, struct usb_request *req)
+{
+       fastboot_func->in_req->complete = compl_do_reset;
+       fastboot_tx_write_str("OKAY");
+}
+
+static int strcmp_l1(const char *s1, const char *s2)
+{
+       if (!s1 || !s2)
+               return -1;
+       return strncmp(s1, s2, strlen(s1));
+}
+
+static void cb_getvar(struct usb_ep *ep, struct usb_request *req)
+{
+       char *cmd = req->buf;
+       char response[RESPONSE_LEN];
+       const char *s;
+
+       strcpy(response, "OKAY");
+       strsep(&cmd, ":");
+       if (!cmd) {
+               fastboot_tx_write_str("FAILmissing var");
+               return;
+       }
+
+       if (!strcmp_l1("version", cmd)) {
+               strncat(response, FASTBOOT_VERSION, sizeof(response));
+       } else if (!strcmp_l1("bootloader-version", cmd)) {
+               strncat(response, U_BOOT_VERSION, sizeof(response));
+       } else if (!strcmp_l1("downloadsize", cmd)) {
+               char str_num[12];
+
+               sprintf(str_num, "%08x", CONFIG_USB_FASTBOOT_BUF_SIZE);
+               strncat(response, str_num, sizeof(response));
+       } else if (!strcmp_l1("serialno", cmd)) {
+               s = getenv("serial#");
+               if (s)
+                       strncat(response, s, sizeof(response));
+               else
+                       strcpy(response, "FAILValue not set");
+       } else {
+               strcpy(response, "FAILVariable not implemented");
+       }
+       fastboot_tx_write_str(response);
+}
+
+static unsigned int rx_bytes_expected(void)
+{
+       int rx_remain = download_size - download_bytes;
+       if (rx_remain < 0)
+               return 0;
+       if (rx_remain > EP_BUFFER_SIZE)
+               return EP_BUFFER_SIZE;
+       return rx_remain;
+}
+
+#define BYTES_PER_DOT  0x20000
+static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request *req)
+{
+       char response[RESPONSE_LEN];
+       unsigned int transfer_size = download_size - download_bytes;
+       const unsigned char *buffer = req->buf;
+       unsigned int buffer_size = req->actual;
+
+       if (req->status != 0) {
+               printf("Bad status: %d\n", req->status);
+               return;
+       }
+
+       if (buffer_size < transfer_size)
+               transfer_size = buffer_size;
+
+       memcpy((void *)CONFIG_USB_FASTBOOT_BUF_ADDR + download_bytes,
+              buffer, transfer_size);
+
+       download_bytes += transfer_size;
+
+       /* Check if transfer is done */
+       if (download_bytes >= download_size) {
+               /*
+                * Reset global transfer variable, keep download_bytes because
+                * it will be used in the next possible flashing command
+                */
+               download_size = 0;
+               req->complete = rx_handler_command;
+               req->length = EP_BUFFER_SIZE;
+
+               sprintf(response, "OKAY");
+               fastboot_tx_write_str(response);
+
+               printf("\ndownloading of %d bytes finished\n", download_bytes);
+       } else {
+               req->length = rx_bytes_expected();
+               if (req->length < ep->maxpacket)
+                       req->length = ep->maxpacket;
+       }
+
+       if (download_bytes && !(download_bytes % BYTES_PER_DOT)) {
+               putc('.');
+               if (!(download_bytes % (74 * BYTES_PER_DOT)))
+                       putc('\n');
+       }
+       req->actual = 0;
+       usb_ep_queue(ep, req, 0);
+}
+
+static void cb_download(struct usb_ep *ep, struct usb_request *req)
+{
+       char *cmd = req->buf;
+       char response[RESPONSE_LEN];
+
+       strsep(&cmd, ":");
+       download_size = simple_strtoul(cmd, NULL, 16);
+       download_bytes = 0;
+
+       printf("Starting download of %d bytes\n", download_size);
+
+       if (0 == download_size) {
+               sprintf(response, "FAILdata invalid size");
+       } else if (download_size > CONFIG_USB_FASTBOOT_BUF_SIZE) {
+               download_size = 0;
+               sprintf(response, "FAILdata too large");
+       } else {
+               sprintf(response, "DATA%08x", download_size);
+               req->complete = rx_handler_dl_image;
+               req->length = rx_bytes_expected();
+               if (req->length < ep->maxpacket)
+                       req->length = ep->maxpacket;
+       }
+       fastboot_tx_write_str(response);
+}
+
+static void do_bootm_on_complete(struct usb_ep *ep, struct usb_request *req)
+{
+       char boot_addr_start[12];
+       char *bootm_args[] = { "bootm", boot_addr_start, NULL };
+
+       puts("Booting kernel..\n");
+
+       sprintf(boot_addr_start, "0x%lx", load_addr);
+       do_bootm(NULL, 0, 2, bootm_args);
+
+       /* This only happens if image is somehow faulty so we start over */
+       do_reset(NULL, 0, 0, NULL);
+}
+
+static void cb_boot(struct usb_ep *ep, struct usb_request *req)
+{
+       fastboot_func->in_req->complete = do_bootm_on_complete;
+       fastboot_tx_write_str("OKAY");
+}
+
+struct cmd_dispatch_info {
+       char *cmd;
+       void (*cb)(struct usb_ep *ep, struct usb_request *req);
+};
+
+static const struct cmd_dispatch_info cmd_dispatch_info[] = {
+       {
+               .cmd = "reboot",
+               .cb = cb_reboot,
+       }, {
+               .cmd = "getvar:",
+               .cb = cb_getvar,
+       }, {
+               .cmd = "download:",
+               .cb = cb_download,
+       }, {
+               .cmd = "boot",
+               .cb = cb_boot,
+       },
+};
+
+static void rx_handler_command(struct usb_ep *ep, struct usb_request *req)
+{
+       char *cmdbuf = req->buf;
+       void (*func_cb)(struct usb_ep *ep, struct usb_request *req) = NULL;
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(cmd_dispatch_info); i++) {
+               if (!strcmp_l1(cmd_dispatch_info[i].cmd, cmdbuf)) {
+                       func_cb = cmd_dispatch_info[i].cb;
+                       break;
+               }
+       }
+
+       if (!func_cb)
+               fastboot_tx_write_str("FAILunknown command");
+       else
+               func_cb(ep, req);
+
+       if (req->status == 0) {
+               *cmdbuf = '\0';
+               req->actual = 0;
+               usb_ep_queue(ep, req, 0);
+       }
+}
index feef9e4619c482c31d7ce5a45bbab55a772c6146..28f215e07c6efa34e16ce2af151b23dc47e4fdc6 100644 (file)
@@ -219,21 +219,15 @@ static int download_tail(long long int left, int cnt)
        }
 
        /*
-        * To store last "packet" DFU storage backend requires dfu_write with
-        * size parameter equal to 0
+        * To store last "packet" or write file from buffer to filesystem
+        * DFU storage backend requires dfu_flush
         *
         * This also frees memory malloc'ed by dfu_get_buf(), so no explicit
         * need fo call dfu_free_buf() is needed.
         */
-       ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
-       if (ret)
-               error("DFU write failed [%d] cnt: %d", ret, cnt);
-
        ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
-       if (ret) {
+       if (ret)
                error("DFU flush failed!");
-               return ret;
-       }
 
        return ret;
 }
index 74300746b9dbce36dc30fb261b55d0da26a6e780..02803df23c52faf2f6a84c7fa69f95f5cc0c2ca1 100644 (file)
@@ -311,11 +311,7 @@ static struct fsg_lun *fsg_lun_from_dev(struct device *dev)
 #define DELAYED_STATUS (EP0_BUFSIZE + 999)     /* An impossibly large value */
 
 /* Number of buffers we will use.  2 is enough for double-buffering */
-#ifndef CONFIG_CI_UDC
 #define FSG_NUM_BUFFERS        2
-#else
-#define FSG_NUM_BUFFERS        1 /* ci_udc only allows 1 req per ep at present */
-#endif
 
 /* Default size of buffer length. */
 #define FSG_BUFLEN     ((u32)16384)
index b301e28252bc31c34e6f7fcd0df95a6127fcd427..7211c6ad964162222f9fc73e380e30a212f24eca 100644 (file)
@@ -37,6 +37,7 @@ obj-$(CONFIG_USB_EHCI_SPEAR) += ehci-spear.o
 obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
 obj-$(CONFIG_USB_EHCI_VCT) += ehci-vct.o
 obj-$(CONFIG_USB_EHCI_RMOBILE) += ehci-rmobile.o
+obj-$(CONFIG_USB_EHCI_ZYNQ) += ehci-zynq.o
 
 # xhci
 obj-$(CONFIG_USB_XHCI) += xhci.o xhci-mem.o xhci-ring.o
index 6cb4d986685c037757aca191dc9490e2a38c3a07..45062e699bd7c38793e9bd6a5a3142e263c16f84 100644 (file)
@@ -104,15 +104,20 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
        if (!strncmp(phy_type, "utmi", 4)) {
 #if defined(CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY)
-               setbits_be32(&ehci->control, PHY_CLK_SEL_UTMI);
-               setbits_be32(&ehci->control, UTMI_PHY_EN);
+               clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK,
+                               PHY_CLK_SEL_UTMI);
+               clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK,
+                               UTMI_PHY_EN);
                udelay(1000); /* delay required for PHY Clk to appear */
 #endif
                out_le32(&(*hcor)->or_portsc[0], PORT_PTS_UTMI);
-               setbits_be32(&ehci->control, USB_EN);
+               clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK,
+                               USB_EN);
        } else {
-               setbits_be32(&ehci->control, PHY_CLK_SEL_ULPI);
-               clrsetbits_be32(&ehci->control, UTMI_PHY_EN, USB_EN);
+               clrsetbits_be32(&ehci->control, CONTROL_REGISTER_W1C_MASK,
+                               PHY_CLK_SEL_ULPI);
+               clrsetbits_be32(&ehci->control, UTMI_PHY_EN |
+                               CONTROL_REGISTER_W1C_MASK, USB_EN);
                udelay(1000); /* delay required for PHY Clk to appear */
                if (!usb_phy_clk_valid(ehci))
                        return -EINVAL;
index 38db18e2c9ea34c56140ee9385579cc5c34cfbc8..33e5ea9ebdd0d836d4412af5971f558b790dc8bd 100644 (file)
@@ -69,6 +69,7 @@ struct fdt_usb {
        unsigned enabled:1;     /* 1 to enable, 0 to disable */
        unsigned has_legacy_mode:1; /* 1 if this port has legacy mode */
        unsigned initialized:1; /* has this port already been initialized? */
+       enum usb_init_type init_type;
        enum dr_mode dr_mode;   /* dual role mode */
        enum periph_id periph_id;/* peripheral id */
        struct fdt_gpio_state vbus_gpio;        /* GPIO for vbus enable */
@@ -237,29 +238,31 @@ int ehci_get_port_speed(struct ehci_hcor *hcor, uint32_t reg)
                return PORTSC_PSPD(reg);
 }
 
-/* Put the port into host mode */
-static void set_host_mode(struct fdt_usb *config)
+/* Set up VBUS for host/device mode */
+static void set_up_vbus(struct fdt_usb *config, enum usb_init_type init)
 {
        /*
-        * If we are an OTG port, check if remote host is driving VBus and
-        * bail out in this case.
+        * If we are an OTG port initializing in host mode,
+        * check if remote host is driving VBus and bail out in this case.
         */
-       if (config->dr_mode == DR_MODE_OTG &&
-               (readl(&config->reg->phy_vbus_sensors) & VBUS_VLD_STS))
+       if (init == USB_INIT_HOST &&
+           config->dr_mode == DR_MODE_OTG &&
+           (readl(&config->reg->phy_vbus_sensors) & VBUS_VLD_STS)) {
+               printf("tegrausb: VBUS input active; not enabling as host\n");
                return;
+       }
 
-       /*
-        * If not driving, we set the GPIO to enable VBUS. We assume
-        * that the pinmux is set up correctly for this.
-        */
        if (fdt_gpio_isvalid(&config->vbus_gpio)) {
+               int vbus_value;
+
                fdtdec_setup_gpio(&config->vbus_gpio);
-               gpio_direction_output(config->vbus_gpio.gpio,
-                       (config->vbus_gpio.flags & FDT_GPIO_ACTIVE_LOW) ?
-                                0 : 1);
-               debug("set_host_mode: GPIO %d %s\n", config->vbus_gpio.gpio,
-                       (config->vbus_gpio.flags & FDT_GPIO_ACTIVE_LOW) ?
-                               "low" : "high");
+
+               vbus_value = (init == USB_INIT_HOST) ^
+                            !!(config->vbus_gpio.flags & FDT_GPIO_ACTIVE_LOW);
+               gpio_direction_output(config->vbus_gpio.gpio, vbus_value);
+
+               debug("set_up_vbus: GPIO %d %d\n", config->vbus_gpio.gpio,
+                     vbus_value);
        }
 }
 
@@ -293,10 +296,44 @@ static const unsigned *get_pll_timing(void)
        return timing;
 }
 
+/* select the PHY to use with a USB controller */
+static void init_phy_mux(struct fdt_usb *config, uint pts,
+                        enum usb_init_type init)
+{
+       struct usb_ctlr *usbctlr = config->reg;
+
+#if defined(CONFIG_TEGRA20)
+       if (config->periph_id == PERIPH_ID_USBD) {
+               clrsetbits_le32(&usbctlr->port_sc1, PTS1_MASK,
+                               PTS_UTMI << PTS1_SHIFT);
+               clrbits_le32(&usbctlr->port_sc1, STS1);
+       } else {
+               clrsetbits_le32(&usbctlr->port_sc1, PTS_MASK,
+                               PTS_UTMI << PTS_SHIFT);
+               clrbits_le32(&usbctlr->port_sc1, STS);
+       }
+#else
+       /* Set to Host mode (if applicable) after Controller Reset was done */
+       clrsetbits_le32(&usbctlr->usb_mode, USBMODE_CM_HC,
+                       (init == USB_INIT_HOST) ? USBMODE_CM_HC : 0);
+       /*
+        * Select PHY interface after setting host mode.
+        * For device mode, the ordering requirement is not an issue, since
+        * only the first USB controller supports device mode, and that USB
+        * controller can only talk to a UTMI PHY, so the PHY selection is
+        * already made at reset time, so this write is a no-op.
+        */
+       clrsetbits_le32(&usbctlr->hostpc1_devlc, PTS_MASK,
+                       pts << PTS_SHIFT);
+       clrbits_le32(&usbctlr->hostpc1_devlc, STS);
+#endif
+}
+
 /* set up the UTMI USB controller with the parameters provided */
-static int init_utmi_usb_controller(struct fdt_usb *config)
+static int init_utmi_usb_controller(struct fdt_usb *config,
+                                   enum usb_init_type init)
 {
-       u32 val;
+       u32 b_sess_valid_mask, val;
        int loop_count;
        const unsigned *timing;
        struct usb_ctlr *usbctlr = config->reg;
@@ -314,6 +351,10 @@ static int init_utmi_usb_controller(struct fdt_usb *config)
        /* Follow the crystal clock disable by >100ns delay */
        udelay(1);
 
+       b_sess_valid_mask = (VBUS_B_SESS_VLD_SW_VALUE | VBUS_B_SESS_VLD_SW_EN);
+       clrsetbits_le32(&usbctlr->phy_vbus_sensors, b_sess_valid_mask,
+                       (init == USB_INIT_DEVICE) ? b_sess_valid_mask : 0);
+
        /*
         * To Use the A Session Valid for cable detection logic, VBUS_WAKEUP
         * mux must be switched to actually use a_sess_vld threshold.
@@ -485,21 +526,7 @@ static int init_utmi_usb_controller(struct fdt_usb *config)
        clrbits_le32(&usbctlr->icusb_ctrl, IC_ENB1);
 
        /* Select UTMI parallel interface */
-#if defined(CONFIG_TEGRA20)
-       if (config->periph_id == PERIPH_ID_USBD) {
-               clrsetbits_le32(&usbctlr->port_sc1, PTS1_MASK,
-                               PTS_UTMI << PTS1_SHIFT);
-               clrbits_le32(&usbctlr->port_sc1, STS1);
-       } else {
-               clrsetbits_le32(&usbctlr->port_sc1, PTS_MASK,
-                               PTS_UTMI << PTS_SHIFT);
-               clrbits_le32(&usbctlr->port_sc1, STS);
-       }
-#else
-       clrsetbits_le32(&usbctlr->hostpc1_devlc, PTS_MASK,
-                       PTS_UTMI << PTS_SHIFT);
-       clrbits_le32(&usbctlr->hostpc1_devlc, STS);
-#endif
+       init_phy_mux(config, PTS_UTMI, init);
 
        /* Deassert power down state */
        clrbits_le32(&usbctlr->utmip_xcvr_cfg0, UTMIP_FORCE_PD_POWERDOWN |
@@ -529,7 +556,8 @@ static int init_utmi_usb_controller(struct fdt_usb *config)
 #endif
 
 /* set up the ULPI USB controller with the parameters provided */
-static int init_ulpi_usb_controller(struct fdt_usb *config)
+static int init_ulpi_usb_controller(struct fdt_usb *config,
+                                   enum usb_init_type init)
 {
        u32 val;
        int loop_count;
@@ -557,13 +585,7 @@ static int init_ulpi_usb_controller(struct fdt_usb *config)
                        ULPI_CLKOUT_PINMUX_BYP | ULPI_OUTPUT_PINMUX_BYP);
 
        /* Select ULPI parallel interface */
-#if defined(CONFIG_TEGRA20)
-       clrsetbits_le32(&usbctlr->port_sc1, PTS_MASK,
-                       PTS_ULPI << PTS_SHIFT);
-#else
-       clrsetbits_le32(&usbctlr->hostpc1_devlc, PTS_MASK,
-                       PTS_ULPI << PTS_SHIFT);
-#endif
+       init_phy_mux(config, PTS_ULPI, init);
 
        /* enable ULPI transceiver */
        setbits_le32(&usbctlr->susp_ctrl, ULPI_PHY_ENB);
@@ -612,7 +634,8 @@ static int init_ulpi_usb_controller(struct fdt_usb *config)
        return 0;
 }
 #else
-static int init_ulpi_usb_controller(struct fdt_usb *config)
+static int init_ulpi_usb_controller(struct fdt_usb *config,
+                                   enum usb_init_type init)
 {
        printf("No code to set up ULPI controller, please enable"
                        "CONFIG_USB_ULPI and CONFIG_USB_ULPI_VIEWPORT");
@@ -765,42 +788,66 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
        config = &port[index];
 
+       switch (init) {
+       case USB_INIT_HOST:
+               switch (config->dr_mode) {
+               case DR_MODE_HOST:
+               case DR_MODE_OTG:
+                       break;
+               default:
+                       printf("tegrausb: Invalid dr_mode %d for host mode\n",
+                              config->dr_mode);
+                       return -1;
+               }
+               break;
+       case USB_INIT_DEVICE:
+               if (config->periph_id != PERIPH_ID_USBD) {
+                       printf("tegrausb: Device mode only supported on first USB controller\n");
+                       return -1;
+               }
+               if (!config->utmi) {
+                       printf("tegrausb: Device mode only supported with UTMI PHY\n");
+                       return -1;
+               }
+               switch (config->dr_mode) {
+               case DR_MODE_DEVICE:
+               case DR_MODE_OTG:
+                       break;
+               default:
+                       printf("tegrausb: Invalid dr_mode %d for device mode\n",
+                              config->dr_mode);
+                       return -1;
+               }
+               break;
+       default:
+               printf("tegrausb: Unknown USB_INIT_* %d\n", init);
+               return -1;
+       }
+
        /* skip init, if the port is already initialized */
-       if (config->initialized)
+       if (config->initialized && config->init_type == init)
                goto success;
 
-       if (config->utmi && init_utmi_usb_controller(config)) {
+       if (config->utmi && init_utmi_usb_controller(config, init)) {
                printf("tegrausb: Cannot init port %d\n", index);
                return -1;
        }
 
-       if (config->ulpi && init_ulpi_usb_controller(config)) {
+       if (config->ulpi && init_ulpi_usb_controller(config, init)) {
                printf("tegrausb: Cannot init port %d\n", index);
                return -1;
        }
 
-       set_host_mode(config);
+       set_up_vbus(config, init);
 
        config->initialized = 1;
+       config->init_type = init;
 
 success:
        usbctlr = config->reg;
        *hccr = (struct ehci_hccr *)&usbctlr->cap_length;
        *hcor = (struct ehci_hcor *)&usbctlr->usb_cmd;
 
-       if (controller->has_hostpc) {
-               /* Set to Host mode after Controller Reset was done */
-               clrsetbits_le32(&usbctlr->usb_mode, USBMODE_CM_HC,
-                               USBMODE_CM_HC);
-               /* Select UTMI parallel interface after setting host mode */
-               if (config->utmi) {
-                       clrsetbits_le32((char *)&usbctlr->usb_cmd +
-                                       HOSTPC1_DEVLC, PTS_MASK,
-                                       PTS_UTMI << PTS_SHIFT);
-                       clrbits_le32((char *)&usbctlr->usb_cmd +
-                                    HOSTPC1_DEVLC, STS);
-               }
-       }
        return 0;
 }
 
diff --git a/drivers/usb/host/ehci-zynq.c b/drivers/usb/host/ehci-zynq.c
new file mode 100644 (file)
index 0000000..7770d05
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * (C) Copyright 2014, Xilinx, Inc
+ *
+ * USB Low level initialization(Specific to zynq)
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/io.h>
+#include <usb.h>
+#include <usb/ehci-fsl.h>
+#include <usb/ulpi.h>
+
+#include "ehci.h"
+
+#define ZYNQ_USB_USBCMD_RST                    0x0000002
+#define ZYNQ_USB_USBCMD_STOP                   0x0000000
+#define ZYNQ_USB_NUM_MIO                       12
+
+/*
+ * Create the appropriate control structures to manage
+ * a new EHCI host controller.
+ */
+int ehci_hcd_init(int index,  enum usb_init_type init, struct ehci_hccr **hccr,
+                 struct ehci_hcor **hcor)
+{
+       struct usb_ehci *ehci;
+       struct ulpi_viewport ulpi_vp;
+       int ret, mio_usb;
+       /* Used for writing the ULPI data address */
+       struct ulpi_regs *ulpi = (struct ulpi_regs *)0;
+
+       if (!index) {
+               mio_usb = zynq_slcr_get_mio_pin_status("usb0");
+               if (mio_usb != ZYNQ_USB_NUM_MIO) {
+                       printf("usb0 wrong num MIO: %d, Index %d\n", mio_usb,
+                              index);
+                       return -1;
+               }
+               ehci = (struct usb_ehci *)ZYNQ_USB_BASEADDR0;
+       } else {
+               mio_usb = zynq_slcr_get_mio_pin_status("usb1");
+               if (mio_usb != ZYNQ_USB_NUM_MIO) {
+                       printf("usb1 wrong num MIO: %d, Index %d\n", mio_usb,
+                              index);
+                       return -1;
+               }
+               ehci = (struct usb_ehci *)ZYNQ_USB_BASEADDR1;
+       }
+
+       *hccr = (struct ehci_hccr *)((uint32_t)&ehci->caplength);
+       *hcor = (struct ehci_hcor *)((uint32_t) *hccr +
+                       HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
+
+       ulpi_vp.viewport_addr = (u32)&ehci->ulpi_viewpoint;
+       ulpi_vp.port_num = 0;
+
+       ret = ulpi_init(&ulpi_vp);
+       if (ret) {
+               puts("zynq ULPI viewport init failed\n");
+               return -1;
+       }
+
+       /* ULPI set flags */
+       ulpi_write(&ulpi_vp, &ulpi->otg_ctrl,
+                  ULPI_OTG_DP_PULLDOWN | ULPI_OTG_DM_PULLDOWN |
+                  ULPI_OTG_EXTVBUSIND);
+       ulpi_write(&ulpi_vp, &ulpi->function_ctrl,
+                  ULPI_FC_FULL_SPEED | ULPI_FC_OPMODE_NORMAL |
+                  ULPI_FC_SUSPENDM);
+       ulpi_write(&ulpi_vp, &ulpi->iface_ctrl, 0);
+
+       /* Set VBus */
+       ulpi_write(&ulpi_vp, &ulpi->otg_ctrl_set,
+                  ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
+
+       return 0;
+}
+
+/*
+ * Destroy the appropriate control structures corresponding
+ * the the EHCI host controller.
+ */
+int ehci_hcd_stop(int index)
+{
+       struct usb_ehci *ehci;
+
+       if (!index)
+               ehci = (struct usb_ehci *)ZYNQ_USB_BASEADDR0;
+       else
+               ehci = (struct usb_ehci *)ZYNQ_USB_BASEADDR1;
+
+       /* Stop controller */
+       writel(ZYNQ_USB_USBCMD_STOP, &ehci->usbcmd);
+       udelay(1000);
+
+       /* Initiate controller reset */
+       writel(ZYNQ_USB_USBCMD_RST, &ehci->usbcmd);
+
+       return 0;
+}
index 6599d386dc5538ae5551ee1a2e026c6302ea732c..8c3b0a145a4dcb126107cf20e305ecd23fdc74ef 100644 (file)
@@ -576,6 +576,10 @@ static void ep0_txstate(struct musb *musb)
        } else
                request = NULL;
 
+       /* send it out, triggering a "txpktrdy cleared" irq */
+       musb_ep_select(musb->mregs, 0);
+       musb_writew(regs, MUSB_CSR0, csr);
+
        /* report completions as soon as the fifo's loaded; there's no
         * win in waiting till this last packet gets acked.  (other than
         * very precise fault reporting, needed by USB TMC; possible with
@@ -588,10 +592,6 @@ static void ep0_txstate(struct musb *musb)
                        return;
                musb->ackpend = 0;
        }
-
-       /* send it out, triggering a "txpktrdy cleared" irq */
-       musb_ep_select(musb->mregs, 0);
-       musb_writew(regs, MUSB_CSR0, csr);
 }
 
 /*
index c527029241ac2714bd93f7b9b11d82f94d1bf72c..945f35dc5d3e7692836516a81ab5510739c03b20 100644 (file)
@@ -27,6 +27,7 @@ obj-$(CONFIG_VIDEO_BCM2835) += bcm2835.o
 obj-$(CONFIG_VIDEO_COREBOOT) += coreboot_fb.o
 obj-$(CONFIG_VIDEO_CT69000) += ct69000.o videomodes.o
 obj-$(CONFIG_VIDEO_DA8XX) += da8xx-fb.o videomodes.o
+obj-$(CONFIG_VIDEO_IMX25LCDC) += imx25lcdc.o videomodes.o
 obj-$(CONFIG_VIDEO_MB862xx) += mb862xx.o videomodes.o
 obj-$(CONFIG_VIDEO_MB86R0xGDC) += mb86r0xgdc.o videomodes.o
 obj-$(CONFIG_VIDEO_MX3) += mx3fb.o videomodes.o
index 853303b5e53c35b7670b8a13ce01aaa700c32857..bb4d7d8c1471ad9ca79b203ad4cc7cc03c673c01 100644 (file)
@@ -128,12 +128,12 @@ void lcd_ctrl_init(void *lcdbase)
        value |= LCDC_LCDCFG1_HSPW(panel_info.vl_hsync_len - 1);
        lcdc_writel(&regs->lcdc_lcdcfg1, value);
 
-       value = LCDC_LCDCFG2_VBPW(panel_info.vl_lower_margin);
-       value |= LCDC_LCDCFG2_VFPW(panel_info.vl_upper_margin - 1);
+       value = LCDC_LCDCFG2_VBPW(panel_info.vl_upper_margin);
+       value |= LCDC_LCDCFG2_VFPW(panel_info.vl_lower_margin - 1);
        lcdc_writel(&regs->lcdc_lcdcfg2, value);
 
-       value = LCDC_LCDCFG3_HBPW(panel_info.vl_right_margin - 1);
-       value |= LCDC_LCDCFG3_HFPW(panel_info.vl_left_margin - 1);
+       value = LCDC_LCDCFG3_HBPW(panel_info.vl_left_margin - 1);
+       value |= LCDC_LCDCFG3_HFPW(panel_info.vl_right_margin - 1);
        lcdc_writel(&regs->lcdc_lcdcfg3, value);
 
        /* Display size */
diff --git a/drivers/video/imx25lcdc.c b/drivers/video/imx25lcdc.c
new file mode 100644 (file)
index 0000000..ef5767b
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * (C) Copyright 2011
+ * Matthias Weisser <weisserm@arcor.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * imx25lcdc.c - Graphic interface for i.MX25 lcd controller
+ */
+
+#include <common.h>
+
+#include <malloc.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <video_fb.h>
+#include "videomodes.h"
+
+/*
+ * 4MB (at the end of system RAM)
+ */
+#define VIDEO_MEM_SIZE         0x400000
+
+#define FB_SYNC_CLK_INV                (1<<16) /* pixel clock inverted */
+
+/*
+ * Graphic Device
+ */
+static GraphicDevice imx25fb;
+
+void *video_hw_init(void)
+{
+       struct lcdc_regs *lcdc = (struct lcdc_regs *)IMX_LCDC_BASE;
+       struct ccm_regs *ccm = (struct ccm_regs *)IMX_CCM_BASE;
+       GraphicDevice *pGD = &imx25fb;
+       char *s;
+       u32 *videomem;
+
+       memset(pGD, 0, sizeof(GraphicDevice));
+
+       pGD->gdfIndex = GDF_16BIT_565RGB;
+       pGD->gdfBytesPP = 2;
+       pGD->memSize = VIDEO_MEM_SIZE;
+       pGD->frameAdrs = PHYS_SDRAM + PHYS_SDRAM_SIZE - VIDEO_MEM_SIZE;
+
+       videomem = (u32 *)pGD->frameAdrs;
+
+       s = getenv("videomode");
+       if (s != NULL) {
+               struct ctfb_res_modes var_mode;
+               u32 lsr, lpcr, lhcr, lvcr;
+               unsigned long div;
+               int bpp;
+
+               /* Disable all clocks of the LCDC */
+               writel(readl(&ccm->cgr0) & ~((1<<7) | (1<<24)), &ccm->cgr0);
+               writel(readl(&ccm->cgr1) & ~(1<<29), &ccm->cgr1);
+
+               bpp = video_get_params(&var_mode, s);
+
+               if (bpp == 0) {
+                       var_mode.xres = 320;
+                       var_mode.yres = 240;
+                       var_mode.pixclock = 154000;
+                       var_mode.left_margin = 68;
+                       var_mode.right_margin = 20;
+                       var_mode.upper_margin = 4;
+                       var_mode.lower_margin = 18;
+                       var_mode.hsync_len = 40;
+                       var_mode.vsync_len = 6;
+                       var_mode.sync = 0;
+                       var_mode.vmode = 0;
+               }
+
+               /* Fill memory with white */
+               memset(videomem, 0xFF, var_mode.xres * var_mode.yres * 2);
+
+               imx25fb.winSizeX = var_mode.xres;
+               imx25fb.winSizeY = var_mode.yres;
+
+               /* LCD base clock is 66.6MHZ. We do calculations in kHz */
+               div = 66000 / (1000000000L / var_mode.pixclock);
+               if (div > 63)
+                       div = 63;
+               if (0 == div)
+                       div = 1;
+
+               lsr = ((var_mode.xres / 16) << 20) |
+                       var_mode.yres;
+               lpcr =  (1 << 31) |
+                       (1 << 30) |
+                       (5 << 25) |
+                       (1 << 23) |
+                       (1 << 22) |
+                       (1 << 19) |
+                       (1 <<  7) |
+                       div;
+               lhcr =  (var_mode.right_margin << 0) |
+                       (var_mode.left_margin << 8) |
+                       (var_mode.hsync_len << 26);
+
+               lvcr =  (var_mode.lower_margin << 0) |
+                       (var_mode.upper_margin << 8) |
+                       (var_mode.vsync_len << 26);
+
+               writel((uint32_t)videomem, &lcdc->lssar);
+               writel(lsr, &lcdc->lsr);
+               writel(var_mode.xres * 2 / 4, &lcdc->lvpwr);
+               writel(lpcr, &lcdc->lpcr);
+               writel(lhcr, &lcdc->lhcr);
+               writel(lvcr, &lcdc->lvcr);
+               writel(0x00040060, &lcdc->ldcr);
+
+               writel(0xA90300, &lcdc->lpccr);
+
+               /* Ensable all clocks of the LCDC */
+               writel(readl(&ccm->cgr0) | ((1<<7) | (1<<24)), &ccm->cgr0);
+               writel(readl(&ccm->cgr1) | (1<<29), &ccm->cgr1);
+       }
+
+       return pGD;
+}
index 3e21fb23067c0dc41c16f35fc58964db806eae07..f75d77064ea5334c6211130f367987c61bd742cd 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <common.h>
 #include <asm/errno.h>
+#include <asm/global_data.h>
 #include <linux/string.h>
 #include <linux/list.h>
 #include <linux/fb.h>
@@ -24,6 +25,8 @@
 #include "mxcfb.h"
 #include "ipu_regs.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 static int mxcfb_map_video_memory(struct fb_info *fbi);
 static int mxcfb_unmap_video_memory(struct fb_info *fbi);
 
@@ -415,6 +418,8 @@ static int mxcfb_map_video_memory(struct fb_info *fbi)
 
        fbi->screen_size = fbi->fix.smem_len;
 
+       gd->fb_base = fbi->fix.smem_start;
+
        /* Clear the screen */
        memset((char *)fbi->screen_base, 0, fbi->fix.smem_len);
 
index 9ab5446c686114c38f6c189dd2d2d8fbde086451..2dacba2ebae4aec70521a5c7f8bd18f01e84670c 100644 (file)
@@ -38,8 +38,6 @@ targets += $(patsubst $(obj)/%,%,$(LIB)) $(COBJS) $(LIBOBJS-y)
 LIBOBJS        := $(addprefix $(obj)/,$(LIBOBJS-y))
 ELF    := $(addprefix $(obj)/,$(ELF))
 
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
 # For PowerPC there's no need to compile standalone applications as a
 # relocatable executable.  The relocation data is not needed, and
 # also causes the entry point of the standalone application to be
@@ -63,7 +61,7 @@ $(LIB):       $(LIBOBJS) FORCE
 
 quiet_cmd_link_elf = LD      $@
       cmd_link_elf = $(LD) $(LDFLAGS) -g -Ttext $(CONFIG_STANDALONE_LOAD_ADDR) \
-                    -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) -L$(gcclibdir) -lgcc
+                    -o $@ -e $(SYM_PREFIX)$(@F) $< $(LIB) $(PLATFORM_LIBGCC)
 
 $(ELF): $(obj)/%: $(obj)/%.o $(LIB) FORCE
        $(call if_changed,link_elf)
index 02da75c084048396085fb9c288882c906c5b0e18..1c1172163c091b79893b2da2d3876719bf513c38 100644 (file)
@@ -904,10 +904,8 @@ long int ext4fs_get_new_blk_no(void)
 restart:
                fs->curr_blkno++;
                /* get the blockbitmap index respective to blockno */
-               if (fs->blksz != 1024) {
-                       bg_idx = fs->curr_blkno / blk_per_grp;
-               } else {
-                       bg_idx = fs->curr_blkno / blk_per_grp;
+               bg_idx = fs->curr_blkno / blk_per_grp;
+               if (fs->blksz == 1024) {
                        remainder = fs->curr_blkno % blk_per_grp;
                        if (!remainder)
                                bg_idx--;
@@ -1843,16 +1841,20 @@ long int read_allocated_block(struct ext2_inode *inode, int fileblock)
        return blknr;
 }
 
-void ext4fs_close(void)
+/**
+ * ext4fs_reinit_global() - Reinitialize values of ext4 write implementation's
+ *                         global pointers
+ *
+ * This function assures that for a file with the same name but different size
+ * the sequential store on the ext4 filesystem will be correct.
+ *
+ * In this function the global data, responsible for internal representation
+ * of the ext4 data are initialized to the reset state. Without this, during
+ * replacement of the smaller file with the bigger truncation of new file was
+ * performed.
+ */
+void ext4fs_reinit_global(void)
 {
-       if ((ext4fs_file != NULL) && (ext4fs_root != NULL)) {
-               ext4fs_free_node(ext4fs_file, &ext4fs_root->diropen);
-               ext4fs_file = NULL;
-       }
-       if (ext4fs_root != NULL) {
-               free(ext4fs_root);
-               ext4fs_root = NULL;
-       }
        if (ext4fs_indir1_block != NULL) {
                free(ext4fs_indir1_block);
                ext4fs_indir1_block = NULL;
@@ -1872,6 +1874,19 @@ void ext4fs_close(void)
                ext4fs_indir3_blkno = -1;
        }
 }
+void ext4fs_close(void)
+{
+       if ((ext4fs_file != NULL) && (ext4fs_root != NULL)) {
+               ext4fs_free_node(ext4fs_file, &ext4fs_root->diropen);
+               ext4fs_file = NULL;
+       }
+       if (ext4fs_root != NULL) {
+               free(ext4fs_root);
+               ext4fs_root = NULL;
+       }
+
+       ext4fs_reinit_global();
+}
 
 int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
                                struct ext2fs_node **fnode, int *ftype)
index b674b6faebe2d214e58909d4f90dc2857972b1ab..c42add9a7ea95d09543b4938d42668ed03128e73 100644 (file)
@@ -116,10 +116,8 @@ static void delete_single_indirect_block(struct ext2_inode *inode)
        if (inode->b.blocks.indir_block != 0) {
                debug("SIPB releasing %u\n", inode->b.blocks.indir_block);
                blknr = inode->b.blocks.indir_block;
-               if (fs->blksz != 1024) {
-                       bg_idx = blknr / blk_per_grp;
-               } else {
-                       bg_idx = blknr / blk_per_grp;
+               bg_idx = blknr / blk_per_grp;
+               if (fs->blksz == 1024) {
                        remainder = blknr % blk_per_grp;
                        if (!remainder)
                                bg_idx--;
@@ -181,11 +179,9 @@ static void delete_double_indirect_block(struct ext2_inode *inode)
                                break;
 
                        debug("DICB releasing %u\n", *di_buffer);
-                       if (fs->blksz != 1024) {
-                               bg_idx = (*di_buffer) / blk_per_grp;
-                       } else {
-                               bg_idx = (*di_buffer) / blk_per_grp;
-                               remainder = (*di_buffer) % blk_per_grp;
+                       bg_idx = *di_buffer / blk_per_grp;
+                       if (fs->blksz == 1024) {
+                               remainder = *di_buffer % blk_per_grp;
                                if (!remainder)
                                        bg_idx--;
                        }
@@ -213,10 +209,8 @@ static void delete_double_indirect_block(struct ext2_inode *inode)
 
                /* removing the parent double indirect block */
                blknr = inode->b.blocks.double_indir_block;
-               if (fs->blksz != 1024) {
-                       bg_idx = blknr / blk_per_grp;
-               } else {
-                       bg_idx = blknr / blk_per_grp;
+               bg_idx = blknr / blk_per_grp;
+               if (fs->blksz == 1024) {
                        remainder = blknr % blk_per_grp;
                        if (!remainder)
                                bg_idx--;
@@ -293,12 +287,9 @@ static void delete_triple_indirect_block(struct ext2_inode *inode)
                        for (j = 0; j < fs->blksz / sizeof(int); j++) {
                                if (*tip_buffer == 0)
                                        break;
-                               if (fs->blksz != 1024) {
-                                       bg_idx = (*tip_buffer) / blk_per_grp;
-                               } else {
-                                       bg_idx = (*tip_buffer) / blk_per_grp;
-
-                                       remainder = (*tip_buffer) % blk_per_grp;
+                               bg_idx = *tip_buffer / blk_per_grp;
+                               if (fs->blksz == 1024) {
+                                       remainder = *tip_buffer % blk_per_grp;
                                        if (!remainder)
                                                bg_idx--;
                                }
@@ -336,12 +327,9 @@ static void delete_triple_indirect_block(struct ext2_inode *inode)
                         * removing the grand parent blocks
                         * which is connected to inode
                         */
-                       if (fs->blksz != 1024) {
-                               bg_idx = (*tigp_buffer) / blk_per_grp;
-                       } else {
-                               bg_idx = (*tigp_buffer) / blk_per_grp;
-
-                               remainder = (*tigp_buffer) % blk_per_grp;
+                       bg_idx = *tigp_buffer / blk_per_grp;
+                       if (fs->blksz == 1024) {
+                               remainder = *tigp_buffer % blk_per_grp;
                                if (!remainder)
                                        bg_idx--;
                        }
@@ -371,10 +359,8 @@ static void delete_triple_indirect_block(struct ext2_inode *inode)
 
                /* removing the grand parent triple indirect block */
                blknr = inode->b.blocks.triple_indir_block;
-               if (fs->blksz != 1024) {
-                       bg_idx = blknr / blk_per_grp;
-               } else {
-                       bg_idx = blknr / blk_per_grp;
+               bg_idx = blknr / blk_per_grp;
+               if (fs->blksz == 1024) {
                        remainder = blknr % blk_per_grp;
                        if (!remainder)
                                bg_idx--;
@@ -452,10 +438,8 @@ static int ext4fs_delete_file(int inodeno)
 
                for (i = 0; i < no_blocks; i++) {
                        blknr = read_allocated_block(&(node_inode->inode), i);
-                       if (fs->blksz != 1024) {
-                               bg_idx = blknr / blk_per_grp;
-                       } else {
-                               bg_idx = blknr / blk_per_grp;
+                       bg_idx = blknr / blk_per_grp;
+                       if (fs->blksz == 1024) {
                                remainder = blknr % blk_per_grp;
                                if (!remainder)
                                        bg_idx--;
@@ -499,10 +483,8 @@ static int ext4fs_delete_file(int inodeno)
                        no_blocks++;
                for (i = 0; i < no_blocks; i++) {
                        blknr = read_allocated_block(&inode, i);
-                       if (fs->blksz != 1024) {
-                               bg_idx = blknr / blk_per_grp;
-                       } else {
-                               bg_idx = blknr / blk_per_grp;
+                       bg_idx = blknr / blk_per_grp;
+                       if (fs->blksz == 1024) {
                                remainder = blknr % blk_per_grp;
                                if (!remainder)
                                        bg_idx--;
@@ -580,6 +562,7 @@ static int ext4fs_delete_file(int inodeno)
 
        ext4fs_update();
        ext4fs_deinit();
+       ext4fs_reinit_global();
 
        if (ext4fs_init() != 0) {
                printf("error in File System init\n");
index 9f5e9118522e8dd371da428cf4fb1593a6af0af7..ba7e3aeb0b62ccf46495e012b3bceeae01b1c039 100644 (file)
@@ -139,6 +139,11 @@ static __u32 get_fatent_value(fsdata *mydata, __u32 entry)
        __u32 ret = 0x00;
        __u16 val1, val2;
 
+       if (CHECK_CLUST(entry, mydata->fatsize)) {
+               printf("Error: Invalid FAT entry: 0x%08x\n", entry);
+               return ret;
+       }
+
        switch (mydata->fatsize) {
        case 32:
                bufnum = entry / FAT32BUFSIZE;
@@ -881,8 +886,30 @@ static dir_entry *find_directory_entry(fsdata *mydata, int startsect,
                        return dentptr;
                }
 
+               /*
+                * In FAT16/12, the root dir is locate before data area, shows
+                * in following:
+                * -------------------------------------------------------------
+                * | Boot | FAT1 & 2 | Root dir | Data (start from cluster #2) |
+                * -------------------------------------------------------------
+                *
+                * As a result if curclust is in Root dir, it is a negative
+                * number or 0, 1.
+                *
+                */
+               if (mydata->fatsize != 32 && (int)curclust <= 1) {
+                       /* Current clust is in root dir, set to next clust */
+                       curclust++;
+                       if ((int)curclust <= 1)
+                               continue;       /* continue to find */
+
+                       /* Reach the end of root dir */
+                       empty_dentptr = dentptr;
+                       return NULL;
+               }
+
                curclust = get_fatent_value(mydata, dir_curclust);
-               if ((curclust >= 0xffffff8) || (curclust >= 0xfff8)) {
+               if (IS_LAST_CLUST(curclust, mydata->fatsize)) {
                        empty_dentptr = dentptr;
                        return NULL;
                }
@@ -952,7 +979,7 @@ static int do_fat_write(const char *filename, void *buffer,
        }
 
        mydata->fatbufnum = -1;
-       mydata->fatbuf = malloc(FATBUFSIZE);
+       mydata->fatbuf = memalign(ARCH_DMA_MINALIGN, FATBUFSIZE);
        if (mydata->fatbuf == NULL) {
                debug("Error: allocating memory\n");
                return -1;
index 67f115f2e8aaba24f18494b8063f43d9b5e0db3d..748ab6792d0d2055abb82e490121cd9540b1043d 100644 (file)
@@ -734,7 +734,6 @@ static int mount_ubifs(struct ubifs_info *c)
        ubifs_msg("reserved for root:  %llu bytes (%llu KiB)",
                c->report_rp_size, c->report_rp_size >> 10);
 
-       dbg_msg("compiled on:         " __DATE__ " at " __TIME__);
        dbg_msg("min. I/O unit size:  %d bytes", c->min_io_size);
        dbg_msg("LEB size:            %d bytes (%d KiB)",
                c->leb_size, c->leb_size >> 10);
diff --git a/include/android_image.h b/include/android_image.h
new file mode 100644 (file)
index 0000000..094d60a
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * This is from the Android Project,
+ * Repository: https://android.googlesource.com/platform/bootable/bootloader/legacy
+ * File: include/boot/bootimg.h
+ * Commit: 4205b865141ff2e255fe1d3bd16de18e217ef06a
+ *
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef _ANDROID_IMAGE_H_
+#define _ANDROID_IMAGE_H_
+
+#define ANDR_BOOT_MAGIC "ANDROID!"
+#define ANDR_BOOT_MAGIC_SIZE 8
+#define ANDR_BOOT_NAME_SIZE 16
+#define ANDR_BOOT_ARGS_SIZE 512
+
+struct andr_img_hdr {
+       char magic[ANDR_BOOT_MAGIC_SIZE];
+
+       u32 kernel_size;        /* size in bytes */
+       u32 kernel_addr;        /* physical load addr */
+
+       u32 ramdisk_size;       /* size in bytes */
+       u32 ramdisk_addr;       /* physical load addr */
+
+       u32 second_size;        /* size in bytes */
+       u32 second_addr;        /* physical load addr */
+
+       u32 tags_addr;          /* physical addr for kernel tags */
+       u32 page_size;          /* flash page size we assume */
+       u32 unused[2];          /* future expansion: should be 0 */
+
+       char name[ANDR_BOOT_NAME_SIZE]; /* asciiz product name */
+
+       char cmdline[ANDR_BOOT_ARGS_SIZE];
+
+       u32 id[8]; /* timestamp / checksum / sha1 / etc */
+};
+
+/*
+ * +-----------------+
+ * | boot header     | 1 page
+ * +-----------------+
+ * | kernel          | n pages
+ * +-----------------+
+ * | ramdisk         | m pages
+ * +-----------------+
+ * | second stage    | o pages
+ * +-----------------+
+ *
+ * n = (kernel_size + page_size - 1) / page_size
+ * m = (ramdisk_size + page_size - 1) / page_size
+ * o = (second_size + page_size - 1) / page_size
+ *
+ * 0. all entities are page_size aligned in flash
+ * 1. kernel and ramdisk are required (size != 0)
+ * 2. second is optional (second_size == 0 -> no second)
+ * 3. load each element (kernel, ramdisk, second) at
+ *    the specified physical address (kernel_addr, etc)
+ * 4. prepare tags at tag_addr.  kernel_args[] is
+ *    appended to the kernel commandline in the tags.
+ * 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr
+ * 6. if second_size != 0: jump to second_addr
+ *    else: jump to kernel_addr
+ */
+#endif
index c18e4ca27a3750da9a2c1e73d73c1269940bc09b..62cb1eabc1fe3932e18e99f3b62a3f341b1e624d 100644 (file)
@@ -66,7 +66,6 @@ typedef struct bd_info {
        unsigned long   bi_ipbfreq;     /* IPB Bus Freq, in MHz */
        unsigned long   bi_pcifreq;     /* PCI Bus Freq, in MHz */
 #endif
-       unsigned int    bi_baudrate;    /* Console Baudrate */
 #if defined(CONFIG_405)   || \
                defined(CONFIG_405GP) || \
                defined(CONFIG_405EP) || \
index 5fb0bb2d3d4db5c462f0c7e961b789417ed1ca24..232136c0cd1340b8c7bd941a67996ee9c58e2e1c 100644 (file)
@@ -729,9 +729,12 @@ void       get_sys_info  ( sys_info_t * );
 #if defined(CONFIG_8xx) || defined(CONFIG_MPC8260)
 void   cpu_init_f    (volatile immap_t *immr);
 #endif
-#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MCF52x2) ||defined(CONFIG_MPC86xx)
+#if defined(CONFIG_4xx) || defined(CONFIG_MCF52x2) || defined(CONFIG_MPC86xx)
 void   cpu_init_f    (void);
 #endif
+#ifdef CONFIG_MPC85xx
+ulong cpu_init_f(void);
+#endif
 
 int    cpu_init_r    (void);
 #if defined(CONFIG_MPC8260)
@@ -820,12 +823,10 @@ char *    strmhz(char *buf, unsigned long hz);
 #include <u-boot/crc.h>
 
 /* lib/rand.c */
-#if defined(CONFIG_LIB_RAND) || defined(CONFIG_LIB_HW_RAND)
 #define RAND_MAX -1U
 void srand(unsigned int seed);
 unsigned int rand(void);
 unsigned int rand_r(unsigned int *seedp);
-#endif
 
 /* common/console.c */
 int    console_init_f(void);   /* Before relocation; uses the serial  stuff    */
@@ -835,7 +836,7 @@ int ctrlc (void);
 int    had_ctrlc (void);       /* have we had a Control-C since last clear? */
 void   clear_ctrlc (void);     /* clear the Control-C condition */
 int    disable_ctrlc (int);    /* 1 to disable, 0 to enable Control-C detect */
-
+int confirm_yesno(void);        /*  1 if input is "y", "Y", "yes" or "YES" */
 /*
  * STDIO based functions (can always be used)
  */
index e6fb47be0bd71fe2dd9ca06b7586ca82a3d57b21..b304a4103def4c334347fb9f66542411422b13cb 100644 (file)
 #define CONFIG_LIB_RAND
 #endif
 
+#if defined(CONFIG_API) && defined(CONFIG_LCD)
+#define CONFIG_CMD_BMP
+#endif
+
 #ifndef CONFIG_SYS_PROMPT
 #define CONFIG_SYS_PROMPT      "=> "
 #endif
index df371b771d5590d8036c89930e54ddef6a4d2acf..1af9ba686d95d927d2fff266af9b13df731020df 100644 (file)
@@ -7,6 +7,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /*
  * B4860 QDS board configuration file
  */
 #define IDT_SERDES1_ADDRESS            0x6E
 #define IDT_SERDES2_ADDRESS            0x6C
 
+/* Voltage monitor on channel 2*/
+#define I2C_MUX_CH_VOL_MONITOR         0xa
+#define I2C_VOL_MONITOR_ADDR           0x40
+#define I2C_VOL_MONITOR_BUS_V_OFFSET   0x2
+#define I2C_VOL_MONITOR_BUS_V_OVF      0x1
+#define I2C_VOL_MONITOR_BUS_V_SHIFT    3
+
+#define CONFIG_ZM7300
+#define I2C_MUX_CH_DPM                 0xa
+#define I2C_DPM_ADDR                   0x28
+
 #define CONFIG_ENV_OVERWRITE
 
 #ifdef CONFIG_SYS_NO_FLASH
@@ -547,15 +561,15 @@ unsigned long get_board_ddr_clk(void);
  * 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
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE 0x100000      /* 1M */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
 /*
  * 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_PHYS 0xfef100000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE 0x40000   /* 256K */
 
@@ -824,8 +838,7 @@ unsigned long get_board_ddr_clk(void);
        "ramdiskfile=b4860qds/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=b4860qds/b4860qds.dtb\0"                               \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 /* For emulation this causes u-boot to jump to the start of the proof point
    app code automatically */
index e76a04b26253f48f608e87542037e13ec32f38dd..7bb5d33d0cc974a0fe82c9738bf897d060533994 100644 (file)
@@ -360,7 +360,7 @@ combinations. this should be removed later
 #endif
 
 /* Set up IFC registers for boot location NOR/NAND */
-#if defined(CONFIG_NAND)
+#if defined(CONFIG_NAND) || defined(CONFIG_NAND_SECBOOT)
 #define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
 #define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
 #define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
index 2822a08c0aeffecab5a1801435e99dd64629bb83..fd6c9763d8bcc60a58f06dac6732d1032104f2a7 100644 (file)
 #define CONFIG_CMD_ELF
 #define CONFIG_CMD_DATE
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_BEDBUG
 
index f15e1626f0b7e9ef158df3b518004950eb869b00..72f5fde16a7b7331338ce487916cd5caae07ce0c 100644 (file)
@@ -11,6 +11,8 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 #include "../board/freescale/common/ics307_clk.h"
 
 #ifdef CONFIG_36BIT
index 7b63945888b16c7774f473c2a6422a20a6880960..48ae9d4cae68f676627fd199b6eed4fb30d97251 100644 (file)
@@ -11,6 +11,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #include "../board/freescale/common/ics307_clk.h"
 
 #ifdef CONFIG_36BIT
@@ -30,7 +33,7 @@
 #endif
 
 #ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xeff80000
+#define CONFIG_SYS_TEXT_BASE   0xeff40000
 #endif
 
 #ifndef CONFIG_RESET_VECTOR_ADDRESS
index 7443acec80b2fd6502b4570fb9d357025f5a410c..a0d7d52627d0cb92064a5c45b79724a46a22bf52 100644 (file)
@@ -16,6 +16,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_MPC8641         1       /* MPC8641 specific */
 #define CONFIG_MPC8641HPCN     1       /* MPC8641HPCN board specific */
index 036396c7814d490857e90c3825360567da587bef..1ab2b3d51a2caa60bb0e811865b94190c73e0ebf 100644 (file)
@@ -89,6 +89,7 @@
 #define CONFIG_CMD_SDRAM
 #define CONFIG_CMD_PCI
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_I2C
 
 #undef CONFIG_WATCHDOG
index 27c2fa011dc3945b7b6e316fd1cb10ff5e33237e..1ee4d7cc3378f18d7f7c324607d6d1aaf0b69f3e 100644 (file)
 #define CONFIG_CMD_PCI
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_USB
 #define CONFIG_DOS_PARTITION
 
index ad15506fadaec3830c93f364d7f64ed942eee0bb..27f730d84b50345f216d90d33cf6ea1d6cbb9142 100644 (file)
@@ -74,6 +74,7 @@
 #define CONFIG_CMD_CACHE
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_NET
index 0f04067258385d1007710f64f3cb3a89ea0d4c29..110ba5f325dd575b49abd839e0b455febf1a49d4 100644 (file)
 
 #ifdef CONFIG_P1011RDB
 #define CONFIG_P1011
+#define CONFIG_SYS_L2_SIZE     (256 << 10)
 #endif
 #ifdef CONFIG_P1020RDB
 #define CONFIG_P1020
+#define CONFIG_SYS_L2_SIZE     (256 << 10)
 #endif
 #ifdef CONFIG_P2010RDB
 #define CONFIG_P2010
+#define CONFIG_SYS_L2_SIZE     (512 << 10)
 #endif
 #ifdef CONFIG_P2020RDB
 #define CONFIG_P2020
-#endif
-
-#ifdef CONFIG_NAND
-#define CONFIG_NAND_U_BOOT             1
-#define CONFIG_RAMBOOT_NAND            1
-#ifdef CONFIG_NAND_SPL
-#define CONFIG_SYS_TEXT_BASE_SPL 0xfff00000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE_SPL /* start of monitor */
-#else
-#define CONFIG_SYS_LDSCRIPT $(CPUDIR)/u-boot-nand.lds
-#define CONFIG_SYS_TEXT_BASE           0xf8f82000
-#endif /* CONFIG_NAND_SPL */
+#define CONFIG_SYS_L2_SIZE     (512 << 10)
 #endif
 
 #ifdef CONFIG_SDCARD
-#define CONFIG_RAMBOOT_SDCARD          1
-#define CONFIG_SYS_TEXT_BASE           0x11000000
-#define CONFIG_RESET_VECTOR_ADDRESS    0x110bfffc
+#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_SYS_TEXT_BASE           0x11001000
+#define CONFIG_SPL_TEXT_BASE           0xf8f81000
+#define CONFIG_SPL_PAD_TO              0x20000
+#define CONFIG_SPL_MAX_SIZE            (128 * 1024)
+#define CONFIG_SYS_MMC_U_BOOT_SIZE     (768 << 10)
+#define CONFIG_SYS_MMC_U_BOOT_DST      (0x11000000)
+#define CONFIG_SYS_MMC_U_BOOT_START    (0x11000000)
+#define CONFIG_SYS_MMC_U_BOOT_OFFS     (129 << 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                1
-#define CONFIG_SYS_TEXT_BASE           0x11000000
-#define CONFIG_RESET_VECTOR_ADDRESS    0x110bfffc
+#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_SYS_TEXT_BASE           0x11001000
+#define CONFIG_SPL_TEXT_BASE           0xf8f81000
+#define CONFIG_SPL_PAD_TO              0x20000
+#define CONFIG_SPL_MAX_SIZE            (128 * 1024)
+#define CONFIG_SYS_SPI_FLASH_U_BOOT_SIZE       (768 << 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       (128 << 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
+
+#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    (832 << 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_FLUSH_IMAGE
+#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
+#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 /* not CONFIG_TPL_BUILD */
+
+#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
 
 #ifndef CONFIG_SYS_TEXT_BASE
 #endif
 
 #ifndef CONFIG_SYS_MONITOR_BASE
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MONITOR_BASE        CONFIG_SPL_TEXT_BASE
+#else
 #define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE    /* start of monitor */
 #endif
+#endif
 
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
@@ -120,22 +204,45 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_MEMTEST_END         0x1fffffff
 #define CONFIG_PANIC_HANG      /* do not reset board on panic */
 
- /*
-  * Config the L2 Cache as L2 SRAM
-  */
+/*
+ * 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
-#ifdef CONFIG_PHYS_64BIT
-#define CONFIG_SYS_INIT_L2_ADDR_PHYS   0xff8f80000ull
+#define CONFIG_SYS_INIT_L2_ADDR_PHYS   CONFIG_SYS_INIT_L2_ADDR
+#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_GD_ADDR             (CONFIG_SYS_INIT_L2_ADDR + 112 * 1024)
+#define CONFIG_SPL_RELOC_STACK         (CONFIG_SYS_INIT_L2_ADDR + 116 * 1024)
+#define CONFIG_SPL_RELOC_STACK_SIZE    (32 << 10)
+#define CONFIG_SPL_RELOC_MALLOC_ADDR   (CONFIG_SYS_INIT_L2_ADDR + 148 * 1024)
+#if defined(CONFIG_P2020RDB)
+#define CONFIG_SPL_RELOC_MALLOC_SIZE   (364 << 10)
+#else
+#define CONFIG_SPL_RELOC_MALLOC_SIZE   (108 << 10)
+#endif
+#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_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_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 /* CONFIG_TPL_BUILD */
+#endif
 #endif
-#define CONFIG_SYS_L2_SIZE             (512 << 10)
-#define CONFIG_SYS_INIT_L2_END         (CONFIG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
-
-#define CONFIG_SYS_CCSRBAR             0xffe00000
-#define CONFIG_SYS_CCSRBAR_PHYS_LOW    CONFIG_SYS_CCSRBAR
 
-#if defined(CONFIG_NAND_SPL)
+#ifdef CONFIG_SPL_BUILD
 #define CONFIG_SYS_CCSR_DO_NOT_RELOCATE
 #endif
 
@@ -146,7 +253,15 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 
 #define CONFIG_MEM_INIT_VALUE  0xDeadBeef
 
-#define CONFIG_SYS_SDRAM_SIZE  1024    /* DDR size on P1_P2 RDBs */
+#if defined(CONFIG_P1011RDB) || defined(CONFIG_P1020RDB)
+/*
+ * P1020 and it's derivatives support max 32bit DDR width
+ * So Reduce available DDR size
+*/
+#define CONFIG_SYS_SDRAM_SIZE  512
+#else
+#define CONFIG_SYS_SDRAM_SIZE  1024
+#endif
 #define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
 #define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
 
@@ -201,14 +316,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Flash Erase Timeout (ms) */
 #define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (ms) */
 
-#if defined(CONFIG_RAMBOOT_NAND) || defined(CONFIG_RAMBOOT_SDCARD) || \
-    defined(CONFIG_RAMBOOT_SPIFLASH)
-#define CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_EXTRA_ENV_RELOC
-#else
-#undef CONFIG_SYS_RAMBOOT
-#endif
-
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_EMPTY_INFO
@@ -241,21 +348,12 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_MONITOR_LEN         (768 * 1024)
 #define CONFIG_SYS_MALLOC_LEN          (1024 * 1024)   /* Reserved for malloc*/
 
-#ifndef CONFIG_NAND_SPL
-#define CONFIG_SYS_NAND_BASE           0xffa00000
+#define CONFIG_SYS_NAND_BASE           0xff800000
 #ifdef CONFIG_PHYS_64BIT
-#define CONFIG_SYS_NAND_BASE_PHYS      0xfffa00000ull
+#define CONFIG_SYS_NAND_BASE_PHYS      0xfff800000ull
 #else
 #define CONFIG_SYS_NAND_BASE_PHYS      CONFIG_SYS_NAND_BASE
 #endif
-#else
-#define CONFIG_SYS_NAND_BASE           0xfff00000
-#ifdef CONFIG_PHYS_64BIT
-#define CONFIG_SYS_NAND_BASE_PHYS      0xffff00000ull
-#else
-#define CONFIG_SYS_NAND_BASE_PHYS      CONFIG_SYS_NAND_BASE
-#endif
-#endif
 
 #define CONFIG_CMD_NAND
 #define CONFIG_SYS_NAND_BASE_LIST      {CONFIG_SYS_NAND_BASE}
@@ -264,15 +362,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_NAND_FSL_ELBC           1
 #define CONFIG_SYS_NAND_BLOCK_SIZE     (16 * 1024)
 
-/* NAND boot: 4K NAND loader config */
-#define CONFIG_SYS_NAND_SPL_SIZE       0x1000
-#define CONFIG_SYS_NAND_U_BOOT_SIZE    ((768 << 10) - 0x2000)
-#define CONFIG_SYS_NAND_U_BOOT_DST     (CONFIG_SYS_INIT_L2_ADDR)
-#define CONFIG_SYS_NAND_U_BOOT_START   (CONFIG_SYS_INIT_L2_ADDR + CONFIG_SYS_NAND_SPL_SIZE)
-#define CONFIG_SYS_NAND_U_BOOT_OFFS    (0)
-#define CONFIG_SYS_NAND_U_BOOT_RELOC   (CONFIG_SYS_INIT_L2_END - 0x2000)
-#define CONFIG_SYS_NAND_U_BOOT_RELOC_SP                ((CONFIG_SYS_INIT_L2_END - 1) & ~0xF)
-
 /* NAND flash config */
 #define CONFIG_SYS_NAND_BR_PRELIM (BR_PHYS_ADDR(CONFIG_SYS_NAND_BASE_PHYS) \
                                | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \
@@ -288,7 +377,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
                                | OR_FCM_TRLX \
                                | OR_FCM_EHTR)
 
-#ifdef CONFIG_RAMBOOT_NAND
+#ifdef CONFIG_NAND
 #define CONFIG_SYS_BR0_PRELIM  CONFIG_SYS_NAND_BR_PRELIM /* NAND Base Address */
 #define CONFIG_SYS_OR0_PRELIM  CONFIG_SYS_NAND_OR_PRELIM /* NAND Options */
 #define CONFIG_SYS_BR1_PRELIM  CONFIG_FLASH_BR_PRELIM  /* NOR Base Address */
@@ -323,7 +412,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE    1
 #define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
-#ifdef CONFIG_NAND_SPL
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_INIT_MINIMAL)
 #define CONFIG_NS16550_MIN_FUNCTIONS
 #endif
 
@@ -490,33 +579,45 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 /*
  * Environment
  */
-#if defined(CONFIG_SYS_RAMBOOT)
-#if defined(CONFIG_RAMBOOT_NAND)
-       #define CONFIG_ENV_IS_IN_NAND   1
-       #define CONFIG_ENV_SIZE         CONFIG_SYS_NAND_BLOCK_SIZE
-       #define CONFIG_ENV_OFFSET       ((768*1024)+CONFIG_SYS_NAND_BLOCK_SIZE)
-#elif defined(CONFIG_RAMBOOT_SDCARD)
+#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_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
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_INIT_L2_ADDR + (160 << 10))
+#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_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
+#define CONFIG_ENV_SIZE                0x2000
+#define CONFIG_SYS_MMC_ENV_DEV 0
+#define CONFIG_ENV_OFFSET      (512 * 0x800)
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_INIT_L2_ADDR + (160 << 10))
+#elif defined(CONFIG_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_IS_IN_FLASH  1
-       #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) */
+#define CONFIG_ENV_SIZE                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 */
+#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
+#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_LOADS_ECHO      1       /* echo on for serial download */
 #define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change */
 
index 54e6493913b29cddec25fa07d01d6aaac52c667d..16f7525def40f84d526d98c3077077eb01a24195 100644 (file)
@@ -381,15 +381,15 @@ unsigned long get_board_sys_clk(unsigned long dummy);
  * 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
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE 0x100000      /* 1M */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
 /*
  * 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_PHYS 0xfef100000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE 0x40000   /* 256K */
 
@@ -713,8 +713,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
        "ramdiskfile=p2041rdb/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=p2041rdb/p2041rdb.dtb\0"                       \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 #define CONFIG_HDBOOT                                  \
        "setenv bootargs root=/dev/$bdev rw "           \
index 522653bdc3dbc145bab3b7c1728aa209ba7b2e52..2215ac86abc2eed58213869ae3a216d28e6881a6 100644 (file)
@@ -767,8 +767,7 @@ unsigned long get_board_ddr_clk(void);
        "ramdiskfile=t1040qds/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=t1040qds/t1040qds.dtb\0"                       \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 #define CONFIG_LINUX                       \
        "setenv bootargs root=/dev/ram rw "            \
index 81b4f31bc6e8323f461b58dde4f71d74719d57be..e564cb7f53283f3761ed81bba004008ef2d92751 100644 (file)
        "ramdiskfile=" __stringify(RAMDISKFILE) "\0"            \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=" __stringify(FDTFILE) "\0"                    \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 #define CONFIG_LINUX                       \
        "setenv bootargs root=/dev/ram rw "            \
index 8bf08430be6667efb5efc89142fef99226781de3..8dd2e492ba8ef95d5fb9d9a9679c5a3afb0ecd0d 100644 (file)
@@ -505,15 +505,15 @@ unsigned long get_board_ddr_clk(void);
  * 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
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE     0x100000 /* 1M */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
 /*
  * 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_PHYS 0xfef100000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE    0x40000        /* 256K */
 
@@ -837,8 +837,7 @@ unsigned long get_board_ddr_clk(void);
        "ramdiskfile=t2080qds/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=t2080qds/t2080qds.dtb\0"                       \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 /*
  * For emulation this causes u-boot to jump to the start of the
index 73d82edb80f39c8ace493737051e6f2cf174ed94..3a1c49c8113c0528223ebc2b587f871050ee95f5 100644 (file)
@@ -461,15 +461,15 @@ unsigned long get_board_ddr_clk(void);
  * 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
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE     0x100000 /* 1M */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
 /*
  * 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_PHYS 0xfef100000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE    0x40000        /* 256K */
 
@@ -721,6 +721,7 @@ unsigned long get_board_ddr_clk(void);
 
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_ELF
+#define CONFIG_CMD_ERRATA
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_PING
@@ -750,7 +751,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
 #define CONFIG_SYS_MAXARGS     16      /* max number of command args */
 #define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE/* Boot Argument Buffer Size */
-#define CONFIG_SYS_HZ          1000    /* decrementer freq: 1ms ticks*/
 
 /*
  * For booting Linux, the board info and command line data
@@ -797,8 +797,7 @@ unsigned long get_board_ddr_clk(void);
        "ramdiskfile=t2080rdb/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=t2080rdb/t2080rdb.dtb\0"                       \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 /*
  * For emulation this causes u-boot to jump to the start of the
index ad5a9a6f0c8533c4374d22e118e5cf50da10f0c9..53c69b03dbdfcb29fe6945b8de807757c7c2086e 100644 (file)
        "ramdiskfile=t4240emu/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=t4240emu/t4240emu.dtb\0"                               \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 /*
  * For emulation this causes u-boot to jump to the start of the proof point
index e4eb30fbeb5d217d1fc19f53f2a4d9a8fa12a283..a770dd0d3a67711d11149aabd93a6b23ff1e5838 100644 (file)
@@ -375,15 +375,15 @@ unsigned long get_board_ddr_clk(void);
  * 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
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE 0x100000      /* 1M */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
 /*
  * 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_PHYS 0xfef100000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE 0x40000   /* 256K */
 
@@ -572,8 +572,7 @@ unsigned long get_board_ddr_clk(void);
        "ramdiskfile=t4240qds/ramdisk.uboot\0"                  \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=t4240qds/t4240qds.dtb\0"                               \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 #define CONFIG_HVBOOT                          \
        "setenv bootargs config-addr=0x60000000; "      \
diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h
new file mode 100644 (file)
index 0000000..183255d
--- /dev/null
@@ -0,0 +1,756 @@
+/*
+ * Copyright 2014 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * T4240 RDB board configuration file
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CONFIG_T4240RDB
+#define CONFIG_PHYS_64BIT
+
+#define CONFIG_FSL_SATA_V2
+#define CONFIG_PCIE4
+
+#define CONFIG_ICS307_REFCLK_HZ                25000000  /* ICS307 ref clk freq */
+
+#ifdef CONFIG_RAMBOOT_PBL
+#define CONFIG_RAMBOOT_TEXT_BASE       CONFIG_SYS_TEXT_BASE
+#define CONFIG_RESET_VECTOR_ADDRESS    0xfffffffc
+#define CONFIG_SYS_FSL_PBL_PBI $(SRCTREE)/board/freescale/t4rdb/t4_pbi.cfg
+#define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/t4rdb/t4_rcw.cfg
+#endif
+
+#define CONFIG_DDR_ECC
+
+#define CONFIG_CMD_REGINFO
+
+/* High Level Configuration Options */
+#define CONFIG_BOOKE
+#define CONFIG_E500                    /* BOOKE e500 family */
+#define CONFIG_E500MC                  /* BOOKE e500mc family */
+#define CONFIG_SYS_BOOK3E_HV           /* Category E.HV supported */
+#define CONFIG_MP                      /* support multiple processors */
+
+#ifndef CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_TEXT_BASE   0xeff40000
+#endif
+
+#ifndef CONFIG_RESET_VECTOR_ADDRESS
+#define CONFIG_RESET_VECTOR_ADDRESS    0xeffffffc
+#endif
+
+#define CONFIG_SYS_FSL_CPC             /* Corenet Platform Cache */
+#define CONFIG_SYS_NUM_CPC             CONFIG_NUM_DDR_CONTROLLERS
+#define CONFIG_FSL_IFC                 /* Enable IFC Support */
+#define CONFIG_PCI                     /* Enable PCI/PCIE */
+#define CONFIG_PCIE1                   /* PCIE controler 1 */
+#define CONFIG_PCIE2                   /* PCIE controler 2 */
+#define CONFIG_PCIE3                   /* PCIE controler 3 */
+#define CONFIG_FSL_PCI_INIT            /* Use common FSL init code */
+#define CONFIG_SYS_PCI_64BIT           /* enable 64-bit PCI resources */
+
+#define CONFIG_FSL_LAW                 /* Use common FSL init code */
+
+#define CONFIG_ENV_OVERWRITE
+
+/*
+ * These can be toggled for performance analysis, otherwise use default.
+ */
+#define CONFIG_SYS_CACHE_STASHING
+#define CONFIG_BTB                     /* toggle branch predition */
+#ifdef CONFIG_DDR_ECC
+#define CONFIG_ECC_INIT_VIA_DDRCONTROLLER
+#define CONFIG_MEM_INIT_VALUE          0xdeadbeef
+#endif
+
+#define CONFIG_ENABLE_36BIT_PHYS
+
+#define CONFIG_ADDR_MAP
+#define CONFIG_SYS_NUM_ADDR_MAP                64      /* number of TLB1 entries */
+
+#define CONFIG_SYS_MEMTEST_START       0x00200000      /* memtest works on */
+#define CONFIG_SYS_MEMTEST_END         0x00400000
+#define CONFIG_SYS_ALT_MEMTEST
+#define CONFIG_PANIC_HANG      /* do not reset board on panic */
+
+/*
+ *  Config the L3 Cache as L3 SRAM
+ */
+#define CONFIG_SYS_INIT_L3_ADDR                CONFIG_RAMBOOT_TEXT_BASE
+
+#define CONFIG_SYS_DCSRBAR             0xf0000000
+#define CONFIG_SYS_DCSRBAR_PHYS                0xf00000000ull
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_VERY_BIG_RAM
+#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000
+#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
+
+/* CONFIG_NUM_DDR_CONTROLLERS is defined in include/asm/config_mpc85xx.h */
+#define CONFIG_DIMM_SLOTS_PER_CTLR     1
+#define CONFIG_CHIP_SELECTS_PER_CTRL   4
+#define CONFIG_FSL_DDR_FIRST_SLOT_QUAD_CAPABLE
+
+#define CONFIG_DDR_SPD
+#define CONFIG_SYS_FSL_DDR3
+
+
+/*
+ * IFC Definitions
+ */
+#define CONFIG_SYS_FLASH_BASE  0xe0000000
+#define CONFIG_SYS_FLASH_BASE_PHYS     (0xf00000000ull | CONFIG_SYS_FLASH_BASE)
+
+
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+
+#define CONFIG_BOARD_EARLY_INIT_R      /* call board_early_init_r function */
+#define CONFIG_MISC_INIT_R
+
+#define CONFIG_HWCONFIG
+
+/* define to use L1 as initial stack */
+#define CONFIG_L1_INIT_RAM
+#define CONFIG_SYS_INIT_RAM_LOCK
+#define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
+/* The assembler doesn't like typecast */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
+       ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
+         CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
+#define CONFIG_SYS_INIT_RAM_SIZE               0x00004000
+
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
+                                       GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+
+#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
+
+/* Serial Port - controlled on board with jumper J8
+ * open - index 2
+ * shorted - index 1
+ */
+#define CONFIG_CONS_INDEX      1
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE    1
+#define CONFIG_SYS_NS16550_CLK         (get_bus_freq(0)/2)
+
+#define CONFIG_SYS_BAUDRATE_TABLE      \
+       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
+
+#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CCSRBAR+0x11C500)
+#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_CCSRBAR+0x11C600)
+#define CONFIG_SYS_NS16550_COM3        (CONFIG_SYS_CCSRBAR+0x11D500)
+#define CONFIG_SYS_NS16550_COM4        (CONFIG_SYS_CCSRBAR+0x11D600)
+
+/* Use the HUSH parser */
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
+
+/* pass open firmware flat tree */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+#define CONFIG_OF_STDOUT_VIA_ALIAS
+
+/* new uImage format support */
+#define CONFIG_FIT
+#define CONFIG_FIT_VERBOSE     /* enable fit_format_{error,warning}() */
+
+/* I2C */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_FSL
+#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
+#define CONFIG_SYS_FSL_I2C_OFFSET      0x118000
+#define CONFIG_SYS_FSL_I2C2_SLAVE      0x7F
+#define CONFIG_SYS_FSL_I2C2_OFFSET     0x118100
+
+/*
+ * General PCI
+ * Memory space is mapped 1-1, but I/O space must start from 0.
+ */
+
+/* controller 1, direct to uli, tgtid 3, Base address 20000 */
+#define CONFIG_SYS_PCIE1_MEM_VIRT      0x80000000
+#define CONFIG_SYS_PCIE1_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE1_MEM_PHYS      0xc00000000ull
+#define CONFIG_SYS_PCIE1_MEM_SIZE      0x20000000      /* 512M */
+#define CONFIG_SYS_PCIE1_IO_VIRT       0xf8000000
+#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE1_IO_PHYS       0xff8000000ull
+#define CONFIG_SYS_PCIE1_IO_SIZE       0x00010000      /* 64k */
+
+/* controller 2, Slot 2, tgtid 2, Base address 201000 */
+#define CONFIG_SYS_PCIE2_MEM_VIRT      0xa0000000
+#define CONFIG_SYS_PCIE2_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE2_MEM_PHYS      0xc20000000ull
+#define CONFIG_SYS_PCIE2_MEM_SIZE      0x20000000      /* 512M */
+#define CONFIG_SYS_PCIE2_IO_VIRT       0xf8010000
+#define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE2_IO_PHYS       0xff8010000ull
+#define CONFIG_SYS_PCIE2_IO_SIZE       0x00010000      /* 64k */
+
+/* controller 3, Slot 1, tgtid 1, Base address 202000 */
+#define CONFIG_SYS_PCIE3_MEM_VIRT      0xc0000000
+#define CONFIG_SYS_PCIE3_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE3_MEM_PHYS      0xc40000000ull
+#define CONFIG_SYS_PCIE3_MEM_SIZE      0x20000000      /* 512M */
+#define CONFIG_SYS_PCIE3_IO_VIRT       0xf8020000
+#define CONFIG_SYS_PCIE3_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE3_IO_PHYS       0xff8020000ull
+#define CONFIG_SYS_PCIE3_IO_SIZE       0x00010000      /* 64k */
+
+/* controller 4, Base address 203000 */
+#define CONFIG_SYS_PCIE4_MEM_BUS       0xe0000000
+#define CONFIG_SYS_PCIE4_MEM_PHYS      0xc60000000ull
+#define CONFIG_SYS_PCIE4_MEM_SIZE      0x20000000      /* 512M */
+#define CONFIG_SYS_PCIE4_IO_BUS                0x00000000
+#define CONFIG_SYS_PCIE4_IO_PHYS       0xff8030000ull
+#define CONFIG_SYS_PCIE4_IO_SIZE       0x00010000      /* 64k */
+
+#ifdef CONFIG_PCI
+#define CONFIG_PCI_INDIRECT_BRIDGE
+#define CONFIG_NET_MULTI
+#define CONFIG_PCI_PNP                 /* do pci plug-and-play */
+#define CONFIG_E1000
+
+#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup */
+#define CONFIG_DOS_PARTITION
+#endif /* CONFIG_PCI */
+
+/* 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
+
+/*
+ * Environment
+ */
+#define CONFIG_LOADS_ECHO              /* echo on for serial download */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE   /* allow baudrate change */
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_ERRATA
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SETEXPR
+
+#ifdef CONFIG_PCI
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_NET
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
+#define CONFIG_CMDLINE_EDITING                 /* Command-line editing */
+#define CONFIG_AUTO_COMPLETE                   /* add autocompletion support */
+#define CONFIG_SYS_LOAD_ADDR   0x2000000       /* default load address */
+#ifdef CONFIG_CMD_KGDB
+#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size */
+#else
+#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size */
+#endif
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
+#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
+#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE/* Boot Argument Buffer Size */
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 64 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CONFIG_SYS_BOOTMAPSZ   (64 << 20)      /* Initial map for Linux*/
+#define CONFIG_SYS_BOOTM_LEN   (64 << 20)      /* Increase max gunzip size */
+
+#ifdef CONFIG_CMD_KGDB
+#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
+#endif
+
+/*
+ * Environment Configuration
+ */
+#define CONFIG_ROOTPATH                "/opt/nfsroot"
+#define CONFIG_BOOTFILE                "uImage"
+#define CONFIG_UBOOTPATH       "u-boot.bin"    /* U-Boot image on TFTP server*/
+
+/* default location for tftp and bootm */
+#define CONFIG_LOADADDR                1000000
+
+
+#define CONFIG_BAUDRATE        115200
+
+#define CONFIG_HVBOOT                                  \
+       "setenv bootargs config-addr=0x60000000; "      \
+       "bootm 0x01000000 - 0x00f00000"
+
+#ifdef CONFIG_SYS_NO_FLASH
+#ifndef 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 * 1658)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
+#define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#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    66666666
+#define CONFIG_DDR_CLK_FREQ    133333333
+
+#ifndef __ASSEMBLY__
+unsigned long get_board_sys_clk(void);
+unsigned long get_board_ddr_clk(void);
+#endif
+
+/*
+ * DDR Setup
+ */
+#define CONFIG_SYS_SPD_BUS_NUM 0
+#define SPD_EEPROM_ADDRESS1    0x52
+#define SPD_EEPROM_ADDRESS2    0x54
+#define SPD_EEPROM_ADDRESS3    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}
+
+/* NAND Flash on IFC */
+#define CONFIG_NAND_FSL_IFC
+#define CONFIG_SYS_NAND_MAX_ECCPOS     256
+#define CONFIG_SYS_NAND_MAX_OOBFREE    2
+#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_4K      /* Page Size = 4K */ \
+                               | CSOR_NAND_SPRZ_224    /* Spare size = 224 */ \
+                               | CSOR_NAND_PB(128))    /*Page Per Block = 128*/
+
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* ONFI NAND Flash mode0 Timing Params */
+#define CONFIG_SYS_NAND_FTIM0          (FTIM0_NAND_TCCST(0x07) | \
+                                       FTIM0_NAND_TWP(0x18)   | \
+                                       FTIM0_NAND_TWCHT(0x07) | \
+                                       FTIM0_NAND_TWH(0x0a))
+#define CONFIG_SYS_NAND_FTIM1          (FTIM1_NAND_TADLE(0x32) | \
+                                       FTIM1_NAND_TWBE(0x39)  | \
+                                       FTIM1_NAND_TRR(0x0e)   | \
+                                       FTIM1_NAND_TRP(0x18))
+#define CONFIG_SYS_NAND_FTIM2          (FTIM2_NAND_TRAD(0x0f) | \
+                                       FTIM2_NAND_TREH(0x0a) | \
+                                       FTIM2_NAND_TWHRE(0x1e))
+#define CONFIG_SYS_NAND_FTIM3          0x0
+
+#define CONFIG_SYS_NAND_DDR_LAW                11
+#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE }
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_MTD_NAND_VERIFY_WRITE
+#define CONFIG_CMD_NAND
+
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (512 * 1024)
+
+#if defined(CONFIG_NAND)
+#define CONFIG_SYS_CSPR0_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR0               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK0              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR0               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS0_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS0_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
+#define CONFIG_SYS_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_CSPR1_EXT           CONFIG_SYS_NAND_CSPR_EXT
+#define CONFIG_SYS_CSPR1               CONFIG_SYS_NAND_CSPR
+#define CONFIG_SYS_AMASK1              CONFIG_SYS_NAND_AMASK
+#define CONFIG_SYS_CSOR1               CONFIG_SYS_NAND_CSOR
+#define CONFIG_SYS_CS1_FTIM0           CONFIG_SYS_NAND_FTIM0
+#define CONFIG_SYS_CS1_FTIM1           CONFIG_SYS_NAND_FTIM1
+#define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NAND_FTIM2
+#define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NAND_FTIM3
+#endif
+#define CONFIG_SYS_CSPR2_EXT           CONFIG_SYS_NOR1_CSPR_EXT
+#define CONFIG_SYS_CSPR2               CONFIG_SYS_NOR1_CSPR
+#define CONFIG_SYS_AMASK2              CONFIG_SYS_NOR_AMASK
+#define CONFIG_SYS_CSOR2               CONFIG_SYS_NOR_CSOR
+#define CONFIG_SYS_CS2_FTIM0           CONFIG_SYS_NOR_FTIM0
+#define CONFIG_SYS_CS2_FTIM1           CONFIG_SYS_NOR_FTIM1
+#define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NOR_FTIM2
+#define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NOR_FTIM3
+
+#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
+
+/*
+ * 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_FMAN_FW_ADDR        0x110000
+#elif defined(CONFIG_SDCARD)
+/*
+ * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is
+ * about 825KB (1650 blocks), Env is stored after the image, and the env size is
+ * 0x2000 (16 blocks), 8 + 1650 + 16 = 1674, enlarge it to 1680.
+ */
+#define CONFIG_SYS_QE_FMAN_FW_IN_MMC
+#define CONFIG_SYS_FMAN_FW_ADDR        (512 * 1680)
+#elif defined(CONFIG_NAND)
+#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
+#define CONFIG_SYS_FMAN_FW_ADDR        (8 * CONFIG_SYS_NAND_BLOCK_SIZE)
+#else
+#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
+#define CONFIG_SYS_FMAN_FW_ADDR        0xEFF00000
+#endif
+#define CONFIG_SYS_QE_FMAN_FW_LENGTH   0x10000
+#define CONFIG_SYS_FDT_PAD             (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
+#endif /* CONFIG_NOBQFMAN */
+
+#ifdef CONFIG_SYS_DPAA_FMAN
+#define CONFIG_FMAN_ENET
+#define CONFIG_PHYLIB_10G
+#define CONFIG_PHY_VITESSE
+#define CONFIG_PHY_CORTINA
+#define CONFIG_CORTINA_FW_ADDR         0xefe00000
+#define CONFIG_CORTINA_FW_LENGTH       0x40000
+#define CONFIG_PHY_TERANETICS
+#define SGMII_PHY_ADDR1 0x0
+#define SGMII_PHY_ADDR2 0x1
+#define SGMII_PHY_ADDR3 0x2
+#define SGMII_PHY_ADDR4 0x3
+#define SGMII_PHY_ADDR5 0x4
+#define SGMII_PHY_ADDR6 0x5
+#define SGMII_PHY_ADDR7 0x6
+#define SGMII_PHY_ADDR8 0x7
+#define FM1_10GEC1_PHY_ADDR    0x10
+#define FM1_10GEC2_PHY_ADDR    0x11
+#define FM2_10GEC1_PHY_ADDR    0x12
+#define FM2_10GEC2_PHY_ADDR    0x13
+#define CORTINA_PHY_ADDR1      FM1_10GEC1_PHY_ADDR
+#define CORTINA_PHY_ADDR2      FM1_10GEC2_PHY_ADDR
+#define CORTINA_PHY_ADDR3      FM2_10GEC1_PHY_ADDR
+#define CORTINA_PHY_ADDR4      FM2_10GEC2_PHY_ADDR
+#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=t4240rdb/ramdisk.uboot\0"                  \
+       "fdtaddr=c00000\0"                                      \
+       "fdtfile=t4240rdb/t4240rdb.dtb\0"                       \
+       "bdev=sda3\0"
+
+#define CONFIG_HVBOOT                                  \
+       "setenv bootargs config-addr=0x60000000; "      \
+       "bootm 0x01000000 - 0x00f00000"
+
+#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
+
+#include <asm/fsl_secure_boot.h>
+
+#ifdef CONFIG_SECURE_BOOT
+/* Secure Boot target was not getting build for T4240 because of
+ * increased binary size. So the size is being reduced by removing USB
+ * which is anyways not used in Secure Environment.
+ */
+#undef CONFIG_CMD_USB
+#endif
+
+#endif /* __CONFIG_H */
index 7849b222b0d040a898151d549839bf3c83f25dcb..2782e559f5fabd6228e90ed15075ab473be71244 100644 (file)
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_EEPROM
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_I2C
 #undef CONFIG_CMD_LOADB
 #undef CONFIG_CMD_LOADS
index 17a2da034d91e2c28c6d964fc6a9f331fa472598..8bb932ce8c234ff28789e8eb5a3f5f997c996bac 100644 (file)
@@ -48,6 +48,7 @@
 #define CONFIG_USE_ARCH_MEMCPY
 #define CONFIG_TMU_TIMER
 #define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_SYS_GENERIC_BOARD
 
 /* STACK */
 #define CONFIG_SYS_INIT_SP_ADDR                0xE8083000
index d875753a6609a66bcae6b49b9e213db5b4b918d1..fa64a688a44af63ee7e20e6c8f29d8be090fa478 100644 (file)
@@ -88,6 +88,7 @@
 #define CONFIG_CMD_LOADS
 #define CONFIG_CMD_LOADB
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMDLINE_EDITING
 
 #define CONFIG_SYS_HUSH_PARSER
index ccfda71c959d6e0ebc91b10b2ebc586e1290f550..341b21df270c305a767fb2a0aad78c6696b96d9f 100644 (file)
@@ -22,7 +22,6 @@
 #define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
 
 #define CONFIG_AT91SAM9M10G45EK
-#define CONFIG_AT91FAMILY
 
 #define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs      */
 #define CONFIG_SETUP_MEMORY_TAGS
@@ -34,6 +33,8 @@
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_OF_LIBFDT
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* general purpose I/O */
 #define CONFIG_ATMEL_LEGACY            /* required until (g)pio is fixed */
 #define CONFIG_AT91_GPIO
 
 #endif
 
+/* MMC */
+#define CONFIG_CMD_MMC
+
+#ifdef CONFIG_CMD_MMC
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_GENERIC_ATMEL_MCI
+#endif
+
+#if defined(CONFIG_CMD_USB) || defined(CONFIG_CMD_MMC)
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
 /* Ethernet */
 #define CONFIG_MACB
 #define CONFIG_RMII
 #define CONFIG_USB_EHCI
 #define CONFIG_USB_EHCI_ATMEL
 #define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
-#define CONFIG_DOS_PARTITION
 #define CONFIG_USB_STORAGE
 
 #define CONFIG_SYS_LOAD_ADDR           0x22000000      /* load address */
 #define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
 #define CONFIG_SYS_MEMTEST_END         0x23e00000
 
+#ifdef CONFIG_SYS_USE_NANDFLASH
 /* bootstrap + u-boot + env in nandflash */
 #define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0xc0000
        "256k(env),256k(env_redundant),256k(spare),"                    \
        "512k(dtb),6M(kernel)ro,-(rootfs) "                             \
        "root=/dev/mtdblock7 rw rootfstype=jffs2"
+#elif CONFIG_SYS_USE_MMC
+/* bootstrap + u-boot + env + linux in mmc */
+#define FAT_ENV_INTERFACE      "mmc"
+#define FAT_ENV_DEVICE         0
+#define FAT_ENV_PART           1
+#define FAT_ENV_FILE           "uboot.env"
+#define CONFIG_ENV_IS_IN_FAT
+#define CONFIG_FAT_WRITE
+#define CONFIG_ENV_SIZE                0x4000
+
+#define CONFIG_BOOTARGS                "console=ttyS0,115200 " \
+                               "mtdparts=atmel_nand:" \
+                               "8M(bootstrap/uboot/kernel)ro,-(rootfs) " \
+                               "root=/dev/mmcblk0p2 rw rootwait"
+#define CONFIG_BOOTCOMMAND     "fatload mmc 0:1 0x71000000 dtb; " \
+                               "fatload mmc 0:1 0x72000000 zImage; " \
+                               "bootz 0x72000000 - 0x71000000"
+#endif
 
 #define CONFIG_BAUDRATE                        115200
 
index e23549d44431cf3793879aa70e37ff714046a7c5..9b0e588c6b825a51b3d0be91e0c20519358a6eda 100644 (file)
@@ -18,9 +18,6 @@
 
 #define CONFIG_SYS_TEXT_BASE           0x26f00000
 
-#define CONFIG_ARM926EJS
-#define CONFIG_AT91FAMILY
-
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_SLOW_CLOCK     32768           /* slow clock xtal */
 #define CONFIG_SYS_AT91_MAIN_CLOCK     16000000        /* main clock xtal */
index f0a6757ff66578044b84f1d628a3442bce502caf..b1d4baaff9501c3711ebddb3c7be1602c3f031a0 100644 (file)
@@ -18,7 +18,6 @@
 #define CONFIG_SYS_AT91_MAIN_CLOCK     12000000        /* 12 MHz crystal */
 
 #define CONFIG_AT91SAM9X5EK
-#define CONFIG_AT91FAMILY
 
 #define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
 #define CONFIG_SETUP_MEMORY_TAGS
@@ -30,6 +29,8 @@
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_OF_LIBFDT
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* general purpose I/O */
 #define CONFIG_ATMEL_LEGACY            /* required until (g)pio is fixed */
 #define CONFIG_AT91_GPIO
index 5228ba6ef708a073b4e43f2ca2ce15d2e00a2d31..2f5a6609b8e84ae73a3d0aa9568d73121815f5bb 100644 (file)
@@ -54,6 +54,7 @@
 #undef CONFIG_CMD_IMLS
 #define        CONFIG_CMD_USB
 #define        CONFIG_CMD_FPGA
+#define        CONFIG_CMD_FPGA_LOADMK
 #undef CONFIG_LCD
 
 /*
index 06f095cc41b5e51e8563c62d118569f92a065da1..c1eda96385188614b429707e8cd82564f5f87bba 100644 (file)
@@ -75,6 +75,7 @@
 #define CONFIG_ROOTPATH                "/romfs/brettl2"
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
+#define CONFIG_LIB_RAND
 #endif
 
 
index 9eb85ebf3df04a5eda7c4f4d65b4eff8279f7170..9e374c4024498a034e2e88b52b9bcf1c28e3f8e8 100644 (file)
@@ -89,7 +89,7 @@
 #define CONFIG_PHY_ADDR                3
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 3065d22f0bdb2fca6cc62d8db2d59dd63f598708..972eca9c1742a79bf5eeff82507db1e70b815e51 100644 (file)
@@ -87,7 +87,7 @@
 #define CONFIG_HOSTNAME                bf526-ezbrd
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 748ddb3b1570ac83032294615cb6acb602df9d1f..92c183e27c25cf47382f427c8ee7c235dd261255 100644 (file)
@@ -85,7 +85,7 @@
 #define CONFIG_HOSTNAME                bf527-ezkit
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 156eeabb06d5f7488b350f0b30ba3704f77ea020..3bc364ccfdfb32c056b133e73fb1458a1a6b92ed 100644 (file)
@@ -89,6 +89,7 @@
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:42 */
 
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 3aa3d50a89b450702fa359c0d777503851e09ed0..ba74a695f88b03d8ab6c06481e8702e452de97b7 100644 (file)
@@ -67,7 +67,7 @@
 #define CONFIG_HOSTNAME                bf537-pnav
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:24:21:18 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index e12d761a24516653e6aec7f65f033f8191e7efd3..0b723cf934e00b42d5b2dab7a21c32f81810f6dc 100644 (file)
@@ -88,7 +88,7 @@
 #define CONFIG_ROOTPATH                "/romfs"
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:42 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index e1705cadaee4f88b3292a2a297d931c97af33b2a..a302f839a1ec239b9d96e83d4a5b26374a717f91 100644 (file)
@@ -67,7 +67,7 @@
 #define CONFIG_HOSTNAME                bf537-stamp
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 384d8715adc7602f91531733498812235b3f5429..8d3ae49913ed365824d669b8ccbaad3a0f5fa42e 100644 (file)
@@ -85,7 +85,7 @@
 #define CONFIG_HOSTNAME                cm-bf527
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 67cf801a3fe43c382a9ce536d321831d60bf9bf1..47967d7120306e9ba34682d0fe70d6aa21366f8a 100644 (file)
@@ -73,7 +73,7 @@
 #define CONFIG_HOSTNAME                cm-bf537e
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 34ce75baebdf48a44d3de108f1cc22453d349ed2..88c99821b1e4d3cf662e402d655bea8df1d5e8b2 100644 (file)
@@ -71,7 +71,7 @@
 #define CONFIG_HOSTNAME                cm-bf537u
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
diff --git a/include/configs/cm_t54.h b/include/configs/cm_t54.h
new file mode 100644 (file)
index 0000000..db04095
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Config file for Compulab CM-T54 board
+ *
+ * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
+ *
+ * Author: Dmitry Lifshitz <lifshitz@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_CM_T54_H
+#define __CONFIG_CM_T54_H
+
+#define CONFIG_CM_T54
+#define CONFIG_DRAM_2G
+
+#include <configs/ti_omap5_common.h>
+
+#undef CONFIG_MISC_INIT_R
+#undef CONFIG_SPL_OS_BOOT
+
+/* Device Tree defines */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+
+/* EEPROM related defines */
+#define CONFIG_SYS_I2C_OMAP34XX
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+
+/* Enable SD/MMC CD and WP GPIOs */
+#define OMAP_HSMMC_USE_GPIO
+
+/* UART setup */
+#define CONFIG_CONS_INDEX              4
+#define CONFIG_SYS_NS16550_COM4                UART4_BASE
+#define CONFIG_BAUDRATE                        115200
+
+/* SD/MMC RAW boot */
+#undef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
+#undef CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x200 /* 0x40000 - 256 KB */
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x300 /* 384 KB */
+
+/* MMC ENV related defines */
+#undef CONFIG_ENV_OFFSET
+#undef CONFIG_ENV_SIZE
+
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         1               /* SLOT2: eMMC(1) */
+#define CONFIG_SYS_MMC_ENV_PART                0
+#define CONFIG_ENV_OFFSET              0xc0000         /* (in bytes) 768 KB */
+#define CONFIG_ENV_SIZE                        (16 << 10)      /* 16 KB */
+#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
+#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+#define CONFIG_CMD_SAVEENV
+
+/* Enhance our eMMC support / experience. */
+#define CONFIG_HSMMC2_8BIT
+#define CONFIG_SUPPORT_EMMC_BOOT
+
+/* 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       76 /* HSIC2 HUB #RESET */
+#define CONFIG_OMAP_EHCI_PHY3_RESET_GPIO       83 /* HSIC3 ETH #RESET */
+
+/* Enabled commands */
+#define CONFIG_CMD_DHCP                /* DHCP Support                 */
+#define CONFIG_CMD_NET         /* bootp, tftpboot, rarpboot    */
+#define CONFIG_CMD_PING
+
+/* USB Networking options */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+#define CONFIG_USB_ETHER_RNDIS
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_ETHER_MCS7830
+
+/* Max time to hold reset on this board, see doc/README.omap-reset-time */
+#define CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC       16296
+
+/*
+ * Miscellaneous configurable options
+ */
+#undef CONFIG_SYS_AUTOLOAD
+#undef CONFIG_SYS_PROMPT
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#undef CONFIG_BOOTCOMMAND
+#undef CONFIG_BOOTDELAY
+
+#define CONFIG_BOOTDELAY               3
+#define CONFIG_SYS_AUTOLOAD            "no"
+#define CONFIG_SYS_PROMPT              "CM-T54 # "
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       DEFAULT_LINUX_BOOT_ENV \
+       "baudrate=115200\0" \
+       "bootdelay=3\0" \
+       "autoload=no\0" \
+       "bootscr=bootscr.img\0" \
+       "fdtfile=omap5-sbc-t54.dtb\0" \
+       "kernel=zImage-cm-t54\0" \
+       "ramdisk=ramdisk-cm-t54.img\0" \
+       "console=ttyO3\0" \
+       "ramdisksize=16384\0" \
+       "mmcdev=0\0" \
+       "mmcroot=/dev/mmcblk1p2\0" \
+       "mmcargs=setenv bootargs console=${console} " \
+               "root=${mmcroot} rw rootwait\0" \
+       "ramroot=/dev/ram0\0" \
+       "ramargs=setenv bootargs console=${console} " \
+               "root=${ramroot} ramdisk_size=${ramdisksize} rw\0" \
+       "mmcloadkernel=load mmc ${mmcdev} ${loadaddr} ${kernel}\0" \
+       "mmcloadfdt=load mmc ${mmcdev} ${fdtaddr} ${fdtfile}\0" \
+       "mmcloadramdisk=load mmc ${mmcdev} ${rdaddr} ${ramdisk}\0" \
+       "mmcloadbootscript=load mmc ${mmcdev} ${loadaddr} ${bootsrc}\0" \
+       "mmcbootscript=echo Running bootscript from mmc${mmcdev}...; " \
+                       "source ${loadaddr}\0" \
+       "mmcbootlinux=echo Booting from mmc${mmcdev} ...; " \
+                       "bootz ${loadaddr} ${rdaddr} ${fdtaddr}\0" \
+       "mmcboot=if mmc dev ${mmcdev} && mmc rescan; then " \
+                       "if run mmcloadbootscript; " \
+                               "then run mmcbootscript; " \
+                       "fi; " \
+                       "if run mmcloadkernel; then " \
+                               "if run mmcloadfdt; then " \
+                                       "if run mmcloadramdisk; then " \
+                                               "run ramargs; " \
+                                               "run mmcbootlinux; " \
+                                       "fi; " \
+                                       "run mmcargs; " \
+                                       "setenv rdaddr - ; " \
+                                       "run mmcbootlinux; " \
+                               "fi; " \
+                       "fi; " \
+               "fi;\0"
+
+#define CONFIG_BOOTCOMMAND \
+       "bootcmd=run mmcboot || setenv mmcdev 1; setenv mmcroot /dev/mmcblk0p2; run mmcboot;"
+
+#endif /* __CONFIG_CM_T54_H */
index d1d732f211f18704fd96ea106e2df88cb2f52d6e..a1a63a018decc9cdae59e6d1f13a660a5685034e 100644 (file)
 #define CONFIG_CMD_ECHO
 #undef CONFIG_CMD_FLASH
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_GPIO
 #define CONFIG_CMD_IMI
 #undef CONFIG_CMD_IMLS
index db6b9be73c657bf837ee6d6f1c94c18556e8b360..12b32967b437a719ec3df28fa488a3fd18ce094b 100644 (file)
@@ -10,6 +10,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #include "../board/freescale/common/ics307_clk.h"
 
 #ifdef CONFIG_RAMBOOT_PBL
  * 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
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_PHYS 0xfef200000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS1 0xfff00000ull
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_SIZE 0x100000      /* 1M */
+#define CONFIG_SRIO_PCIE_BOOT_IMAGE_MEM_BUS2 0x3fff00000ull
 /*
  * 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_PHYS 0xfef100000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_MEM_BUS 0x3ffe00000ull
 #define CONFIG_SRIO_PCIE_BOOT_UCODE_ENV_SIZE 0x40000   /* 256K */
 
        "ramdiskfile=p4080ds/ramdisk.uboot\0"                   \
        "fdtaddr=c00000\0"                                      \
        "fdtfile=p4080ds/p4080ds.dtb\0"                         \
-       "bdev=sda3\0"                                           \
-       "c=ffe\0"
+       "bdev=sda3\0"
 
 #define CONFIG_HDBOOT                                  \
        "setenv bootargs root=/dev/$bdev rw "           \
index 959e188d9ad162a51c39668183c317dc3348ffa2..6171060e9cd41ae9396a657e03508d1df166e0ed 100644 (file)
 
 #define CONFIG_SYS_TEXT_BASE  0x73f00000
 
-#define CONFIG_AT91_LEGACY
 #define CONFIG_ATMEL_LEGACY            /* required until (g)pio is fixed */
 
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_SLOW_CLOCK      32768
 #define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
 
-#define CONFIG_AT91FAMILY
-
 #define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs      */
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
index 39f7062388970a2bc6fdd62abfdc03020ed3430c..1feaefd14e6b7998903637ec2d8178f97e170f53 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <asm/arch/hardware.h>
 
-#define CONFIG_AT91FAMILY
 #define CONFIG_ARCH_CPU_INIT
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_BOARD_EARLY_INIT_F
index 860a11dd2b3e43835bc3c43baf469434f3e6a57d..b27940995de8f5e07a39960e3f3f36d98f38315d 100644 (file)
 #define CONFIG_SPL_STACK       0x8001ff00
 #define CONFIG_SPL_TEXT_BASE   0x80000000
 #define CONFIG_SPL_MAX_FOOTPRINT       32768
+#define CONFIG_SPL_PAD_TO      32768
 #endif
 
 /* Load U-Boot Image From MMC */
index 4f2c742a5d1a5c779a2904523c7e85bb0bce1870..3f1f9f384627362ae5d9b624dacb3a9a6fdd4576 100644 (file)
@@ -55,6 +55,8 @@
 
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_PING
+
+#define CONFIG_LIB_RAND
 #endif
 
 /*
diff --git a/include/configs/draco.h b/include/configs/draco.h
new file mode 100644 (file)
index 0000000..a2438d8
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * (C) Copyright 2013 Siemens Schweiz AG
+ * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * Based on:
+ * U-Boot file:/include/configs/am335x_evm.h
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_DRACO_H
+#define __CONFIG_DRACO_H
+
+#define CONFIG_SIEMENS_DRACO
+#define MACH_TYPE_DRACO                        4314
+#define CONFIG_SIEMENS_MACH_TYPE       MACH_TYPE_DRACO
+
+#include "siemens-am33x-common.h"
+
+#define CONFIG_SYS_MPUCLK      275
+#define DDR_PLL_FREQ   303
+#undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC
+
+#define BOARD_DFU_BUTTON_GPIO  27
+#define BOARD_DFU_BUTTON_LED   64      /* red LED */
+#define BOARD_STATUS_LED       103     /* green LED */
+#define GPIO_LAN9303_NRST      88      /* GPIO2_24 = gpio88 */
+
+#undef CONFIG_DOS_PARTITION
+#undef CONFIG_CMD_FAT
+
+
+ /* Physical Memory Map */
+#define CONFIG_MAX_RAM_BANK_SIZE       (1024 << 20)    /* 1GB */
+
+/* I2C Configuration */
+#define CONFIG_SYS_I2C_SPEED           100000
+
+#define CONFIG_SYS_I2C_EEPROM_ADDR              0x50
+#define EEPROM_ADDR_DDR3 0x90
+#define EEPROM_ADDR_CHIP 0x120
+
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x300
+
+#undef CONFIG_SPL_NET_SUPPORT
+#undef CONFIG_SPL_NET_VCI_STRING
+#undef CONFIG_SPL_ETH_SUPPORT
+
+#undef CONFIG_MII
+#undef CONFIG_PHY_GIGE
+#define CONFIG_PHY_SMSC
+
+#define CONFIG_FACTORYSET
+
+/* Watchdog */
+#define CONFIG_OMAP_WATCHDOG
+
+#ifndef CONFIG_SPL_BUILD
+
+/* Default env settings */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "nand_img_size=0x400000\0" \
+       "optargs=\0" \
+       CONFIG_COMMON_ENV_SETTINGS
+
+#ifndef CONFIG_RESTORE_FLASH
+/* set to negative value for no autoboot */
+#define CONFIG_BOOTDELAY               3
+
+#define CONFIG_BOOTCOMMAND \
+"if dfubutton; then " \
+       "run dfu_start; " \
+       "reset; " \
+"fi;" \
+"run nand_boot;" \
+"reset;"
+
+
+#else
+#define CONFIG_BOOTDELAY               0
+
+#define CONFIG_BOOTCOMMAND                     \
+       "setenv autoload no; "                  \
+       "dhcp; "                                \
+       "if tftp 80000000 debrick.scr; then "   \
+               "source 80000000; "             \
+       "fi"
+#endif
+#endif /* CONFIG_SPL_BUILD */
+#endif /* ! __CONFIG_DRACO_H */
diff --git a/include/configs/duovero.h b/include/configs/duovero.h
new file mode 100644 (file)
index 0000000..e68f415
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright: 2013
+ * Gumstix, Inc - http://www.gumstix.com
+ * Maintainer: Ash Charles  <ash@gumstix.com>
+ *
+ * Configuration settings for the Gumstix DuoVero board.
+ * See omap4_common.h for OMAP4 common part
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_DUOVERO_H
+#define __CONFIG_DUOVERO_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_DUOVERO
+#define MACH_TYPE_OMAP4_DUOVERO              4097    /* Until the next sync */
+#define CONFIG_MACH_TYPE                MACH_TYPE_OMAP4_DUOVERO
+
+#include <configs/ti_omap4_common.h>
+
+#undef CONFIG_SPL_OS_BOOT
+
+#undef CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS
+#define CONFIG_SYS_AUTOMATIC_SDRAM_DETECTION
+#define CONFIG_SYS_DEFAULT_LPDDR2_TIMINGS
+
+#undef CONFIG_SYS_PROMPT
+#define CONFIG_SYS_PROMPT              "duovero # "
+
+/* 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_OMAP_EHCI_PHY1_RESET_GPIO 1
+#define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 62
+
+#define CONFIG_SYS_ENABLE_PADS_ALL
+
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_NET
+
+#define CONFIG_SMC911X
+#define CONFIG_SMC911X_32_BIT
+#define CONFIG_SMC911X_BASE            0x2C000000
+
+/* GPIO */
+#define CONFIG_CMD_GPIO
+
+/* ENV related config options */
+#define CONFIG_ENV_IS_NOWHERE
+
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
+#endif /* __CONFIG_DUOVERO_H */
index 75f7812e7d6e8aa20c0f6a8d17edd900822fc874..76e6cac77cad006f980a9905c39ce961ab011f18 100644 (file)
 #include "siemens-am33x-common.h"
 
 #define CONFIG_SYS_MPUCLK      275
-#define DXR2_IOCTRL_VAL        0x18b
 #define DDR_PLL_FREQ   303
 #undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC
 
 #define BOARD_DFU_BUTTON_GPIO  27
-#define BOARD_DFU_BUTTON_LED   64
+#define BOARD_DFU_BUTTON_LED   64      /* red LED */
+#define BOARD_STATUS_LED       103     /* green LED */
 #define GPIO_LAN9303_NRST      88      /* GPIO2_24 = gpio88 */
 
 #undef CONFIG_DOS_PARTITION
diff --git a/include/configs/embestmx6boards.h b/include/configs/embestmx6boards.h
new file mode 100644 (file)
index 0000000..eb91c44
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2014 Eukréa Electromatique
+ * Author: Eric Bénard <eric@eukrea.com>
+ *
+ * Configuration settings for the Embest RIoTboard
+ *
+ * based on mx6*sabre*.h which are :
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __RIOTBOARD_CONFIG_H
+#define __RIOTBOARD_CONFIG_H
+
+#include <asm/arch/imx-regs.h>
+#include <asm/imx-common/gpio.h>
+
+#include "mx6_common.h"
+#include <linux/sizes.h>
+
+#define CONFIG_MXC_UART_BASE           UART2_BASE
+#define CONFIG_CONSOLE_DEV             "ttymxc0"
+#define CONFIG_MMCROOT                 "/dev/mmcblk1p2"
+
+#define PHYS_SDRAM_SIZE                (1u * 1024 * 1024 * 1024)
+
+#define CONFIG_MX6
+
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_REVISION_TAG
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (10 * SZ_1M)
+
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_LATE_INIT
+#define CONFIG_MXC_GPIO
+
+#define CONFIG_MXC_UART
+
+#define CONFIG_CMD_FUSE
+#ifdef CONFIG_CMD_FUSE
+#define CONFIG_MXC_OCOTP
+#endif
+
+/* I2C Configs */
+#define CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_SYS_I2C_SPEED           100000
+
+/* USB Configs */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX6
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET       /* For OTG port */
+#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS   0
+
+/* MMC Configs */
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      0
+
+#define CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_BOUNCE_BUFFER
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_FEC_MXC
+#define CONFIG_MII
+#define IMX_FEC_BASE                   ENET_BASE_ADDR
+#define CONFIG_FEC_XCV_TYPE            RGMII
+#define CONFIG_ETHPRIME                        "FEC"
+#define CONFIG_FEC_MXC_PHYADDR         4
+
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_ATHEROS
+
+#define CONFIG_CMD_SF
+#ifdef CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_SST
+#define CONFIG_MXC_SPI
+#define CONFIG_SF_DEFAULT_BUS          0
+#define CONFIG_SF_DEFAULT_CS           (0 | (IMX_GPIO_NR(2, 30) << 8))
+#define CONFIG_SF_DEFAULT_SPEED                20000000
+#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
+#endif
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_CONS_INDEX              1
+#define CONFIG_BAUDRATE                        115200
+
+/* Command definition */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_BMODE
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_SETEXPR
+#undef CONFIG_CMD_IMLS
+
+#define CONFIG_BOOTDELAY               1
+
+#define CONFIG_LOADADDR                        0x12000000
+#define CONFIG_SYS_TEXT_BASE           0x17800000
+
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+#define EMMC_ENV \
+       "emmcdev=2\0" \
+       "update_emmc_firmware=" \
+               "if test ${ip_dyn} = yes; then " \
+                       "setenv get_cmd dhcp; " \
+               "else " \
+                       "setenv get_cmd tftp; " \
+               "fi; " \
+               "if ${get_cmd} ${update_sd_firmware_filename}; then " \
+                       "if mmc dev ${emmcdev}; then "  \
+                               "setexpr fw_sz ${filesize} / 0x200; " \
+                               "setexpr fw_sz ${fw_sz} + 1; "  \
+                               "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
+                       "fi; "  \
+               "fi\0"
+#else
+#define EMMC_ENV ""
+#endif
+
+#ifdef CONFIG_CMD_SF
+#define SF_ENV \
+       "update_spi_firmware=" \
+               "if test ${ip_dyn} = yes; then " \
+                       "setenv get_cmd dhcp; " \
+               "else " \
+                       "setenv get_cmd tftp; " \
+               "fi; " \
+               "if ${get_cmd} ${update_spi_firmware_filename}; then " \
+                       "if sf probe; then "    \
+                               "sf erase 0 0xc0000; " \
+                               "sf write ${loadaddr} 0x400 ${filesize}; " \
+                       "fi; "  \
+               "fi\0"
+#else
+#define SF_ENV ""
+#endif
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "script=boot.scr\0" \
+       "image=zImage\0" \
+       "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
+       "fdt_addr=0x18000000\0" \
+       "boot_fdt=try\0" \
+       "ip_dyn=yes\0" \
+       "console=" CONFIG_CONSOLE_DEV "\0" \
+       "fdt_high=0xffffffff\0"   \
+       "initrd_high=0xffffffff\0" \
+       "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
+       "mmcpart=1\0" \
+       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+       "update_sd_firmware=" \
+               "if test ${ip_dyn} = yes; then " \
+                       "setenv get_cmd dhcp; " \
+               "else " \
+                       "setenv get_cmd tftp; " \
+               "fi; " \
+               "if mmc dev ${mmcdev}; then "   \
+                       "if ${get_cmd} ${update_sd_firmware_filename}; then " \
+                               "setexpr fw_sz ${filesize} / 0x200; " \
+                               "setexpr fw_sz ${fw_sz} + 1; "  \
+                               "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
+                       "fi; "  \
+               "fi\0" \
+       EMMC_ENV          \
+       SF_ENV    \
+       "mmcargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "loadbootscript=" \
+               "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source\0" \
+       "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                       "if run loadfdt; then " \
+                               "bootz ${loadaddr} - ${fdt_addr}; " \
+                       "else " \
+                               "if test ${boot_fdt} = try; then " \
+                                       "bootz; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "fi; " \
+               "else " \
+                       "bootz; " \
+               "fi;\0" \
+       "netargs=setenv bootargs console=${console},${baudrate} " \
+               "root=/dev/nfs " \
+               "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+       "netboot=echo Booting from net ...; " \
+               "run netargs; " \
+               "if test ${ip_dyn} = yes; then " \
+                       "setenv get_cmd dhcp; " \
+               "else " \
+                       "setenv get_cmd tftp; " \
+               "fi; " \
+               "${get_cmd} ${image}; " \
+               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                       "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+                               "bootz ${loadaddr} - ${fdt_addr}; " \
+                       "else " \
+                               "if test ${boot_fdt} = try; then " \
+                                       "bootz; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "fi; " \
+               "else " \
+                       "bootz; " \
+               "fi;\0"
+
+#define CONFIG_BOOTCOMMAND \
+       "mmc dev ${mmcdev};" \
+       "if mmc rescan; then " \
+               "if run loadbootscript; then " \
+               "run bootscript; " \
+               "else " \
+                       "if run loadimage; then " \
+                               "run mmcboot; " \
+                       "else run netboot; " \
+                       "fi; " \
+               "fi; " \
+       "else run netboot; fi"
+
+#define CONFIG_ARP_TIMEOUT     200UL
+
+/* Miscellaneous configurable options */
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_CBSIZE              256
+
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+
+#define CONFIG_SYS_MEMTEST_START       0x10000000
+#define CONFIG_SYS_MEMTEST_END         0x10010000
+#define CONFIG_SYS_MEMTEST_SCRATCH     0x10800000
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_STACKSIZE               (128 * 1024)
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS           1
+#define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
+
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+/* FLASH and environment organization */
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_ENV_SIZE                        (8 * 1024)
+
+#if defined(CONFIG_ENV_IS_IN_MMC)
+/* RiOTboard */
+#define CONFIG_DEFAULT_FDT_FILE        "imx6s-riotboard.dtb"
+#define CONFIG_SYS_FSL_USDHC_NUM       3
+#define CONFIG_SYS_MMC_ENV_DEV         2       /* SDHC4 */
+#define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
+#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
+#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
+/* MarSBoard */
+#define CONFIG_DEFAULT_FDT_FILE        "imx6q-marsboard.dtb"
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+#define CONFIG_ENV_OFFSET              (768 * 1024)
+#define CONFIG_ENV_SECT_SIZE           (8 * 1024)
+#define CONFIG_ENV_SPI_BUS             CONFIG_SF_DEFAULT_BUS
+#define CONFIG_ENV_SPI_CS              CONFIG_SF_DEFAULT_CS
+#define CONFIG_ENV_SPI_MODE            CONFIG_SF_DEFAULT_MODE
+#define CONFIG_ENV_SPI_MAX_HZ          CONFIG_SF_DEFAULT_SPEED
+#endif
+
+#define CONFIG_OF_LIBFDT
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+#define CONFIG_CMD_CACHE
+#endif
+
+/* Framebuffer */
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_IPUV3
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+#define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
+#define CONFIG_VIDEO_BMP_RLE8
+#define CONFIG_SPLASH_SCREEN
+#define CONFIG_SPLASH_SCREEN_ALIGN
+#define CONFIG_BMP_16BPP
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VIDEO_BMP_LOGO
+#define CONFIG_IPUV3_CLK 260000000
+#define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
+
+#endif                         /* __RIOTBOARD_CONFIG_H */
index 480d8678c6f8f2756313ed86ff2271ff30441125..c81fc44b121c5e28db83dea0642b5892a7799b18 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_MACH_TYPE MACH_TYPE_ETHERNUT5
 
 /* CPU information */
-#define CONFIG_ARM926EJS
-#define CONFIG_AT91FAMILY
 #define CONFIG_DISPLAY_CPUINFO         /* Display at console. */
 #define CONFIG_ARCH_CPU_INIT
 
index 556c749f92060c1c44c2bf674c8e7f91b039c4f8..1e089a9bf7545530ed43c38ed51e79d4ed090db0 100644 (file)
@@ -53,6 +53,7 @@
 #define CONFIG_CMD_DIAG
 #define CONFIG_CMD_ECHO                /* echo arguments               */
 #define CONFIG_CMD_FPGA                /* FPGA configuration Support   */
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_IRQ
 #define CONFIG_CMD_ITEST       /* Integer (and string) test    */
 #define CONFIG_CMD_LOADB       /* loadb                        */
index 8be98983c9f6a6667b58d1c18fedbeee273fbcfc..66194a8ff0e173e2a9e64caae7abeda42f6a996d 100644 (file)
@@ -51,6 +51,7 @@
 #define CONFIG_CMD_DIAG
 #define CONFIG_CMD_ECHO                /* echo arguments               */
 #define CONFIG_CMD_FPGA                /* FPGA configuration Support   */
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_IRQ
 #define CONFIG_CMD_ITEST       /* Integer (and string) test    */
 #define CONFIG_CMD_LOADB       /* loadb                        */
index 33983907f2283bb876a9781bbe8fd9a9beb63e0a..cd554957dd89148dbe33c2b38160bbd9714c1656 100644 (file)
@@ -24,6 +24,8 @@
 #define CONFIG_SERIAL_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
 
 #define CONFIG_POWER_I2C
 #define CONFIG_POWER_PFUZE100
 #define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
+#define CONFIG_POWER_LTC3676
+#define CONFIG_POWER_LTC3676_I2C_ADDR  0x3c
 
 /* Various command support */
 #include <config_cmd_default.h>
 #define CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP
 #define CONFIG_USB_HUB_MIN_POWER_ON_DELAY 1200
 
+/* Framebuffer and LCD */
+#define CONFIG_VIDEO
+#define CONFIG_VIDEO_IPUV3
+#define CONFIG_CFB_CONSOLE
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+#define CONFIG_VIDEO_BMP_RLE8
+#define CONFIG_SPLASH_SCREEN
+#define CONFIG_BMP_16BPP
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_IPUV3_CLK          260000000
+#define CONFIG_CMD_HDMIDETECT
+#define CONFIG_CONSOLE_MUX
+#define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
+
 /* serial console (ttymxc1,115200) */
 #define CONFIG_CONS_INDEX              1
 #define CONFIG_BAUDRATE                115200
index a6202cfab446ca30b806f153860fe0f7b92728cb..da1c837cc7a6efdd28b1f75355b2c6697ac95de9 100644 (file)
@@ -13,6 +13,7 @@
 #define CONFIG_SYS_THUMB_BUILD
 
 #define CONFIG_SYS_NO_FLASH
+#define CONFIG_SYS_GENERIC_BOARD
 
 #define CONFIG_OF_BOARD_SETUP
 #define CONFIG_FIT
index 28955233449f3e6ecf4d8892892f2353f557d490..34dbdce1a6c36e62e7b444c3c15f5bc042a95896 100644 (file)
@@ -27,6 +27,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (2 * SZ_1M)
 
index 613f7e1a2ef6a4caaf2fa16000421d1346ff7736..c1b3b633e962bdc0649f9223b0f514947054ec32 100644 (file)
 #define CONFIG_ENV_FLAGS_LIST_STATIC "ethaddr:mo,eth1addr:mo"
 
 #define CONFIG_BAUDRATE                115200
-#define CONFIG_SYS_HZ                  1000
 
 /* Initial Memory map for Linux*/
 #define CONFIG_SYS_BOOTMAPSZ           (256 << 20)
index f36c2a3504e442f718bba1843bcaaf79d8b6fca1..79c4736bc5df949fc39cb9f667eddd11ccd59744 100644 (file)
@@ -62,7 +62,8 @@
  * Commands additional to the ones defined in amcc-common.h
  */
 #define CONFIG_CMD_CACHE
-#define CONFIG_CMD_FPGAD
+#define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #undef CONFIG_CMD_EEPROM
 
 /*
index 0efa2b7b9f262f69d83e2268842f26d04819f497..3767502faa59dfa4c18d234a10d38e0d2f24cad5 100644 (file)
@@ -77,6 +77,7 @@
 #define DM9000_IO              CONFIG_DM9000_BASE
 #define DM9000_DATA            (CONFIG_DM9000_BASE + 2)
 
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 9bb8f342b60318d4e7362aeb5329418fa320f724..dde73298fc4ba9a569a789ffabc6d85b136f16c1 100644 (file)
 #define CONFIG_CMD_EEPROM
 
 /* U-Boot general configuration */
+#define CONFIG_SYS_GENERIC_BOARD
 #define CONFIG_SYS_PROMPT               "K2HK EVM # "
 #define CONFIG_SYS_CBSIZE               1024
 #define CONFIG_SYS_PBSIZE              2048
index 418e3d129818f48b6dc8a9f935ef607967ebe6f4..efd96352eca45f93f3ba951a319b8a6c9e4106b3 100644 (file)
@@ -85,11 +85,7 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_ADDR_MAP
 #define CONFIG_SYS_NUM_ADDR_MAP                64      /* number of TLB1 entries */
 
-#define CONFIG_POST CONFIG_SYS_POST_MEMORY     /* test POST memory test */
-#define CONFIG_SYS_MEMTEST_START       0x00100000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x00800000
-#define CONFIG_SYS_ALT_MEMTEST
-#define CONFIG_PANIC_HANG      /* do not reset board on panic */
+#define CONFIG_POST CONFIG_SYS_POST_MEM_REGIONS        /* POST memory regions test */
 
 /*
  *  Config the L3 Cache as L3 SRAM
@@ -143,10 +139,12 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_KM_PNVRAM       0x80000
 /* physical RAM MTD size [hex] */
 #define CONFIG_KM_PHRAM                0x100000
-/* resereved pram area at the end of memroy [hex] */
-#define CONFIG_KM_RESERVED_PRAM        0x0
-/* enable protected RAM */
-#define CONFIG_PRAM            0
+/* reserved pram area at the end of memory [hex]
+ * u-boot reserves some memory for the MP boot page */
+#define CONFIG_KM_RESERVED_PRAM        0x1000
+/* set the default PRAM value to at least PNVRAM + PHRAM when pram env variable
+ * is not valid yet, which is the case for when u-boot copies itself to RAM */
+#define CONFIG_PRAM            ((CONFIG_KM_PNVRAM + CONFIG_KM_PHRAM)>>10)
 
 #define CONFIG_KM_CRAMFS_ADDR  0x2000000
 #define CONFIG_KM_KERNEL_ADDR  0x1000000       /* max kernel size 15.5Mbytes */
@@ -383,6 +381,7 @@ int get_scl(void);
  */
 #define CONFIG_CMD_PCI
 #define CONFIG_CMD_NET
+#define CONFIG_CMD_ERRATA
 
 /* we don't need flash support */
 #define CONFIG_SYS_NO_FLASH
index 90e2d7a030d176cdee1f16b4065a3ba64e5b7f88..6795f28a11ed61461a7c04ef15206f514394dcc8 100644 (file)
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_NFS
 #define CONFIG_CMD_BOOTZ
-
-#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
-#define        CONFIG_CMD_FLASH
-#define CONFIG_SYS_TEXT_BASE   0x00000000
-#else
-/* SPI flash boot is default. */
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_FAT
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
+
+#define CONFIG_FAT_WRITE
+#define CONFIG_EXT4_WRITE
+
 #define CONFIG_SYS_TEXT_BASE   0xE6304000
-#endif
+#define CONFIG_SYS_THUMB_BUILD
+#define CONFIG_SYS_GENERIC_BOARD
+
+/* Support File sytems */
+#define CONFIG_DOS_PARTITION
+#define CONFIG_SUPPORT_VFAT
+
 
 #define        CONFIG_CMDLINE_TAG
 #define        CONFIG_SETUP_MEMORY_TAGS
@@ -61,8 +67,6 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_USE_ARCH_MEMSET
-#define CONFIG_USE_ARCH_MEMCPY
 #define CONFIG_TMU_TIMER
 
 /* STACK */
@@ -86,7 +90,6 @@
 /* SCIF */
 #define CONFIG_SCIF_CONSOLE
 #define CONFIG_CONS_SCIF0
-#define SCIF0_BASE             0xe6e60000
 #undef CONFIG_SYS_CONSOLE_INFO_QUIET
 #undef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
 #undef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
 #define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
 
 /* FLASH */
-#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_16BIT
-#define        CONFIG_FLASH_CFI_DRIVER
-#define        CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
-#define        CONFIG_FLASH_SHOW_PROGRESS      45
-#define CONFIG_SYS_FLASH_BASE          0x00000000
-#define        CONFIG_SYS_FLASH_SIZE           0x04000000      /* 64 MB */
-#define CONFIG_SYS_MAX_FLASH_SECT      1024
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-#define CONFIG_SYS_FLASH_BANKS_LIST    { (CONFIG_SYS_FLASH_BASE) }
-#define        CONFIG_SYS_FLASH_BANKS_SIZES    { (CONFIG_SYS_FLASH_SIZE) }
-#define CONFIG_SYS_FLASH_ERASE_TOUT    3000
-#define CONFIG_SYS_FLASH_WRITE_TOUT    3000
-#define CONFIG_SYS_FLASH_LOCK_TOUT     3000
-#define CONFIG_SYS_FLASH_UNLOCK_TOUT   3000
-/* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + \
-                                CONFIG_SYS_MONITOR_LEN)
-
-#else /* CONFIG_SYS_USE_BOOT_NORFLASH */
-
 #define CONFIG_SYS_NO_FLASH
 #define CONFIG_SPI
 #define CONFIG_SH_QSPI
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_ADDR        0xC0000
 
-#endif /* CONFIG_SYS_USE_BOOT_NORFLASH */
-
 /* Common ENV setting */
 #define CONFIG_ENV_OVERWRITE
 #define CONFIG_ENV_SECT_SIZE   (256 * 1024)
 #define CONFIG_SH_ETHER_ALIGNE_SIZE 64
 
 /* Board Clock */
-#define        CONFIG_SYS_CLK_FREQ     10000000
-#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ
+#define RMOBILE_XTAL_CLK       20000000u
+#define CONFIG_SYS_CLK_FREQ    RMOBILE_XTAL_CLK
+#define CONFIG_SH_TMU_CLK_FREQ (CONFIG_SYS_CLK_FREQ / 2)
 #define CONFIG_SH_SCIF_CLK_FREQ        14745600
 #define CONFIG_SYS_TMU_CLK_DIV 4
 
 
 #define CONFIG_SYS_I2C_POWERIC_ADDR 0x58 /* da9063 */
 
+/* USB */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_RMOBILE
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        3
+#define CONFIG_USB_STORAGE
+
 #endif /* __KOELSCH_H */
index 0f631c0f605a1278c840a4fa09ffbe27fa2e35cd..0860434f22999c4ba36bea800513c090ffc89e32 100644 (file)
 
 #undef CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_SYS_MMC_ENV_DEV         1
+#define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x40000 /* TODO: Adresse definieren */
 #define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
index b420e45e63cd1dff711bd00105b678df5719dd20..f39a788e91e9164c94bcef39790cdbd29d3b5c82 100644 (file)
@@ -16,8 +16,6 @@
 #define CONFIG_RMOBILE
 #define CONFIG_RMOBILE_BOARD_STRING "Lager"
 #define CONFIG_SH_GPIO_PFC
-#define MACH_TYPE_LAGER                4538
-#define CONFIG_MACH_TYPE       MACH_TYPE_LAGER
 
 #include <asm/arch/rmobile.h>
 
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_NFS
 #define CONFIG_CMD_BOOTZ
-
-#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
-#define CONFIG_CMD_FLASH
-#define CONFIG_SYS_TEXT_BASE   0x00000000
-#else
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_FAT
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
+
+#define CONFIG_FAT_WRITE
+#define CONFIG_EXT4_WRITE
+
 #define CONFIG_SYS_TEXT_BASE   0xE8080000
-#endif
+#define CONFIG_SYS_THUMB_BUILD
+#define CONFIG_SYS_GENERIC_BOARD
+
+/* Support File sytems */
+#define CONFIG_DOS_PARTITION
+#define CONFIG_SUPPORT_VFAT
 
 #define        CONFIG_CMDLINE_TAG
 #define        CONFIG_SETUP_MEMORY_TAGS
@@ -64,8 +68,6 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_USE_ARCH_MEMSET
-#define CONFIG_USE_ARCH_MEMCPY
 #define CONFIG_TMU_TIMER
 
 /* STACK */
@@ -89,7 +91,6 @@
 /* SCIF */
 #define CONFIG_SCIF_CONSOLE
 #define CONFIG_CONS_SCIF0
-#define SCIF0_BASE             0xe6e60000
 #undef CONFIG_SYS_CONSOLE_INFO_QUIET
 #undef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
 #undef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
 #define CONFIG_SYS_MALLOC_LEN          (1 * 1024 * 1024)
 #define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
 
-#if defined(CONFIG_SYS_USE_BOOT_NORFLASH)
-/* USE NOR FLASH */
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_16BIT
-#define        CONFIG_FLASH_CFI_DRIVER
-#define        CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
-#define        CONFIG_FLASH_SHOW_PROGRESS      45
-#define CONFIG_SYS_FLASH_BASE          0x00000000
-#define        CONFIG_SYS_FLASH_SIZE           0x04000000      /* 64 MB */
-#define CONFIG_SYS_MAX_FLASH_SECT      1024
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-#define CONFIG_SYS_FLASH_BANKS_LIST    { (CONFIG_SYS_FLASH_BASE) }
-#define        CONFIG_SYS_FLASH_BANKS_SIZES    { (CONFIG_SYS_FLASH_SIZE) }
-#define CONFIG_SYS_FLASH_ERASE_TOUT    3000
-#define CONFIG_SYS_FLASH_WRITE_TOUT    3000
-#define CONFIG_SYS_FLASH_LOCK_TOUT     3000
-#define CONFIG_SYS_FLASH_UNLOCK_TOUT   3000
-
-/* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + \
-                                CONFIG_SYS_MONITOR_LEN)
-
-#else /* CONFIG_SYS_USE_BOOT_NORFLASH */
-
 /* USE SPI */
 #define CONFIG_SPI
 #define CONFIG_SPI_FLASH_BAR
 /* ENV setting */
 #define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_ADDR        0xC0000
-#endif
 
 /* Common ENV setting */
 #define CONFIG_ENV_OVERWRITE
 #define CONFIG_SYS_I2C_POWERIC_ADDR 0x58 /* da9063 */
 
 /* Board Clock */
-#define CONFIG_BASE_CLK_FREQ   20000000u
-#define CONFIG_SH_TMU_CLK_FREQ (CONFIG_BASE_CLK_FREQ / 2) /* EXT / 2 */
-#define CONFIG_PLL1_CLK_FREQ   (CONFIG_BASE_CLK_FREQ * 156 / 2)
+#define RMOBILE_XTAL_CLK       20000000u
+#define CONFIG_SYS_CLK_FREQ    RMOBILE_XTAL_CLK
+#define CONFIG_SH_TMU_CLK_FREQ (CONFIG_SYS_CLK_FREQ / 2) /* EXT / 2 */
+#define CONFIG_PLL1_CLK_FREQ   (CONFIG_SYS_CLK_FREQ * 156 / 2)
 #define CONFIG_PLL1_DIV2_CLK_FREQ      (CONFIG_PLL1_CLK_FREQ / 2)
 #define CONFIG_MP_CLK_FREQ     (CONFIG_PLL1_DIV2_CLK_FREQ / 15)
 #define CONFIG_HP_CLK_FREQ     (CONFIG_PLL1_CLK_FREQ / 12)
 
 #define CONFIG_SYS_TMU_CLK_DIV 4
 
+/* USB */
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_RMOBILE
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        4
+#define CONFIG_USB_STORAGE
+
 #endif /* __LAGER_H */
index 96a889fe87e36bf74abd9aafe55cff7807471dd4..f5f49613c89365fc6c35a55db8fa3cb1d858099f 100644 (file)
@@ -66,6 +66,7 @@
 #define CONFIG_CMD_SF
 #define CONFIG_CMD_SPI
 #define CONFIG_CMD_USB
+#define CONFIG_CMD_FS_GENERIC
 
 #define CONFIG_DOS_PARTITION
 #define CONFIG_EFI_PARTITION
 #define CONFIG_LOADADDR                0x00800000
 #define CONFIG_BOOTCOMMAND     "run bootcmd_${bootsource}"
 #define CONFIG_BOOTARGS                "console=ttyS0,115200 root=/dev/sda2"
+
+#if defined(CONFIG_LSXHL)
+#define CONFIG_FDTFILE "kirkwood-lsxhl.dtb"
+#elif defined(CONFIG_LSCHLV2)
+#define CONFIG_FDTFILE "kirkwood-lschlv2.dtb"
+#else
+#error "Unsupported board"
+#endif
+
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "bootsource=hdd\0"                                              \
+       "bootsource=legacy\0"                                           \
        "hdpart=0:1\0"                                                  \
-       "bootcmd_net=bootp 0x00100000 uImage "                          \
-               "&& tftpboot 0x00800000 uInitrd "                       \
+       "kernel_addr=0x00800000\0"                                      \
+       "ramdisk_addr=0x01000000\0"                                     \
+       "fdt_addr=0x01ff0000\0"                                         \
+       "bootcmd_legacy=ide reset "                                     \
+               "&& load ide ${hdpart} 0x00100000 /uImage.buffalo "     \
+               "&& load ide ${hdpart} 0x00800000 /initrd.buffalo "     \
                "&& bootm 0x00100000 0x00800000\0"                      \
+       "bootcmd_net=bootp ${kernel_addr} uImage "                      \
+               "&& tftpboot ${ramdisk_addr} uInitrd "                  \
+               "&& tftpboot ${fdt_addr} " CONFIG_FDTFILE " "           \
+               "&& bootm ${kernel_addr} ${ramdisk_addr} ${fdt_addr}\0" \
        "bootcmd_hdd=ide reset "                                        \
-               "&& ext2load ide ${hdpart} 0x00100000 /uImage "         \
-               "&& ext2load ide ${hdpart} 0x00800000 /uInitrd "        \
-               "&& bootm 0x00100000 0x00800000\0"                      \
+               "&& load ide ${hdpart} ${kernel_addr} /uImage "         \
+               "&& load ide ${hdpart} ${ramdisk_addr} /uInitrd "       \
+               "&& load ide ${hdpart} ${fdt_addr} "                    \
+                       "/" CONFIG_FDTFILE " "                          \
+               "&& bootm ${kernel_addr} ${ramdisk_addr} ${fdt_addr}\0" \
        "bootcmd_usb=usb start "                                        \
-               "&& fatload usb 0:1 0x00100000 /uImage "                \
-               "&& fatload usb 0:1 0x00800000 /uInitrd "               \
-               "&& bootm 0x00100000 0x00800000\0"                      \
+               "&& load usb 0:1 ${kernel_addr} /uImage "               \
+               "&& load usb 0:1 ${ramdisk_addr} /uInitrd "             \
+               "&& load usb 0:1 ${fdt_addr} "                          \
+                       "/" CONFIG_FDTFILE " "                          \
+               "&& bootm ${kernel_addr} ${ramdisk_addr} ${fdt_addr}\0" \
        "bootcmd_rescue=run config_nc_dhcp; run nc\0"                   \
        "eraseenv=sf probe 0 "                                          \
                "&& sf erase " __stringify(CONFIG_ENV_OFFSET)           \
 #undef CONFIG_SYS_IDE_MAXDEVICE
 #define CONFIG_SYS_IDE_MAXDEVICE       1
 #define CONFIG_SYS_ATA_IDE0_OFFSET     MV_SATA_PORT0_OFFSET
+#define CONFIG_SYS_64BIT_LBA
 #endif
 
 #endif /* _CONFIG_LSXL_H */
index bb1fa44d80dc780658a7204ce9ca084d44440a1c..3e387c42ddc7f455571cae7e0cdeec0fef846999 100644 (file)
@@ -7,7 +7,6 @@
 #ifndef __CONFIGS_M28EVK_H__
 #define __CONFIGS_M28EVK_H__
 
-
 /* System configurations */
 #define CONFIG_MX28                            /* i.MX28 SoC */
 #define MACH_TYPE_M28EVK       3613
index e7afd07b94124c7b87eea8ccf4cff0f94d4171e7..01e395a49d6eb2096b18067973d1eddf3b41b778 100644 (file)
@@ -49,6 +49,7 @@
  * FPGA
  */
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_FPGA
 #define CONFIG_FPGA_XILINX
 #define CONFIG_FPGA_SPARTAN3
index 797a637bf712eaa3eec9f621ccee09d7d255033f..134d6804bcfb5ce2a28a469d8243f82223c03469 100644 (file)
@@ -23,6 +23,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
 
index 042cdd03235e00705084b7da0fb2ce411d4d9db0..fb2072d2f0f49b7fb2a7ee79e725a0dd20db0187 100644 (file)
@@ -23,6 +23,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_OF_LIBFDT
 
 /* Size of malloc() pool */
index c7f54d4e8cb7a0339f7bdf450cc55bf185740d4a..a74508c5e81849055d20399f1887b7ddd4f73a42 100644 (file)
@@ -22,6 +22,8 @@
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
 
index a04e7c7a3ef94922fe3ed30db6d282fa0d0ed98b..3da0ef4bd0b9bc43d6e88fd6e8460ba3a653f8a8 100644 (file)
@@ -23,6 +23,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
 
index 7a2c172d4a84c5c982eb1712a7537e7ec1367e73..e59a3b4b058768d1f641ba4e73f2f85a9e26c575 100644 (file)
@@ -25,6 +25,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * SZ_1M)
 
index 5d02d23ec7129000f32a944e5a58ad8a64c52359..0fa6573c7f15189820067fae83339c4e9b411608 100644 (file)
@@ -47,6 +47,7 @@
 #define CONFIG_VIDEO_BMP_LOGO
 #define CONFIG_IPUV3_CLK 260000000
 #define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
 
 #define CONFIG_CMD_PCI
 #ifdef CONFIG_CMD_PCI
index 1876dbf35addc2ab43daa78530107456342e35ea..3d05a647d94df151c7e203a69d5a52b5c56861d1 100644 (file)
@@ -10,6 +10,7 @@
 #define __CONFIG_H
 
 #include <asm/arch/imx-regs.h>
+#include <asm/imx-common/gpio.h>
 #include <linux/sizes.h>
 #include "mx6_common.h"
 
 #define CONFIG_CMD_CACHE
 #endif
 
+#define CONFIG_CMD_SF
+#ifdef CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_MXC_SPI
+#define CONFIG_SF_DEFAULT_BUS          0
+#define CONFIG_SF_DEFAULT_CS           (0 | (IMX_GPIO_NR(4, 11) << 8))
+#define CONFIG_SF_DEFAULT_SPEED                20000000
+#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
+#endif
+
 #endif                         /* __CONFIG_H */
index ba55177e72b843ff94638626d0aa01d10f9eef32..8bce28fe2048f9abeb1b0de154871ee790404f87 100644 (file)
@@ -40,6 +40,7 @@
 /*
  * CPU specifics
  */
+#define CONFIG_SYS_GENERIC_BOARD
 
 /* MXS uses FDT */
 #define CONFIG_OF_LIBFDT
index f7e7315a9b695ed8a378f5efcf3b329f5e450cfb..b2b17ce969d177b3eb3b5f893002bb21117899a1 100644 (file)
@@ -24,6 +24,7 @@
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
+#define CONFIG_SYS_GENERIC_BOARD
 
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
 #define CONFIG_CMD_HDMIDETECT
 #define CONFIG_CONSOLE_MUX
 #define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
index fae0e6ffcb4a2ad0a795a4068db12f62607237b9..0a7df60f2815276aec98c113a1ae8a8a99355009 100644 (file)
 #define CONFIG_TWL4030_USB             1
 #define CONFIG_USB_ETHER
 #define CONFIG_USB_ETHER_RNDIS
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW    0
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_G_DNL_VENDOR_NUM                0x0451
+#define CONFIG_G_DNL_PRODUCT_NUM       0xd022
+#define CONFIG_G_DNL_MANUFACTURER      "TI"
+#define CONFIG_CMD_FASTBOOT
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_USB_FASTBOOT_BUF_ADDR   CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE   0x07000000
 
 /* USB EHCI */
 #define CONFIG_CMD_USB
                "if test $beaglerev = C4; then " \
                        "setenv fdtfile omap3-beagle.dtb; fi; " \
                "if test $beaglerev = xMAB; then " \
-                       "setenv fdtfile omap3-beagle-xm.dtb; fi; " \
+                       "setenv fdtfile omap3-beagle-xm-ab.dtb; fi; " \
                "if test $beaglerev = xMC; then " \
                        "setenv fdtfile omap3-beagle-xm.dtb; fi; " \
                "if test $fdtfile = undefined; then " \
                        "echo WARNING: Could not determine device tree to use; fi; \0" \
+       "validatefdt=" \
+               "if test $beaglerev = xMAB; then " \
+                       "if test ! -e mmc ${bootpart} ${bootdir}/${fdtfile}; then " \
+                               "setenv fdtfile omap3-beagle-xm.dtb; " \
+                       "fi; " \
+               "fi; \0" \
        "bootenv=uEnv.txt\0" \
        "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
        "importbootenv=echo Importing environment from mmc ...; " \
                "rootfstype=${ramrootfstype}\0" \
        "loadramdisk=load mmc ${bootpart} ${rdaddr} ${bootdir}/${ramdisk}\0" \
        "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-       "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+       "loadfdt=run validatefdt; load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
        "mmcboot=echo Booting from mmc ...; " \
                "run mmcargs; " \
                "bootm ${loadaddr}\0" \
index 8d11010f84596e66e05e4b36ee29442747b7ac37..a3dcb152d3a82fd32481abe4ab47963b8d13789b 100644 (file)
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_OMAP24_I2C_SPEED    100000
index 007e27f9f1185df13ee15b18b51624499536c01d..7b97be9ace18df830fd022f86195c86711fb9b9c 100644 (file)
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/*
- * High Level Configuration Options
- */
-#define CONFIG_OMAP                            /* in a TI OMAP core */
-#define CONFIG_OMAP34XX                                /* which is a 34XX */
-#define CONFIG_OMAP3_OVERO                     /* working with overo */
-#define CONFIG_OMAP_GPIO
-#define CONFIG_OMAP_COMMON
-
-#define CONFIG_SDRC                            /* The chip has SDRC controller */
+#define CONFIG_NR_DRAM_BANKS   2       /* CS1 may or may not be populated */
+#define CONFIG_NAND
 
-#include <asm/arch/cpu.h>                      /* get chip and board defs */
-#include <asm/arch/omap3.h>
+#include <configs/ti_omap3_common.h>
 
-/*
- * Display CPU and Board information
- */
+/* Display CPU and Board information */
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
-/* Clock Defines */
-#define V_OSCK                 26000000        /* Clock output from T2 */
-#define V_SCLK                 (V_OSCK >> 1)
-
+/* call misc_init_r */
 #define CONFIG_MISC_INIT_R
 
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
+/* pass the revision tag */
 #define CONFIG_REVISION_TAG
 
-#define CONFIG_OF_LIBFDT
+/* override size of malloc() pool */
+#undef CONFIG_SYS_MALLOC_LEN
+#define CONFIG_ENV_SIZE                (128 << 10)     /* 128 KiB sector */
+/* Shift 128 << 15 provides 4 MiB heap to support UBI commands.
+ * Shift 128 << 10 provides 128 KiB heap for limited-memory devices. */
+#define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + (128 << 15))
 
-/*
- * Size of malloc() pool
- */
-#define CONFIG_ENV_SIZE                (128 << 10)     /* 128 KiB */
-                                               /* Sector */
-#define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + (128 << 10))
-
-/*
- * Hardware drivers
- */
-
-/*
- * NS16550 Configuration
- */
-#define V_NS16550_CLK          48000000        /* 48MHz (APLL96/2) */
-
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    (-4)
-#define CONFIG_SYS_NS16550_CLK         V_NS16550_CLK
+/* I2C Support */
+#define CONFIG_SYS_I2C_OMAP34XX
 
-/*
- * select serial console configuration
- */
-#define CONFIG_CONS_INDEX              3
-#define CONFIG_SYS_NS16550_COM3                OMAP34XX_UART3
-#define CONFIG_SERIAL3                 3
+/* TWL4030 LED */
+#define CONFIG_TWL4030_LED
 
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_BAUDRATE                        115200
-#define CONFIG_SYS_BAUDRATE_TABLE      {4800, 9600, 19200, 38400, 57600, \
-                                       115200}
-#define CONFIG_GENERIC_MMC
-#define CONFIG_MMC
-#define CONFIG_OMAP_HSMMC
-#define CONFIG_DOS_PARTITION
+/* Initialize GPIOs by default */
+#define CONFIG_OMAP3_GPIO_2    /* GPIO32..63 is in GPIO Bank 2 */
+#define CONFIG_OMAP3_GPIO_3    /* GPIO64..95 is in GPIO Bank 3 */
+#define CONFIG_OMAP3_GPIO_4    /* GPIO96..127 is in GPIO Bank 4 */
+#define CONFIG_OMAP3_GPIO_5    /* GPIO128..159 is in GPIO Bank 5 */
+#define CONFIG_OMAP3_GPIO_6    /* GPIO160..191 is in GPIO Bank 6 */
 
 /* commands to include */
-#include <config_cmd_default.h>
-
 #define CONFIG_CMD_CACHE
-#define CONFIG_CMD_EXT2                /* EXT2 Support                 */
-#define CONFIG_CMD_FAT         /* FAT support                  */
-#define CONFIG_CMD_JFFS2       /* JFFS2 Support                */
-
-#define CONFIG_CMD_I2C         /* I2C serial bus support       */
-#define CONFIG_CMD_MMC         /* MMC support                  */
-#define CONFIG_CMD_NAND                /* NAND support                 */
-
-#undef CONFIG_CMD_FLASH                /* flinfo, erase, protect       */
 #undef CONFIG_CMD_FPGA         /* FPGA configuration Support   */
 #undef CONFIG_CMD_IMI          /* iminfo                       */
-#undef CONFIG_CMD_IMLS         /* List all found images        */
 #undef CONFIG_CMD_NFS          /* NFS support                  */
-#define CONFIG_CMD_NET         /* bootp, tftpboot, rarpboot    */
 
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_OMAP24_I2C_SPEED    100000
-#define CONFIG_SYS_OMAP24_I2C_SLAVE    1
-#define CONFIG_SYS_I2C_OMAP34XX
+#ifdef CONFIG_NAND
+#define CONFIG_CMD_UBI         /* UBI-formated MTD partition support */
+#define CONFIG_CMD_UBIFS       /* Read-only UBI volume operations */
 
-/*
- * TWL4030
- */
-#define CONFIG_TWL4030_POWER
-#define CONFIG_TWL4030_LED
+#define CONFIG_RBTREE          /* required by CONFIG_CMD_UBI */
+#define CONFIG_LZO             /* required by CONFIG_CMD_UBIFS */
 
-/*
- * Board NAND Info.
+#define CONFIG_MTD_PARTITIONS  /* required for UBI partition support */
+
+/* NAND block size is 128 KiB.  Synchronize these values with
+ * overo_nand_partitions in mach-omap2/board-overo.c in Linux:
+ *  xloader              4 * NAND_BLOCK_SIZE = 512 KiB
+ *  uboot               14 * NAND_BLOCK_SIZE = 1792 KiB
+ *  uboot environtment   2 * NAND_BLOCK_SIZE = 256 KiB
+ *  linux               64 * NAND_BLOCK_SIZE = 8 MiB
+ *  rootfs              remainder
  */
+#define MTDIDS_DEFAULT "nand0=omap2-nand.0"
+#define MTDPARTS_DEFAULT "mtdparts=omap2-nand.0:"      \
+       "512k(xloader),"                                \
+       "1792k(u-boot),"                                \
+       "256k(environ),"                                \
+       "8m(linux),"                                    \
+       "-(rootfs)"
+#else /* CONFIG_NAND */
+#define MTDPARTS_DEFAULT
+#endif /* CONFIG_NAND */
+
+/* Board NAND Info. */
 #define CONFIG_SYS_NAND_QUIET_TEST
-#define CONFIG_NAND_OMAP_GPMC
 #define CONFIG_SYS_NAND_ADDR           NAND_BASE       /* physical address */
                                                        /* to access nand */
-#define CONFIG_SYS_NAND_BASE           NAND_BASE       /* physical address */
-                                                       /* to access nand */
-                                                       /* at CS0 */
-#define CONFIG_SYS_MAX_NAND_DEVICE     1       /* Max number of NAND */
-                                               /* devices */
-#define CONFIG_JFFS2_NAND
-/* nand device jffs2 lives on */
-#define CONFIG_JFFS2_DEV               "nand0"
-/* start of jffs2 partition */
-#define CONFIG_JFFS2_PART_OFFSET       0x680000
-#define CONFIG_JFFS2_PART_SIZE         0xf980000       /* size of jffs2 */
-                                                       /* partition */
-
 /* Environment information */
-#define CONFIG_BOOTDELAY               5
-
 #define CONFIG_EXTRA_ENV_SETTINGS \
-       "loadaddr=0x82000000\0" \
+       DEFAULT_LINUX_BOOT_ENV \
+       "fdtfile=overo.dtb\0" \
+       "bootdir=/boot\0" \
+       "bootfile=zImage\0" \
+       "usbtty=cdc_acm\0" \
        "console=ttyO2,115200n8\0" \
-       "mpurate=500\0" \
+       "mpurate=auto\0" \
        "optargs=\0" \
        "vram=12M\0" \
        "dvimode=1024x768MR-16@60\0" \
        "mmcrootfstype=ext3 rootwait\0" \
        "nandroot=ubi0:rootfs ubi.mtd=4\0" \
        "nandrootfstype=ubifs\0" \
+       "mtdparts=" MTDPARTS_DEFAULT "\0" \
        "mmcargs=setenv bootargs console=${console} " \
                "${optargs} " \
                "mpurate=${mpurate} " \
                "omapdss.def_disp=${defaultdisplay} " \
                "root=${nandroot} " \
                "rootfstype=${nandrootfstype}\0" \
-       "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \
-       "bootscript=echo Running bootscript from mmc ...; " \
+       "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+       "bootscript=echo Running boot script from mmc ...; " \
                "source ${loadaddr}\0" \
-       "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
-       "mmcboot=echo Booting from mmc ...; " \
+       "loadbootenv=load mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
+       "importbootenv=echo Importing environment from mmc ...; " \
+               "env import -t ${loadaddr} ${filesize}\0" \
+       "loaduimage=load mmc ${mmcdev} ${loadaddr} uImage\0" \
+       "mmcboot=echo Booting from mmc...; " \
                "run mmcargs; " \
                "bootm ${loadaddr}\0" \
+       "loadzimage=load mmc ${mmcdev}:2 ${loadaddr} ${bootdir}/${bootfile}\0" \
+       "loadfdt=load mmc ${mmcdev}:2 ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+       "mmcbootfdt=echo Booting with DT from mmc ...; " \
+               "run mmcargs; " \
+               "bootz ${loadaddr} - ${fdtaddr}\0" \
        "nandboot=echo Booting from nand ...; " \
                "run nandargs; " \
-               "nand read ${loadaddr} 280000 400000; " \
+               "nand read ${loadaddr} linux; " \
                "bootm ${loadaddr}\0" \
 
 #define CONFIG_BOOTCOMMAND \
        "mmc dev ${mmcdev}; if mmc rescan; then " \
                "if run loadbootscript; then " \
                        "run bootscript; " \
-               "else " \
-                       "if run loaduimage; then " \
-                               "run mmcboot; " \
-                       "else run nandboot; " \
-                       "fi; " \
-               "fi; " \
-       "else run nandboot; fi"
+               "fi;" \
+               "if run loadbootenv; then " \
+                       "echo Loaded environment from ${bootenv};" \
+                       "run importbootenv;" \
+               "fi;" \
+               "if test -n $uenvcmd; then " \
+                       "echo Running uenvcmd ...;" \
+                       "run uenvcmd;" \
+               "fi;" \
+               "if run loaduimage; then " \
+                       "run mmcboot;" \
+               "fi;" \
+               "if run loadzimage; then " \
+                       "if test -n $fdtfile; then " \
+                               "if run loadfdt; then " \
+                                       "run mmcbootfdt;" \
+                               "fi;" \
+                       "fi;" \
+               "fi;" \
+       "fi;" \
+       "run nandboot; " \
 
-#define CONFIG_AUTO_COMPLETE   1
 /*
  * Miscellaneous configurable options
  */
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
+#undef CONFIG_SYS_PROMPT
 #define CONFIG_SYS_PROMPT              "Overo # "
-#define CONFIG_SYS_CBSIZE              512     /* Console I/O Buffer Size */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
-                                       sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS             16      /* max number of command */
-                                               /* args */
-/* Boot Argument Buffer Size */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
+
 /* memtest works on */
 #define CONFIG_SYS_MEMTEST_START       (OMAP34XX_SDRC_CS0)
 #define CONFIG_SYS_MEMTEST_END         (OMAP34XX_SDRC_CS0 + \
                                        0x01F00000) /* 31MB */
 
-#define CONFIG_SYS_LOAD_ADDR           (OMAP34XX_SDRC_CS0) /* default load */
-                                                               /* address */
-/*
- * OMAP3 has 12 GP timers, they can be driven by the system clock
- * (12/13/16.8/19.2/38.4MHz) or by 32KHz clock. We use 13MHz (V_SCLK).
- * This rate is divided by a local divisor.
- */
-#define CONFIG_SYS_TIMERBASE           OMAP34XX_GPT2
-#define CONFIG_SYS_PTV                 2       /* Divisor: 2^(PTV+1) => 8 */
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   2       /* CS1 may or may not be populated */
-#define PHYS_SDRAM_1           OMAP34XX_SDRC_CS0
-#define PHYS_SDRAM_2           OMAP34XX_SDRC_CS1
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-/* **** PISMO SUPPORT *** */
-
+/* FLASH and environment organization */
 /* Configure the PISMO */
 #define PISMO1_NAND_SIZE               GPMC_SIZE_128M
 #define PISMO1_ONEN_SIZE               GPMC_SIZE_128M
 
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 2 sectors */
-
-#if defined(CONFIG_CMD_NAND)
+#if defined(CONFIG_NAND)
 #define CONFIG_SYS_FLASH_BASE          PISMO1_NAND_BASE
 #endif
 
 #define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
 #define CONFIG_ENV_ADDR                        SMNAND_ENV_OFFSET
 
+/* Configure SMSC9211 ethernet */
 #if defined(CONFIG_CMD_NET)
-/*----------------------------------------------------------------------------
- * SMSC9211 Ethernet from SMSC9118 family
- *----------------------------------------------------------------------------
- */
-
 #define CONFIG_SMC911X
 #define CONFIG_SMC911X_32_BIT
 #define CONFIG_SMC911X_BASE            0x2C000000
-
 #endif /* (CONFIG_CMD_NET) */
 
-/*
- * Leave it at 0x80008000 to allow booting new u-boot.bin with X-loader
- * and older u-boot.bin with the new U-Boot SPL.
- */
-#define CONFIG_SYS_TEXT_BASE           0x80008000
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
+/* Initial RAM setup */
 #define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
 #define CONFIG_SYS_INIT_RAM_SIZE       0x800
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
 #define CONFIG_SYS_CACHELINE_SIZE      64
 
-/* Defines for SPL */
-#define CONFIG_SPL
-#define CONFIG_SPL_FRAMEWORK
-#define CONFIG_SPL_NAND_SIMPLE
-#define CONFIG_SPL_TEXT_BASE           0x40200800
-#define CONFIG_SPL_MAX_SIZE            (54 * 1024)     /* 8 KB for stack */
-#define CONFIG_SPL_STACK               LOW_LEVEL_SRAM_STACK
-
-/* move malloc and bss high to prevent clashing with the main image */
-#define CONFIG_SYS_SPL_MALLOC_START    0x87000000
-#define CONFIG_SYS_SPL_MALLOC_SIZE     0x80000
-#define CONFIG_SPL_BSS_START_ADDR      0x87080000      /* end of minimum RAM */
-#define CONFIG_SPL_BSS_MAX_SIZE                0x80000         /* 512 KB */
-
-#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0x300 /* address 0x60000 */
-#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x200 /* 256 KB */
-#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION   1
-#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME       "u-boot.img"
-
-#define CONFIG_SPL_BOARD_INIT
-#define CONFIG_SPL_LIBCOMMON_SUPPORT
-#define CONFIG_SPL_LIBDISK_SUPPORT
-#define CONFIG_SPL_I2C_SUPPORT
-#define CONFIG_SPL_LIBGENERIC_SUPPORT
-#define CONFIG_SPL_MMC_SUPPORT
-#define CONFIG_SPL_FAT_SUPPORT
-#define CONFIG_SPL_SERIAL_SUPPORT
-#define CONFIG_SPL_NAND_SUPPORT
-#define CONFIG_SPL_NAND_BASE
-#define CONFIG_SPL_NAND_DRIVERS
-#define CONFIG_SPL_NAND_ECC
-#define CONFIG_SPL_GPIO_SUPPORT
-#define CONFIG_SPL_POWER_SUPPORT
-#define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/omap-common/u-boot-spl.lds"
-
 /* NAND boot config */
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 #define CONFIG_SYS_NAND_PAGE_COUNT     64
index e745945ba73af7d9da9350fdc23f7060344609b6..185df775aa00e38f381046bede4e0773ef4d5218 100644 (file)
@@ -10,6 +10,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_36BIT
 #define CONFIG_PHYS_64BIT
 #endif
 #endif
 #endif
 
+#if defined(CONFIG_P1020RDB_PD)
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        1
+#endif
+
 #define CONFIG_MMC
 
 #ifdef CONFIG_MMC
diff --git a/include/configs/pepper.h b/include/configs/pepper.h
new file mode 100644 (file)
index 0000000..cc153ab
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2013 Gumstix, Inc. - http://www.gumstix.com/
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_PEPPER_H
+#define __CONFIG_PEPPER_H
+
+#define CONFIG_MMC
+#include <configs/ti_am335x_common.h>
+
+#undef CONFIG_BOARD_LATE_INIT
+#undef CONFIG_SPL_OS_BOOT
+
+/* Clock defines */
+#define V_OSCK                         24000000  /* Clock output from T2 */
+#define V_SCLK                         (V_OSCK)
+
+#undef CONFIG_SYS_PROMPT
+#define CONFIG_SYS_PROMPT              "pepper# "
+
+/* Mach type */
+#define MACH_TYPE_PEPPER               4207    /* Until the next sync */
+#define CONFIG_MACH_TYPE               MACH_TYPE_PEPPER
+
+#define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
+#define CONFIG_ENV_IS_NOWHERE
+/* Display cpuinfo */
+#define CONFIG_DISPLAY_CPUINFO
+
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       DEFAULT_LINUX_BOOT_ENV \
+       "bootdir=/boot\0" \
+       "bootfile=zImage\0" \
+       "fdtfile=am335x-pepper.dtb\0" \
+       "console=ttyO0,115200n8\0" \
+       "optargs=\0" \
+       "mmcdev=0\0" \
+       "mmcroot=/dev/mmcblk0p2 rw\0" \
+       "mmcrootfstype=ext3 rootwait\0" \
+       "mmcargs=setenv bootargs console=${console} " \
+               "${optargs} " \
+               "root=${mmcroot} " \
+               "rootfstype=${mmcrootfstype}\0" \
+       "bootenv=uEnv.txt\0" \
+       "loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
+       "importbootenv=echo Importing environment from mmc ...; " \
+               "env import -t ${loadaddr} ${filesize}\0" \
+       "mmcload=load mmc ${mmcdev}:2 ${loadaddr} ${bootdir}/${bootfile}; " \
+               "load mmc ${mmcdev}:2 ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+       "loaduimage=fatload mmc ${mmcdev}:1 ${loadaddr} uImage\0" \
+       "uimageboot=echo Booting from mmc${mmcdev} ...; " \
+               "run mmcargs; " \
+               "bootm ${loadaddr}\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "bootz ${loadaddr} - ${fdtaddr}\0" \
+       "ubiboot=echo Booting from nand (ubifs) ...; " \
+               "run ubiargs; run ubiload; " \
+               "bootz ${loadaddr} - ${fdtaddr}\0" \
+
+#define CONFIG_BOOTCOMMAND \
+       "mmc dev ${mmcdev}; if mmc rescan; then " \
+               "echo SD/MMC found on device ${mmcdev};" \
+               "if run loadbootenv; then " \
+                       "echo Loaded environment from ${bootenv};" \
+                       "run importbootenv;" \
+               "fi;" \
+               "if test -n $uenvcmd; then " \
+                       "echo Running uenvcmd ...;" \
+                       "run uenvcmd;" \
+               "fi;" \
+               "if run mmcload; then " \
+                       "run mmcboot;" \
+               "fi;" \
+               "if run loaduimage; then " \
+                       "run uimageboot;" \
+               "fi;" \
+       "fi;" \
+
+/* Serial console configuration */
+#define CONFIG_CONS_INDEX              1 /* UART0 */
+#define CONFIG_SERIAL1                 1
+#define CONFIG_SYS_NS16550_COM1                0x44e09000
+
+/* Ethernet support */
+#define CONFIG_PHY_GIGE
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_ADDR                        0
+#define CONFIG_PHY_MICREL
+#define CONFIG_PHY_MICREL_KSZ9021
+#define CONFIG_PHY_RESET_DELAY 1000
+
+/* SPL */
+#define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/am33xx/u-boot-spl.lds"
+
+#endif /* __CONFIG_PEPPER_H */
index 6276d43395ea0534f42f67d34af0d7475d435662..d75d5629639e71756c263d813534f410081bdabf 100644 (file)
@@ -21,7 +21,7 @@
 #include "siemens-am33x-common.h"
 
 #define CONFIG_SYS_MPUCLK      720
-#define DXR2_IOCTRL_VAL                0x18b
+#define DDR_IOCTRL_VAL         0x18b
 #define DDR_PLL_FREQ           266
 
 #define BOARD_DFU_BUTTON_GPIO  59
index 10e014d33c467c31908000c539f54acfa843fb19..763a47ac3dc445566d214ddb69de70928818d5ea 100644 (file)
@@ -19,6 +19,7 @@
 
 #undef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE   0xf01000 /* 15 MB */
+#define CONFIG_SYS_GENERIC_BOARD
 
 #define CONFIG_SYS_MPC85XX_NO_RESETVEC
 
index 91cc7d8e5839a4b823265539da94276945ef2a0e..f72ab0bad01c74da3b8d67a96b1b75f07d3aa7fe 100644 (file)
 /* ARM asynchronous clock */
 #define CONFIG_SYS_AT91_SLOW_CLOCK      32768
 #define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
-#define CONFIG_SYS_HZ                  1000
 
-#define CONFIG_AT91FAMILY
 #define CONFIG_ARCH_CPU_INIT
+
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_SKIP_LOWLEVEL_INIT
+#endif
+
 #define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_DISPLAY_CPUINFO
 
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_OF_LIBFDT               /* Device Tree support */
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* general purpose I/O */
 #define CONFIG_AT91_GPIO
 
 #define CONFIG_SYS_SDRAM_BASE           ATMEL_BASE_DDRCS
 #define CONFIG_SYS_SDRAM_SIZE          0x10000000
 
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_INIT_SP_ADDR                0x310000
+#else
 #define CONFIG_SYS_INIT_SP_ADDR \
        (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE)
+#endif
 
 /* NAND flash */
 #define CONFIG_CMD_NAND
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
+/* SPL */
+#define CONFIG_SPL
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_TEXT_BASE           0x300000
+#define CONFIG_SPL_MAX_SIZE            0x10000
+#define CONFIG_SPL_BSS_START_ADDR      0x20000000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x80000
+#define CONFIG_SYS_SPL_MALLOC_START    0x20080000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x80000
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+
+#define CONFIG_SPL_BOARD_INIT
+#define CONFIG_SYS_MONITOR_LEN         (512 << 10)
+
+#ifdef CONFIG_SYS_USE_MMC
+#define CONFIG_SPL_LDSCRIPT            arch/arm/cpu/at91-common/u-boot-spl.lds
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     0x400
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x200
+#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION   1
+#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME       "u-boot.img"
+#define CONFIG_SPL_FAT_SUPPORT
+#define CONFIG_SPL_LIBDISK_SUPPORT
+
+#elif CONFIG_SYS_USE_NANDFLASH
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SPL_NAND_DRIVERS
+#define CONFIG_SPL_NAND_BASE
+#define CONFIG_SYS_NAND_U_BOOT_OFFS    0x40000
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+#define CONFIG_SYS_NAND_PAGE_SIZE      0x800
+#define CONFIG_SYS_NAND_PAGE_COUNT     64
+#define CONFIG_SYS_NAND_OOBSIZE                64
+#define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
+
+#endif
+
 #endif
index 516be85fe08d9a1af60624826465a237448c5d6b..da2718044cf18b9f11641f3a695203411c7205fc 100644 (file)
@@ -21,7 +21,6 @@
 #define CONFIG_SYS_AT91_SLOW_CLOCK      32768
 #define CONFIG_SYS_AT91_MAIN_CLOCK      12000000 /* from 12 MHz crystal */
 
-#define CONFIG_AT91FAMILY
 #define CONFIG_ARCH_CPU_INIT
 
 #ifndef CONFIG_SPL_BUILD
@@ -34,6 +33,8 @@
 #define CONFIG_CMD_BOOTZ
 #define CONFIG_OF_LIBFDT               /* Device Tree support */
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* general purpose I/O */
 #define CONFIG_AT91_GPIO
 
 #define CONFIG_SYS_NAND_OOBSIZE                64
 #define CONFIG_SYS_NAND_BLOCK_SIZE     0x20000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS  0x0
+#define CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER
 
 #elif CONFIG_SYS_USE_SERIALFLASH
 #define CONFIG_SPL_SPI_SUPPORT
index fa62cb6cd5b26798aa0e135458a62b77cc832c15..6bb2546eda5664a82289e5879a7068e3254363a6 100644 (file)
 #define CONFIG_CROS_EC
 #define CONFIG_CMD_CROS_EC
 #define CONFIG_CROS_EC_SANDBOX
-#define CONFIG_KEYBOARD
-#define CONFIG_CROS_EC_KEYB
 #define CONFIG_ARCH_EARLY_INIT_R
 #define CONFIG_BOARD_LATE_INIT
 
 #define CONFIG_SOUND_SANDBOX
 #define CONFIG_CMD_SOUND
 
+#ifndef SANDBOX_NO_SDL
 #define CONFIG_SANDBOX_SDL
+#endif
+
+/* LCD and keyboard require SDL support */
+#ifdef CONFIG_SANDBOX_SDL
 #define CONFIG_LCD
 #define CONFIG_VIDEO_SANDBOX_SDL
 #define CONFIG_CMD_BMP
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV
 #define LCD_BPP                        LCD_COLOR16
 
+#define CONFIG_CROS_EC_KEYB
+#define CONFIG_KEYBOARD
+
 #define CONFIG_EXTRA_ENV_SETTINGS      "stdin=serial,cros-ec-keyb\0" \
                                        "stdout=serial,lcd\0" \
                                        "stderr=serial,lcd\0"
+#else
+
+#define CONFIG_EXTRA_ENV_SETTINGS      "stdin=serial\0" \
+                                       "stdout=serial,lcd\0" \
+                                       "stderr=serial,lcd\0"
+#endif
 
 #define CONFIG_GZIP_COMPRESSED
 #define CONFIG_BZIP2
index 721c4e6badc815df941c2840606c1ccb8d1b4fc1..53816a60257a706497f53eef11feb815ea94e716 100644 (file)
@@ -46,6 +46,8 @@
 #define CONFIG_CMD_ECHO
 #define CONFIG_CMD_CACHE
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #define CONFIG_ENV_VARS_UBOOT_CONFIG
 #ifndef CONFIG_SPL_BUILD
 #define CONFIG_ROOTPATH                "/opt/eldk"
 
 #define CONFIG_COMMON_ENV_SETTINGS \
        "verify=no \0" \
-       "project_dir=systemone\0" \
+       "project_dir=targetdir\0" \
        "upgrade_available=0\0" \
        "altbootcmd=run bootcmd\0" \
        "bootlimit=3\0" \
        "dfu_args=run bootargs_defaults;" \
                "setenv bootargs ${bootargs} ;" \
                "mtdparts default; " \
-               "dfu 0 nand 0; \0" \
+               "led dfu 1;" \
+               "led stat 0;" \
+               "dfu 0 nand 0;" \
+               "led dfu 0;" \
+               "led stat 1;\0" \
                "dfu_alt_info=" DFU_ALT_INFO_NAND "\0" \
        "net_args=run bootargs_defaults;" \
                "mtdparts default;" \
diff --git a/include/configs/sun7i.h b/include/configs/sun7i.h
new file mode 100644 (file)
index 0000000..9b693f7
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * (C) Copyright 2012-2013 Henrik Nordstrom <henrik@henriknordstrom.net>
+ * (C) Copyright 2013 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * Configuration settings for the Allwinner A20 (sun7i) CPU
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * A20 specific configuration
+ */
+#define CONFIG_SUN7I           /* sun7i SoC generation */
+
+#define CONFIG_SYS_PROMPT              "sun7i# "
+
+/*
+ * Include common sunxi configuration where most the settings are
+ */
+#include <configs/sunxi-common.h>
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
new file mode 100644 (file)
index 0000000..5d72d62
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * (C) Copyright 2012-2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Configuration settings for the Allwinner sunxi series of boards.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_COMMON_CONFIG_H
+#define _SUNXI_COMMON_CONFIG_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_SUNXI           /* sunxi family */
+#ifdef CONFIG_SPL_BUILD
+#ifndef CONFIG_SPL_FEL
+#define CONFIG_SYS_THUMB_BUILD /* Thumbs mode to save space in SPL */
+#endif
+#endif
+
+#include <asm/arch/cpu.h>      /* get chip and board defs */
+
+#define CONFIG_SYS_TEXT_BASE           0x4a000000
+
+/*
+ * Display CPU information
+ */
+#define CONFIG_DISPLAY_CPUINFO
+
+/* Serial & console */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+/* ns16550 reg in the low bits of cpu reg */
+#define CONFIG_SYS_NS16550_REG_SIZE    -4
+#define CONFIG_SYS_NS16550_CLK         24000000
+#define CONFIG_SYS_NS16550_COM1                SUNXI_UART0_BASE
+#define CONFIG_SYS_NS16550_COM2                SUNXI_UART1_BASE
+#define CONFIG_SYS_NS16550_COM3                SUNXI_UART2_BASE
+#define CONFIG_SYS_NS16550_COM4                SUNXI_UART3_BASE
+
+/* DRAM Base */
+#define CONFIG_SYS_SDRAM_BASE          0x40000000
+#define CONFIG_SYS_INIT_RAM_ADDR       0x0
+#define CONFIG_SYS_INIT_RAM_SIZE       0x8000  /* 32 KiB */
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#define CONFIG_NR_DRAM_BANKS           1
+#define PHYS_SDRAM_0                   CONFIG_SYS_SDRAM_BASE
+#define PHYS_SDRAM_0_SIZE              0x80000000 /* 2 GiB */
+
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_SETEXPR
+
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_INITRD_TAG
+
+/* mmc config */
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_MMC_SUNXI
+#define CONFIG_MMC_SUNXI_SLOT          0
+#define CONFIG_MMC_SUNXI_USE_DMA
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         0       /* first detected MMC controller */
+
+/* 4MB of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + (4 << 20))
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_CMD_ECHO
+#define CONFIG_SYS_CBSIZE      256     /* Console I/O Buffer Size */
+#define CONFIG_SYS_PBSIZE      384     /* Print Buffer Size */
+#define CONFIG_SYS_MAXARGS     16      /* max number of command args */
+#define CONFIG_SYS_GENERIC_BOARD
+
+/* Boot Argument Buffer Size */
+#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
+
+#define CONFIG_SYS_LOAD_ADDR           0x48000000 /* default load address */
+
+/* standalone support */
+#define CONFIG_STANDALONE_LOAD_ADDR    0x48000000
+
+#define CONFIG_SYS_HZ                  1000
+
+/* baudrate */
+#define CONFIG_BAUDRATE                        115200
+
+/* The stack sizes are set up in start.S using the settings below */
+#define CONFIG_STACKSIZE               (256 << 10)     /* 256 KiB */
+
+/* FLASH and environment organization */
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_SYS_MONITOR_LEN         (512 << 10)     /* 512 KiB */
+#define CONFIG_IDENT_STRING            " Allwinner Technology"
+
+#define CONFIG_ENV_OFFSET              (544 << 10) /* (8 + 24 + 512) KiB */
+#define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "bootm_size=0x10000000\0"
+
+#define CONFIG_SYS_BOOT_GET_CMDLINE
+
+#include <config_cmd_default.h>
+
+#define CONFIG_FAT_WRITE       /* enable write access */
+
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+
+#ifdef CONFIG_SPL_FEL
+
+#define CONFIG_SPL
+#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds"
+#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/armv7/sunxi"
+#define CONFIG_SPL_TEXT_BASE           0x2000
+#define CONFIG_SPL_MAX_SIZE            0x4000          /* 16 KiB */
+
+#else /* CONFIG_SPL */
+
+#define CONFIG_SPL_BSS_START_ADDR      0x4ff80000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x80000         /* 512 KiB */
+
+#define CONFIG_SPL_TEXT_BASE           0x20            /* sram start+header */
+#define CONFIG_SPL_MAX_SIZE            0x5fe0          /* 24KB on sun4i/sun7i */
+
+#define CONFIG_SPL_LIBDISK_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+
+#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds"
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        80      /* 40KiB */
+#define CONFIG_SPL_PAD_TO              32768           /* decimal for 'dd' */
+
+#endif /* CONFIG_SPL */
+
+/* end of 32 KiB in sram */
+#define LOW_LEVEL_SRAM_STACK           0x00008000 /* End of sram */
+#define CONFIG_SPL_STACK               LOW_LEVEL_SRAM_STACK
+#define CONFIG_SYS_SPL_MALLOC_START    0x4ff00000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x00080000      /* 512 KiB */
+
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
+
+#define CONFIG_CONS_INDEX              1       /* UART0 */
+
+#ifdef CONFIG_SUNXI_GMAC
+#define CONFIG_DESIGNWARE_ETH          /* GMAC can use designware driver */
+#define CONFIG_DW_AUTONEG
+#define CONFIG_PHY_GIGE                        /* GMAC can use gigabit PHY     */
+#define CONFIG_PHY_ADDR                1
+#define CONFIG_MII                     /* MII PHY management           */
+#define CONFIG_PHYLIB
+#endif
+
+#ifdef CONFIG_CMD_NET
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_DNS
+#define CONFIG_NETCONSOLE
+#define CONFIG_BOOTP_DNS2
+#define CONFIG_BOOTP_SEND_HOSTNAME
+#endif
+
+#if !defined CONFIG_ENV_IS_IN_MMC && \
+    !defined CONFIG_ENV_IS_IN_NAND && \
+    !defined CONFIG_ENV_IS_IN_FAT && \
+    !defined CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_IS_NOWHERE
+#endif
+
+#ifndef CONFIG_SPL_BUILD
+#include <config_distro_defaults.h>
+#endif
+
+#endif /* _SUNXI_COMMON_CONFIG_H */
index 36bc5294ef4df7b107e521100e5721f32db99f70..75609b9f61782cb15a3059d655c0ecf9068edcae 100644 (file)
@@ -10,6 +10,8 @@
 #ifndef __T4QDS_H
 #define __T4QDS_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_CMD_REGINFO
 
 /* High Level Configuration Options */
index 1ff34d517d82ff11c5678a8ae0294c8a10595540..a77ba697d0fbe83b0dfd636dd325508afc54e5f6 100644 (file)
@@ -68,7 +68,7 @@
 #define CONFIG_HOSTNAME                tcm-bf518
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 370d97ffe03f4fd4ec6fd6ef676d2eb016db2f48..c4c1c579bc102b0815aa5fe99c7500aa7f26e5ef 100644 (file)
@@ -73,7 +73,7 @@
 #define CONFIG_HOSTNAME                tcm-bf537
 /* Uncomment next line to use fixed MAC address */
 /* #define CONFIG_ETHADDR      02:80:ad:20:31:e8 */
-
+#define CONFIG_LIB_RAND
 
 /*
  * Flash Settings
index 77fbfb641006c649e04c6bfebe3ef109d558d17b..44b37183b673fbd1f74feb3ede1284a7d1d60bc2 100644 (file)
        "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
                "env import -t ${loadaddr} ${filesize}\0" \
        "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+       "loaduimage=load mmc ${mmcdev} ${loadaddr} uImage\0" \
        "mmcboot=echo Booting from mmc${mmcdev} ...; " \
                "run mmcargs; " \
                "bootz ${loadaddr} - ${fdtaddr}\0" \
+       "uimageboot=echo Booting from mmc${mmcdev} ...; " \
+               "run mmcargs; " \
+               "bootm ${loadaddr}\0" \
        "findfdt="\
                "if test $board_name = sdp4430; then " \
                        "setenv fdtfile omap4-sdp.dtb; fi; " \
                        "setenv fdtfile omap4-panda-a4.dtb; fi;" \
                "if test $board_name = panda-es; then " \
                        "setenv fdtfile omap4-panda-es.dtb; fi;" \
+               "if test $board_name = duovero; then " \
+                       "setenv fdtfile omap4-duovero.dtb; fi;" \
                "if test $fdtfile = undefined; then " \
                        "echo WARNING: Could not determine device tree to use; fi; \0" \
        "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
                        "run loadfdt;" \
                        "run mmcboot; " \
                "fi; " \
+               "if run loaduimage; then " \
+                       "run uimageboot;" \
+               "fi; " \
        "fi"
 
 /*
index 8fb87ac4411549855e56c1344b7a1aaf3040d2ff..e550afad4fa13b680500c75d2921bd319d4432a8 100644 (file)
 #elif defined(CONFIG_EMMC_BOOT)
 #undef CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_SYS_MMC_ENV_DEV         1
+#define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x40000 /* TODO: Adresse definieren */
 #define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
index a0306de6a337b63f55213567f1ca0225e09cc521..700e9c1b23c85de05ff73a510da31cd65a309d72 100644 (file)
@@ -26,6 +26,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (2 * SZ_1M)
 
index 14c6e675c1b8429b463d2b0672683a378f22581f..bef821f3371a2227dd505ba59e72c895cfd3d6af 100644 (file)
@@ -13,8 +13,6 @@
 
 /*--------------------------------------------------------------------------*/
 
-#define CONFIG_ARM926EJS               /* This is an ARM926EJS Core    */
-#define CONFIG_AT91FAMILY
 #define CONFIG_AT91SAM9263             /* It's an Atmel AT91SAM9263 SoC*/
 #define CONFIG_VL_MA2SC                        /* on an VL_MA2SC Board */
 #define CONFIG_ARCH_CPU_INIT
index 6c74c72952586f3e9264591c41af34d4bfa8e1e1..7d96908f0e4bba1801a0c97d3e867d0290113c17 100644 (file)
@@ -26,6 +26,8 @@
 #define CONFIG_INITRD_TAG
 #define CONFIG_REVISION_TAG
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * SZ_1M)
 
 #define CONFIG_LOADADDR                        0x12000000
 #define CONFIG_SYS_TEXT_BASE           0x17800000
 
+/* I2C Configs */
+#define CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_SYS_I2C_SPEED           100000
+
 /* MMC Configuration */
 #define CONFIG_FSL_ESDHC
 #define CONFIG_FSL_USDHC
 #define CONFIG_VIDEO_LOGO
 #define CONFIG_VIDEO_BMP_LOGO
 #define CONFIG_IPUV3_CLK 260000000
+#define CONFIG_CMD_HDMIDETECT
 #define CONFIG_IMX_HDMI
+#define CONFIG_IMX_VIDEO_SKIP
 
 #if defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
 #define CONFIG_DEFAULT_FDT_FILE                "imx6dl-wandboard.dtb"
                        "fi; "  \
                "fi\0" \
        "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
+               "root=${mmcroot}; run videoargs\0" \
+       "videoargs=" \
+               "setenv nextcon 0; " \
+               "if hdmidet; then " \
+                       "setenv bootargs ${bootargs} " \
+                               "video=mxcfb${nextcon}:dev=hdmi,1280x720M@60," \
+                                       "if=RGB24; " \
+                       "setenv fbmen fbmem=28M; " \
+                       "setexpr nextcon ${nextcon} + 1; " \
+               "else " \
+                       "echo - no HDMI monitor;" \
+               "fi; " \
+               "i2c dev 1; " \
+               "if i2c probe 0x10; then " \
+                       "setenv bootargs ${bootargs} " \
+                               "video=mxcfb${nextcon}:dev=lcd,800x480@60," \
+                                       "if=RGB666; " \
+                       "if test 0 -eq ${nextcon}; then " \
+                               "setenv fbmem fbmem=10M; " \
+                       "else " \
+                               "setenv fbmem ${fbmem},10M; " \
+                       "fi; " \
+                       "setexpr nextcon ${nextcon} + 1; " \
+               "else " \
+                       "echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';" \
+               "fi; " \
+               "setenv bootargs ${bootargs} ${fbmem}\0" \
        "loadbootscript=" \
                "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
        "bootscript=echo Running bootscript from mmc ...; " \
index 7405419f0e270a9ad6295cc8d9b6df6c6d40e327..eae85d62c9a491195c948bf742357edd7173de54 100644 (file)
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_ENV
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
 #define CONFIG_CMD_GPIO
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_MEMORY
index 731e69b5fd89dcb2aa275f38f04d7e87dcfa1def..dc5bc22ce9714dc09cc5757e74506cdf0b585bf2 100644 (file)
 # define CONFIG_SDHCI
 # define CONFIG_ZYNQ_SDHCI
 # define CONFIG_CMD_MMC
-# define CONFIG_CMD_FAT
+#endif
+
+#ifdef CONFIG_ZYNQ_USB
+# define CONFIG_USB_EHCI
+# define CONFIG_CMD_USB
+# define CONFIG_USB_STORAGE
+# define CONFIG_USB_EHCI_ZYNQ
+# define CONFIG_USB_ULPI_VIEWPORT
+# define CONFIG_USB_ULPI
+# define CONFIG_EHCI_IS_TDI
+# define CONFIG_USB_MAX_CONTROLLER_COUNT       2
+#endif
+
+#if defined(CONFIG_ZYNQ_SDHCI) || defined(CONFIG_ZYNQ_USB)
 # define CONFIG_SUPPORT_VFAT
+# define CONFIG_CMD_FAT
 # define CONFIG_CMD_EXT2
+# define CONFIG_FAT_WRITE
 # define CONFIG_DOS_PARTITION
+# define CONFIG_CMD_EXT4
+# define CONFIG_CMD_EXT4_WRITE
 #endif
 
 #define CONFIG_SYS_I2C_ZYNQ
                "bootm ${load_addr}\0" \
        "jtagboot=echo TFTPing FIT to RAM... && " \
                "tftpboot ${load_addr} ${fit_image} && " \
-               "bootm ${load_addr}\0"
+               "bootm ${load_addr}\0" \
+       "usbboot=if usb start; then " \
+                       "echo Copying FIT from USB to RAM... && " \
+                       "fatload usb 0 ${load_addr} ${fit_image} && " \
+                       "bootm ${load_addr}\0" \
+               "fi\0"
+
 #define CONFIG_BOOTCOMMAND             "run $modeboot"
 #define CONFIG_BOOTDELAY               3 /* -1 to Disable autoboot */
 #define CONFIG_SYS_LOAD_ADDR           0 /* default? */
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CLOCKS
 #define CONFIG_CMD_CLK
-#define CONFIG_SYS_MAXARGS             15 /* max number of command args */
+#define CONFIG_SYS_MAXARGS             32 /* max number of command args */
 #define CONFIG_SYS_CBSIZE              256 /* Console I/O Buffer Size */
 #define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
                                        sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_FPGA_XILINX
 #define CONFIG_FPGA_ZYNQPL
 #define CONFIG_CMD_FPGA
+#define CONFIG_CMD_FPGA_LOADMK
+#define CONFIG_CMD_FPGA_LOADP
+#define CONFIG_CMD_FPGA_LOADBP
+#define CONFIG_CMD_FPGA_LOADFS
 
 /* Open Firmware flat tree */
 #define CONFIG_OF_LIBFDT
 #define CONFIG_RSA
 
 /* Extend size of kernel image for uncompression */
-#define CONFIG_SYS_BOOTM_LEN   (20 * 1024 * 1024)
+#define CONFIG_SYS_BOOTM_LEN   (60 * 1024 * 1024)
 
 /* Boot FreeBSD/vxWorks from an ELF image */
 #if defined(CONFIG_ZYNQ_BOOT_FREEBSD)
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
 #define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_BOARD_INIT
 
 #define CONFIG_SPL_LDSCRIPT    "arch/arm/cpu/armv7/zynq/u-boot-spl.lds"
 
-/* Disable dcache for SPL just for sure */
-#ifdef CONFIG_SPL_BUILD
-#define CONFIG_SYS_DCACHE_OFF
-#undef CONFIG_FPGA
-#undef CONFIG_OF_CONTROL
-#endif
-
 /* MMC support */
 #ifdef CONFIG_ZYNQ_SDHCI0
 #define CONFIG_SPL_MMC_SUPPORT
 #define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION    1
 #define CONFIG_SPL_LIBDISK_SUPPORT
 #define CONFIG_SPL_FAT_SUPPORT
-#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME     "u-boot.img"
+#if defined(CONFIG_OF_CONTROL) && defined(CONFIG_OF_SEPARATE)
+# define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME     "u-boot-dtb.img"
+#else
+# define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME     "u-boot.img"
+#endif
+#endif
+
+/* Disable dcache for SPL just for sure */
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_DCACHE_OFF
+#undef CONFIG_FPGA
+#undef CONFIG_OF_CONTROL
 #endif
 
 /* Address in RAM where the parameters must be copied by SPL. */
index de0e24129c2afcf8a7c30d6d2930720fbd895fde..291a5fef51dd154b0b324458ec61bd5407642fcd 100644 (file)
@@ -19,6 +19,7 @@
 #define CONFIG_SYS_NO_FLASH
 
 #define CONFIG_ZYNQ_SDHCI0
+#define CONFIG_ZYNQ_USB
 #define CONFIG_ZYNQ_I2C0
 #define CONFIG_ZYNQ_EEPROM
 #define CONFIG_ZYNQ_BOOT_FREEBSD
index 274140cb3faaaf023df1f1ee1eab55bb30a6f962..ce17d4060cca190b29c1776b153d503c101404a3 100644 (file)
@@ -18,6 +18,7 @@
 
 #define CONFIG_SYS_NO_FLASH
 
+#define CONFIG_ZYNQ_USB
 #define CONFIG_ZYNQ_SDHCI0
 #define CONFIG_ZYNQ_BOOT_FREEBSD
 #define CONFIG_DEFAULT_DEVICE_TREE     zynq-zed
index 240916854a12a7ce8745b0ef843f6c0e4d03a325..26ffbc8e81d2d4ac82620b179a84f5077cf01b7b 100644 (file)
@@ -43,6 +43,9 @@ struct mmc_internal_data {
        unsigned int lba_size;
        unsigned int lba_blk_size;
 
+       /* eMMC HW partition access */
+       int hw_partition;
+
        /* FAT/EXT */
        unsigned int dev;
        unsigned int part;
@@ -100,6 +103,7 @@ struct dfu_entity {
                        u64 offset, void *buf, long *len);
 
        int (*flush_medium)(struct dfu_entity *dfu);
+       unsigned int (*poll_timeout)(struct dfu_entity *dfu);
 
        struct list_head list;
 
index aacb147de24bae919c42efdac08dd6c4bf3b8b15..fbbb002b16735725e9440cd2a7920139076e9beb 100644 (file)
@@ -133,6 +133,7 @@ int ext4fs_open(const char *filename);
 int ext4fs_read(char *buf, unsigned len);
 int ext4fs_mount(unsigned part_length);
 void ext4fs_close(void);
+void ext4fs_reinit_global(void);
 int ext4fs_ls(const char *dirname);
 int ext4fs_exists(const char *filename);
 void ext4fs_free_node(struct ext2fs_node *node, struct ext2fs_node *currroot);
index c8eb7ccd2904c2e9977b252f4234d20854e29501..81d9790420d8057d0a8e3d1f5e22a6474c89cccd 100644 (file)
 #define START(dent)    (FAT2CPU16((dent)->start) \
                        + (mydata->fatsize != 32 ? 0 : \
                          (FAT2CPU16((dent)->starthi) << 16)))
+#define IS_LAST_CLUST(x, fatsize) ((x) >= ((fatsize) != 32 ? \
+                                       ((fatsize) != 16 ? 0xff8 : 0xfff8) : \
+                                       0xffffff8))
 #define CHECK_CLUST(x, fatsize) ((x) <= 1 || \
-                               (x) >= ((fatsize) != 32 ? 0xfff0 : 0xffffff0))
+                               (x) >= ((fatsize) != 32 ? \
+                                       ((fatsize) != 16 ? 0xff0 : 0xfff0) : \
+                                       0xffffff0))
 
 typedef struct boot_sector {
        __u8    ignored[3];     /* Bootstrap code */
index 15e603a169d9f643173d84baf914e7690f56b5f0..914024c17cb8841578ea622e112bb7aaf7fccb68 100644 (file)
@@ -35,13 +35,29 @@ typedef struct {            /* typedef fpga_desc */
        void *devdesc;          /* real device descriptor */
 } fpga_desc;                   /* end, typedef fpga_desc */
 
+typedef struct {                /* typedef fpga_desc */
+       unsigned int blocksize;
+       char *interface;
+       char *dev_part;
+       char *filename;
+       int fstype;
+} fpga_fs_info;
+
+typedef enum {
+       BIT_FULL = 0,
+       BIT_PARTIAL,
+} bitstream_type;
 
 /* root function definitions */
 extern void fpga_init(void);
 extern int fpga_add(fpga_type devtype, void *desc);
 extern int fpga_count(void);
-extern int fpga_load(int devnum, const void *buf, size_t bsize);
-extern int fpga_loadbitstream(int devnum, char *fpgadata, size_t size);
+extern int fpga_load(int devnum, const void *buf, size_t bsize,
+                    bitstream_type bstype);
+extern int fpga_fsload(int devnum, const void *buf, size_t size,
+                      fpga_fs_info *fpga_fsinfo);
+extern int fpga_loadbitstream(int devnum, char *fpgadata, size_t size,
+                             bitstream_type bstype);
 extern int fpga_dump(int devnum, const void *buf, size_t bsize);
 extern int fpga_info(int devnum);
 extern const fpga_desc *const fpga_validate(int devnum, const void *buf,
index b27877870beb89e3c21699749117810fa12a696b..41e56abe15ce22e9244fc5ab348b26025f6463cd 100644 (file)
@@ -225,6 +225,7 @@ struct lmb;
 #define IH_TYPE_PBLIMAGE       15      /* Freescale PBL Boot Image     */
 #define IH_TYPE_MXSIMAGE       16      /* Freescale MXSBoot Image      */
 #define IH_TYPE_GPIMAGE                17      /* TI Keystone GPHeader Image   */
+#define IH_TYPE_ATMELIMAGE     18      /* ATMEL ROM bootable Image     */
 
 /*
  * Compression Types
@@ -413,6 +414,7 @@ enum fit_load_op {
 #define IMAGE_FORMAT_INVALID   0x00
 #define IMAGE_FORMAT_LEGACY    0x01    /* legacy image_header based format */
 #define IMAGE_FORMAT_FIT       0x02    /* new, libfdt based format */
+#define IMAGE_FORMAT_ANDROID   0x03    /* Android boot image */
 
 int genimg_get_format(const void *img_addr);
 int genimg_has_config(bootm_headers_t *images);
@@ -1031,4 +1033,16 @@ static inline int fit_image_check_target_arch(const void *fdt, int node)
 #endif /* CONFIG_FIT_VERBOSE */
 #endif /* CONFIG_FIT */
 
+#if defined(CONFIG_ANDROID_BOOT_IMAGE)
+struct andr_img_hdr;
+int android_image_check_header(const struct andr_img_hdr *hdr);
+int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
+                            ulong *os_data, ulong *os_len);
+int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
+                             ulong *rd_data, ulong *rd_len);
+ulong android_image_get_end(const struct andr_img_hdr *hdr);
+ulong android_image_get_kload(const struct andr_img_hdr *hdr);
+
+#endif /* CONFIG_ANDROID_BOOT_IMAGE */
+
 #endif /* __IMAGE_H__ */
index aa2d1ca3605a4be3a601bc91a577407d8a17d383..f46572e1772ee8781d347945abc2f78b9120a78a 100644 (file)
@@ -52,6 +52,7 @@
 #define COMM_ERR               -18 /* Communications Error */
 #define TIMEOUT                        -19
 #define IN_PROGRESS            -20 /* operation is in progress */
+#define SWITCH_ERR             -21 /* Card reports failure to switch mode */
 
 #define MMC_CMD_GO_IDLE_STATE          0
 #define MMC_CMD_SEND_OP_COND           1
@@ -68,6 +69,7 @@
 #define MMC_CMD_SET_BLOCKLEN           16
 #define MMC_CMD_READ_SINGLE_BLOCK      17
 #define MMC_CMD_READ_MULTIPLE_BLOCK    18
+#define MMC_CMD_SET_BLOCK_COUNT         23
 #define MMC_CMD_WRITE_SINGLE_BLOCK     24
 #define MMC_CMD_WRITE_MULTIPLE_BLOCK   25
 #define MMC_CMD_ERASE_GROUP_START      35
 #define SECURE_ERASE           0x80000000
 
 #define MMC_STATUS_MASK                (~0x0206BF7F)
+#define MMC_STATUS_SWITCH_ERROR        (1 << 7)
 #define MMC_STATUS_RDY_FOR_DATA (1 << 8)
 #define MMC_STATUS_CURR_STATE  (0xf << 9)
 #define MMC_STATUS_ERROR       (1 << 19)
  * boot partitions (2), general purpose partitions (4) in MMC v4.4.
  */
 #define MMC_NUM_BOOT_PARTITION 2
+#define MMC_PART_RPMB           3       /* RPMB partition number */
 
 struct mmc_cid {
        unsigned long psn;
@@ -337,7 +341,13 @@ int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
 int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode);
 /* Function to modify the RST_n_FUNCTION field of EXT_CSD */
 int mmc_set_rst_n_function(struct mmc *mmc, u8 enable);
-
+/* Functions to read / write the RPMB partition */
+int mmc_rpmb_set_key(struct mmc *mmc, void *key);
+int mmc_rpmb_get_counter(struct mmc *mmc, unsigned long *counter);
+int mmc_rpmb_read(struct mmc *mmc, void *addr, unsigned short blk,
+                 unsigned short cnt, unsigned char *key);
+int mmc_rpmb_write(struct mmc *mmc, void *addr, unsigned short blk,
+                  unsigned short cnt, unsigned char *key);
 /**
  * Start device initialization and return immediately; it does not block on
  * polling OCR (operation condition register) status.  Then you should call
index 0802fad8761364d97f04a799e91d01ca4cd2eb06..735b0b9d26f57cd45afc111a00a5bc96a96d53b0 100644 (file)
@@ -130,23 +130,6 @@ extern int eth_setenv_enetaddr(char *name, const uchar *enetaddr);
 extern int eth_getenv_enetaddr_by_index(const char *base_name, int index,
                                        uchar *enetaddr);
 
-#ifdef CONFIG_RANDOM_MACADDR
-/*
- * The u-boot policy does not allow hardcoded ethernet addresses. Under the
- * following circumstances a random generated address is allowed:
- *  - in emergency cases, where you need a working network connection to set
- *    the ethernet address.
- *    Eg. you want a rescue boot and don't have a serial port to access the
- *    CLI to set environment variables.
- *
- * In these cases, we generate a random locally administered ethernet address.
- *
- * Args:
- *  enetaddr - returns 6 byte hardware address
- */
-extern void eth_random_enetaddr(uchar *enetaddr);
-#endif
-
 extern int usb_eth_initialize(bd_t *bi);
 extern int eth_init(bd_t *bis);                        /* Initialize the device */
 extern int eth_send(void *packet, int length);    /* Send a packet */
@@ -674,6 +657,25 @@ static inline int is_valid_ether_addr(const u8 *addr)
        return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr);
 }
 
+/**
+ * eth_random_addr - Generate software assigned random Ethernet address
+ * @addr: Pointer to a six-byte array containing the Ethernet address
+ *
+ * Generate a random Ethernet address (MAC) that is not multicast
+ * and has the local assigned bit set.
+ */
+static inline void eth_random_addr(uchar *addr)
+{
+       int i;
+       unsigned int seed = get_timer(0);
+
+       for (i = 0; i < 6; i++)
+               addr[i] = rand_r(&seed);
+
+       addr[0] &= 0xfe;        /* clear multicast bit */
+       addr[0] |= 0x02;        /* set local assignment bit (IEEE802) */
+}
+
 /* Convert an IP address to a string */
 extern void ip_to_string(IPaddr_t x, char *s);
 
index e211f1841f60d7dac07d43d4dd9297a720854ac2..63481eca22688080f5b26e7da99013af88f06c1d 100644 (file)
@@ -78,6 +78,7 @@ int sh_eth_initialize(bd_t *bis);
 int skge_initialize(bd_t *bis);
 int smc91111_initialize(u8 dev_num, int base_addr);
 int smc911x_initialize(u8 dev_num, int base_addr);
+int sunxi_gmac_initialize(bd_t *bis);
 int sunxi_wemac_initialize(bd_t *bis);
 int tsi108_eth_initialize(bd_t *bis);
 int uec_standard_init(bd_t *bis);
index 51cb5b4a66d86029674feca1cdf395d493ec56ae..17f829f6f9b016da61a9d1770b5737e1894a8955 100644 (file)
@@ -100,6 +100,7 @@ typedef struct NS16550 *NS16550_t;
 #define UART_MCR_OUT1  0x04            /* Out 1 */
 #define UART_MCR_OUT2  0x08            /* Out 2 */
 #define UART_MCR_LOOP  0x10            /* Enable loopback test mode */
+#define UART_MCR_AFE   0x20            /* Enable auto-RTS/CTS */
 
 #define UART_MCR_DMA_EN        0x04
 #define UART_MCR_TX_DFR        0x08
index eaf367086c437d3d468ebf2dd85fb22f0ae15144..cca3f9a9d19cca4cc7c8e6a82f1926c16d77f248 100644 (file)
 #define LDO1_CTRL              0x50
 #define LDO1_VOLTAGE           0x51
 
+/* LDO2 control/voltage */
+#define LDO2_CTRL              0x52
+#define LDO2_VOLTAGE           0x53
+
 /* LDO9 control/voltage */
 #define LDO9_CTRL              0x60
 #define LDO9_VOLTAGE           0x61
index 53532dcd6120a5959ddcc5f133f5f3f0a6466df6..f2c8c641faa8e77c0d47a7fdfaae10d210a25515 100644 (file)
@@ -103,6 +103,7 @@ block_dev_desc_t* sata_get_dev(int dev);
 block_dev_desc_t* scsi_get_dev(int dev);
 block_dev_desc_t* usb_stor_get_dev(int dev);
 block_dev_desc_t* mmc_get_dev(int dev);
+int mmc_select_hwpart(int dev_num, int hwpart);
 block_dev_desc_t* systemace_get_dev(int dev);
 block_dev_desc_t* mg_disk_get_dev(int dev);
 block_dev_desc_t *host_get_dev(int dev);
@@ -126,6 +127,7 @@ static inline block_dev_desc_t* sata_get_dev(int dev) { return NULL; }
 static inline block_dev_desc_t* scsi_get_dev(int dev) { return NULL; }
 static inline block_dev_desc_t* usb_stor_get_dev(int dev) { return NULL; }
 static inline block_dev_desc_t* mmc_get_dev(int dev) { return NULL; }
+static inline int mmc_select_hwpart(int dev_num, int hwpart) { return -1; }
 static inline block_dev_desc_t* systemace_get_dev(int dev) { return NULL; }
 static inline block_dev_desc_t* mg_disk_get_dev(int dev) { return NULL; }
 static inline block_dev_desc_t *host_get_dev(int dev) { return NULL; }
diff --git a/include/power/ltc3676_pmic.h b/include/power/ltc3676_pmic.h
new file mode 100644 (file)
index 0000000..dcaa985
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ *  Copyright (C) 2014 Gateworks Corporation
+ *  Tim Harvey <tharvey@gateworks.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __LTC3676_PMIC_H_
+#define __LTC3676_PMIC_H_
+
+/* LTC3676 registers */
+enum {
+       LTC3676_BUCK1   = 0x01,
+       LTC3676_BUCK2   = 0x02,
+       LTC3676_BUCK3   = 0x03,
+       LTC3676_BUCK4   = 0x04,
+       LTC3676_LDOA    = 0x05,
+       LTC3676_LDOB    = 0x06,
+       LTC3676_SQD1    = 0x07,
+       LTC3676_SQD2    = 0x08,
+       LTC3676_CNTRL   = 0x09,
+       LTC3676_DVB1A   = 0x0A,
+       LTC3676_DVB1B   = 0x0B,
+       LTC3676_DVB2A   = 0x0C,
+       LTC3676_DVB2B   = 0x0D,
+       LTC3676_DVB3A   = 0x0E,
+       LTC3676_DVB3B   = 0x0F,
+       LTC3676_DVB4A   = 0x10,
+       LTC3676_DVB4B   = 0x11,
+       LTC3676_MSKIRQ  = 0x12,
+       LTC3676_MSKPG   = 0x13,
+       LTC3676_USER    = 0x14,
+       LTC3676_HRST    = 0x1E,
+       LTC3676_CLIRQ   = 0x1F,
+       LTC3676_IRQSTAT = 0x15,
+       LTC3676_PGSTATL = 0x16,
+       LTC3676_PGSTATR = 0x17,
+       LTC3676_NUM_OF_REGS = 0x20,
+};
+
+/*
+ * SW Configuration
+ */
+
+#define LTC3676_DVB_MASK       0x1f
+#define LTC3676_PGOOD_MASK     (1<<5)
+#define LTC3676_REF_SELA       (0<<5)
+#define LTC3676_REF_SELB       (1<<5)
+
+int power_ltc3676_init(unsigned char bus);
+#endif
index 2a9032a1f93a486ddfc3b511e15fe9d07f0c5767..444aba6c66159bf3ebdee307ec2565ceb1b7c413 100644 (file)
@@ -93,4 +93,5 @@ enum {
 #define SWBST_MODE_AUTO        (2 << 2)
 #define SWBST_MODE_APS (2 << 3)
 
+int power_pfuze100_init(unsigned char bus);
 #endif
index 087a27d3cc0482d7705672aaa143446a2b45a3fd..2aca954e73ab108dbd0f20fa84648d64e44fe1bb 100644 (file)
 
 #include <xilinx.h>
 
-extern int Spartan2_load(Xilinx_desc *desc, const void *image, size_t size);
-extern int Spartan2_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-extern int Spartan2_info(Xilinx_desc *desc);
-
 /* Slave Parallel Implementation function table */
 typedef struct {
-       Xilinx_pre_fn   pre;
-       Xilinx_pgm_fn   pgm;
-       Xilinx_init_fn  init;
-       Xilinx_err_fn   err;
-       Xilinx_done_fn  done;
-       Xilinx_clk_fn   clk;
-       Xilinx_cs_fn    cs;
-       Xilinx_wr_fn    wr;
-       Xilinx_rdata_fn rdata;
-       Xilinx_wdata_fn wdata;
-       Xilinx_busy_fn  busy;
-       Xilinx_abort_fn abort;
-       Xilinx_post_fn  post;
-} Xilinx_Spartan2_Slave_Parallel_fns;
+       xilinx_pre_fn   pre;
+       xilinx_pgm_fn   pgm;
+       xilinx_init_fn  init;
+       xilinx_err_fn   err;
+       xilinx_done_fn  done;
+       xilinx_clk_fn   clk;
+       xilinx_cs_fn    cs;
+       xilinx_wr_fn    wr;
+       xilinx_rdata_fn rdata;
+       xilinx_wdata_fn wdata;
+       xilinx_busy_fn  busy;
+       xilinx_abort_fn abort;
+       xilinx_post_fn  post;
+} xilinx_spartan2_slave_parallel_fns;
 
 /* Slave Serial Implementation function table */
 typedef struct {
-       Xilinx_pre_fn   pre;
-       Xilinx_pgm_fn   pgm;
-       Xilinx_clk_fn   clk;
-       Xilinx_init_fn  init;
-       Xilinx_done_fn  done;
-       Xilinx_wr_fn    wr;
-       Xilinx_post_fn  post;
-} Xilinx_Spartan2_Slave_Serial_fns;
+       xilinx_pre_fn   pre;
+       xilinx_pgm_fn   pgm;
+       xilinx_clk_fn   clk;
+       xilinx_init_fn  init;
+       xilinx_done_fn  done;
+       xilinx_wr_fn    wr;
+       xilinx_post_fn  post;
+} xilinx_spartan2_slave_serial_fns;
+
+extern struct xilinx_fpga_op spartan2_op;
 
 /* Device Image Sizes
  *********************************************************************/
@@ -63,36 +61,36 @@ typedef struct {
  *********************************************************************/
 /* Spartan-II devices */
 #define XILINX_XC2S15_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S15_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S15_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S30_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S30_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S30_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S50_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S50_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S50_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S100_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S100_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S100_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S150_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S150_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S150_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S200_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S200_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S200_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S50E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S50E_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S50E_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S100E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S100E_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S100E_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S150E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S150E_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S150E_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S200E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S200E_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S200E_SIZE, fn_table, cookie, &spartan2_op }
 
 #define XILINX_XC2S300E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan2, iface, XILINX_XC2S300E_SIZE, fn_table, cookie }
+{ xilinx_spartan2, iface, XILINX_XC2S300E_SIZE, fn_table, cookie, &spartan2_op }
 
 #endif /* _SPARTAN2_H_ */
index 72e7c0ddd00245220137ab54c3ffd5d2d227513c..d6d67a6e560cf4ad45d043a44b4be5fa277118e8 100644 (file)
 
 #include <xilinx.h>
 
-extern int Spartan3_load(Xilinx_desc *desc, const void *image, size_t size);
-extern int Spartan3_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-extern int Spartan3_info(Xilinx_desc *desc);
-
 /* Slave Parallel Implementation function table */
 typedef struct {
-       Xilinx_pre_fn   pre;
-       Xilinx_pgm_fn   pgm;
-       Xilinx_init_fn  init;
-       Xilinx_err_fn   err;
-       Xilinx_done_fn  done;
-       Xilinx_clk_fn   clk;
-       Xilinx_cs_fn    cs;
-       Xilinx_wr_fn    wr;
-       Xilinx_rdata_fn rdata;
-       Xilinx_wdata_fn wdata;
-       Xilinx_busy_fn  busy;
-       Xilinx_abort_fn abort;
-       Xilinx_post_fn  post;
-} Xilinx_Spartan3_Slave_Parallel_fns;
+       xilinx_pre_fn   pre;
+       xilinx_pgm_fn   pgm;
+       xilinx_init_fn  init;
+       xilinx_err_fn   err;
+       xilinx_done_fn  done;
+       xilinx_clk_fn   clk;
+       xilinx_cs_fn    cs;
+       xilinx_wr_fn    wr;
+       xilinx_rdata_fn rdata;
+       xilinx_wdata_fn wdata;
+       xilinx_busy_fn  busy;
+       xilinx_abort_fn abort;
+       xilinx_post_fn  post;
+} xilinx_spartan3_slave_parallel_fns;
 
 /* Slave Serial Implementation function table */
 typedef struct {
-       Xilinx_pre_fn   pre;
-       Xilinx_pgm_fn   pgm;
-       Xilinx_clk_fn   clk;
-       Xilinx_init_fn  init;
-       Xilinx_done_fn  done;
-       Xilinx_wr_fn    wr;
-       Xilinx_post_fn  post;
-       Xilinx_bwr_fn   bwr; /* block write function */
-       Xilinx_abort_fn abort;
-} Xilinx_Spartan3_Slave_Serial_fns;
+       xilinx_pre_fn   pre;
+       xilinx_pgm_fn   pgm;
+       xilinx_clk_fn   clk;
+       xilinx_init_fn  init;
+       xilinx_done_fn  done;
+       xilinx_wr_fn    wr;
+       xilinx_post_fn  post;
+       xilinx_bwr_fn   bwr; /* block write function */
+       xilinx_abort_fn abort;
+} xilinx_spartan3_slave_serial_fns;
+
+extern struct xilinx_fpga_op spartan3_op;
 
 /* Device Image Sizes
  *********************************************************************/
@@ -73,46 +71,48 @@ typedef struct {
  *********************************************************************/
 /* Spartan-III devices */
 #define XILINX_XC3S50_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S50_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S50_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S200_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S200_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S200_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S400_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S400_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S400_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S1000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S1000_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S1000_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S1500_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S1500_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S1500_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S2000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S2000_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S2000_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S4000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S4000_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S4000_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S5000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S5000_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S5000_SIZE, fn_table, cookie, &spartan3_op }
 
 /* Spartan-3E devices */
 #define XILINX_XC3S100E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S100E_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S100E_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S250E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S250E_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S250E_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S500E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S500E_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S500E_SIZE, fn_table, cookie, &spartan3_op }
 
 #define XILINX_XC3S1200E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S1200E_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S1200E_SIZE, fn_table, cookie, \
+       &spartan3_op }
 
 #define XILINX_XC3S1600E_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINX_XC3S1600E_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINX_XC3S1600E_SIZE, fn_table, cookie, \
+       &spartan3_op }
 
 #define XILINX_XC6SLX4_DESC(iface, fn_table, cookie) \
-{ Xilinx_Spartan3, iface, XILINK_XC6SLX4_SIZE, fn_table, cookie }
+{ xilinx_spartan3, iface, XILINK_XC6SLX4_SIZE, fn_table, cookie, &spartan3_op }
 
 #endif /* _SPARTAN3_H_ */
index c9ee1d5bf6264b257f6042b348c20fa2f6de7606..dd77ad63254f94d03355501c9ed3a21da97826bd 100644 (file)
@@ -11,6 +11,8 @@
 
 #include <asm/processor.h>
 
+#define CONTROL_REGISTER_W1C_MASK       0x00020000  /* W1C: PHY_CLK_VALID */
+
 /* Global offsets */
 #define FSL_SKIP_PCI           0x100
 
index ed460644c1fe9152243ad97ddd516aaa9ef6e87a..69b80cd1a367a602d97e5efb16f67777c15caa20 100644 (file)
@@ -9,17 +9,9 @@
 #define __USB_MASS_STORAGE_H__
 
 #define SECTOR_SIZE            0x200
-#include <mmc.h>
+#include <part.h>
 #include <linux/usb/composite.h>
 
-#ifndef UMS_START_SECTOR
-#define UMS_START_SECTOR       0
-#endif
-
-#ifndef UMS_NUM_SECTORS
-#define UMS_NUM_SECTORS                0
-#endif
-
 /* Wait at maximum 60 seconds for cable connection */
 #define UMS_CABLE_READY_TIMEOUT        60
 
@@ -31,14 +23,13 @@ struct ums {
        unsigned int start_sector;
        unsigned int num_sectors;
        const char *name;
-       struct mmc *mmc;
+       block_dev_desc_t *block_dev;
 };
 
 extern struct ums *ums;
 
 int fsg_init(struct ums *);
 void fsg_cleanup(void);
-struct ums *ums_init(unsigned int);
 int fsg_main_thread(void *);
 int fsg_add(struct usb_configuration *c);
 #endif /* __USB_MASS_STORAGE_H__ */
index 2e9a4f52da3d8d75e1e6b9dadc6fd075af7f00c9..7b7825f513e358be83dbbbb753bd75569892d007 100644 (file)
 
 #include <xilinx.h>
 
-extern int Virtex2_load(Xilinx_desc *desc, const void *image, size_t size);
-extern int Virtex2_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-extern int Virtex2_info(Xilinx_desc *desc);
+extern struct xilinx_fpga_op virtex2_op;
 
 /*
  * Slave SelectMap Implementation function table.
  */
 typedef struct {
-       Xilinx_pre_fn   pre;
-       Xilinx_pgm_fn   pgm;
-       Xilinx_init_fn  init;
-       Xilinx_err_fn   err;
-       Xilinx_done_fn  done;
-       Xilinx_clk_fn   clk;
-       Xilinx_cs_fn    cs;
-       Xilinx_wr_fn    wr;
-       Xilinx_rdata_fn rdata;
-       Xilinx_wdata_fn wdata;
-       Xilinx_busy_fn  busy;
-       Xilinx_abort_fn abort;
-       Xilinx_post_fn  post;
-} Xilinx_Virtex2_Slave_SelectMap_fns;
+       xilinx_pre_fn   pre;
+       xilinx_pgm_fn   pgm;
+       xilinx_init_fn  init;
+       xilinx_err_fn   err;
+       xilinx_done_fn  done;
+       xilinx_clk_fn   clk;
+       xilinx_cs_fn    cs;
+       xilinx_wr_fn    wr;
+       xilinx_rdata_fn rdata;
+       xilinx_wdata_fn wdata;
+       xilinx_busy_fn  busy;
+       xilinx_abort_fn abort;
+       xilinx_post_fn  post;
+} xilinx_virtex2_slave_selectmap_fns;
 
 /* Slave Serial Implementation function table */
 typedef struct {
-       Xilinx_pgm_fn   pgm;
-       Xilinx_clk_fn   clk;
-       Xilinx_rdata_fn rdata;
-       Xilinx_wdata_fn wdata;
-} Xilinx_Virtex2_Slave_Serial_fns;
+       xilinx_pgm_fn   pgm;
+       xilinx_clk_fn   clk;
+       xilinx_rdata_fn rdata;
+       xilinx_wdata_fn wdata;
+} xilinx_virtex2_slave_serial_fns;
 
 /* Device Image Sizes (in bytes)
  *********************************************************************/
@@ -60,39 +58,39 @@ typedef struct {
 /* Descriptor Macros
  *********************************************************************/
 #define XILINX_XC2V40_DESC(iface, fn_table, cookie)    \
-{ Xilinx_Virtex2, iface, XILINX_XC2V40_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V40_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V80_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V80_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V80_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V250_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V250_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V250_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V500_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V500_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V500_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V1000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V1000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V1000_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V1500_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V1500_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V1500_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V2000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V2000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V2000_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V3000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V3000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V3000_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V4000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V4000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V4000_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V6000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V6000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V6000_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V8000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V8000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V8000_SIZE, fn_table, cookie, &virtex2_op }
 
 #define XILINX_XC2V10000_DESC(iface, fn_table, cookie) \
-{ Xilinx_Virtex2, iface, XILINX_XC2V10000_SIZE, fn_table, cookie }
+{ xilinx_virtex2, iface, XILINX_XC2V10000_SIZE, fn_table, cookie, &virtex2_op }
 
 #endif /* _VIRTEX2_H_ */
index 00a585e5fc311650e7d981c507cd3310c2948d1e..aebcb3bfdf29d7f87e4701fd01387bfe8f95b34a 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Xilinx types
  *********************************************************************/
-typedef enum {                 /* typedef Xilinx_iface */
+typedef enum {                 /* typedef xilinx_iface */
        min_xilinx_iface_type,  /* low range check value */
        slave_serial,           /* serial data and external clock */
        master_serial,          /* serial data w/ internal clock (not used) */
@@ -22,48 +22,59 @@ typedef enum {                      /* typedef Xilinx_iface */
        slave_selectmap,        /* slave SelectMap (virtex2)            */
        devcfg,                 /* devcfg interface (zynq) */
        max_xilinx_iface_type   /* insert all new types before this */
-} Xilinx_iface;                        /* end, typedef Xilinx_iface */
+} xilinx_iface;                        /* end, typedef xilinx_iface */
 
-typedef enum {                 /* typedef Xilinx_Family */
+typedef enum {                 /* typedef xilinx_family */
        min_xilinx_type,        /* low range check value */
-       Xilinx_Spartan2,        /* Spartan-II Family */
-       Xilinx_VirtexE,         /* Virtex-E Family */
-       Xilinx_Virtex2,         /* Virtex2 Family */
-       Xilinx_Spartan3,        /* Spartan-III Family */
+       xilinx_spartan2,        /* Spartan-II Family */
+       xilinx_virtexE,         /* Virtex-E Family */
+       xilinx_virtex2,         /* Virtex2 Family */
+       xilinx_spartan3,        /* Spartan-III Family */
        xilinx_zynq,            /* Zynq Family */
        max_xilinx_type         /* insert all new types before this */
-} Xilinx_Family;               /* end, typedef Xilinx_Family */
+} xilinx_family;               /* end, typedef xilinx_family */
 
-typedef struct {               /* typedef Xilinx_desc */
-       Xilinx_Family family;   /* part type */
-       Xilinx_iface iface;     /* interface type */
+typedef struct {               /* typedef xilinx_desc */
+       xilinx_family family;   /* part type */
+       xilinx_iface iface;     /* interface type */
        size_t size;            /* bytes of data part can accept */
        void *iface_fns;        /* interface function table */
        int cookie;             /* implementation specific cookie */
+       struct xilinx_fpga_op *operations; /* operations */
        char *name;             /* device name in bitstream */
-} Xilinx_desc;                 /* end, typedef Xilinx_desc */
+} xilinx_desc;                 /* end, typedef xilinx_desc */
+
+struct xilinx_fpga_op {
+       int (*load)(xilinx_desc *, const void *, size_t, bitstream_type);
+       int (*loadfs)(xilinx_desc *, const void *, size_t, fpga_fs_info *);
+       int (*dump)(xilinx_desc *, const void *, size_t);
+       int (*info)(xilinx_desc *);
+};
 
 /* Generic Xilinx Functions
  *********************************************************************/
-extern int xilinx_load(Xilinx_desc *desc, const void *image, size_t size);
-extern int xilinx_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-extern int xilinx_info(Xilinx_desc *desc);
+int xilinx_load(xilinx_desc *desc, const void *image, size_t size,
+               bitstream_type bstype);
+int xilinx_dump(xilinx_desc *desc, const void *buf, size_t bsize);
+int xilinx_info(xilinx_desc *desc);
+int xilinx_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
+                 fpga_fs_info *fpga_fsinfo);
 
 /* Board specific implementation specific function types
  *********************************************************************/
-typedef int (*Xilinx_pgm_fn)( int assert_pgm, int flush, int cookie );
-typedef int (*Xilinx_init_fn)( int cookie );
-typedef int (*Xilinx_err_fn)( int cookie );
-typedef int (*Xilinx_done_fn)( int cookie );
-typedef int (*Xilinx_clk_fn)( int assert_clk, int flush, int cookie );
-typedef int (*Xilinx_cs_fn)( int assert_cs, int flush, int cookie );
-typedef int (*Xilinx_wr_fn)( int assert_write, int flush, int cookie );
-typedef int (*Xilinx_rdata_fn)( unsigned char *data, int cookie );
-typedef int (*Xilinx_wdata_fn)( unsigned char data, int flush, int cookie );
-typedef int (*Xilinx_busy_fn)( int cookie );
-typedef int (*Xilinx_abort_fn)( int cookie );
-typedef int (*Xilinx_pre_fn)( int cookie );
-typedef int (*Xilinx_post_fn)( int cookie );
-typedef int (*Xilinx_bwr_fn)( void *buf, size_t len, int flush, int cookie );
+typedef int (*xilinx_pgm_fn)(int assert_pgm, int flush, int cookie);
+typedef int (*xilinx_init_fn)(int cookie);
+typedef int (*xilinx_err_fn)(int cookie);
+typedef int (*xilinx_done_fn)(int cookie);
+typedef int (*xilinx_clk_fn)(int assert_clk, int flush, int cookie);
+typedef int (*xilinx_cs_fn)(int assert_cs, int flush, int cookie);
+typedef int (*xilinx_wr_fn)(int assert_write, int flush, int cookie);
+typedef int (*xilinx_rdata_fn)(unsigned char *data, int cookie);
+typedef int (*xilinx_wdata_fn)(unsigned char data, int flush, int cookie);
+typedef int (*xilinx_busy_fn)(int cookie);
+typedef int (*xilinx_abort_fn)(int cookie);
+typedef int (*xilinx_pre_fn)(int cookie);
+typedef int (*xilinx_post_fn)(int cookie);
+typedef int (*xilinx_bwr_fn)(void *buf, size_t len, int flush, int cookie);
 
 #endif  /* _XILINX_H_ */
index c81446e9860cb6b5a067fd9c0eec1d47e4ff0327..8a9ec3297fbe5b576f434cf4812d736cf88baf49 100644 (file)
@@ -12,9 +12,7 @@
 
 #include <xilinx.h>
 
-extern int zynq_load(Xilinx_desc *desc, const void *image, size_t size);
-extern int zynq_dump(Xilinx_desc *desc, const void *buf, size_t bsize);
-extern int zynq_info(Xilinx_desc *desc);
+extern struct xilinx_fpga_op zynq_op;
 
 #define XILINX_ZYNQ_7010       0x2
 #define XILINX_ZYNQ_7015       0x1b
@@ -33,21 +31,21 @@ extern int zynq_info(Xilinx_desc *desc);
 
 /* Descriptor Macros */
 #define XILINX_XC7Z010_DESC(cookie) \
-{ xilinx_zynq, devcfg, XILINX_XC7Z010_SIZE, NULL, cookie, "7z010" }
+{ xilinx_zynq, devcfg, XILINX_XC7Z010_SIZE, NULL, cookie, &zynq_op, "7z010" }
 
 #define XILINX_XC7Z015_DESC(cookie) \
-{ xilinx_zynq, devcfg, XILINX_XC7Z015_SIZE, NULL, cookie, "7z015" }
+{ xilinx_zynq, devcfg, XILINX_XC7Z015_SIZE, NULL, cookie, &zynq_op, "7z015" }
 
 #define XILINX_XC7Z020_DESC(cookie) \
-{ xilinx_zynq, devcfg, XILINX_XC7Z020_SIZE, NULL, cookie, "7z020" }
+{ xilinx_zynq, devcfg, XILINX_XC7Z020_SIZE, NULL, cookie, &zynq_op, "7z020" }
 
 #define XILINX_XC7Z030_DESC(cookie) \
-{ xilinx_zynq, devcfg, XILINX_XC7Z030_SIZE, NULL, cookie, "7z030" }
+{ xilinx_zynq, devcfg, XILINX_XC7Z030_SIZE, NULL, cookie, &zynq_op, "7z030" }
 
 #define XILINX_XC7Z045_DESC(cookie) \
-{ xilinx_zynq, devcfg, XILINX_XC7Z045_SIZE, NULL, cookie, "7z045" }
+{ xilinx_zynq, devcfg, XILINX_XC7Z045_SIZE, NULL, cookie, &zynq_op, "7z045" }
 
 #define XILINX_XC7Z100_DESC(cookie) \
-{ xilinx_zynq, devcfg, XILINX_XC7Z100_SIZE, NULL, cookie, "7z100" }
+{ xilinx_zynq, devcfg, XILINX_XC7Z100_SIZE, NULL, cookie, &zynq_op, "7z100" }
 
 #endif /* _ZYNQPL_H_ */
index 27e4f78bfd01a2bfe9ecc5b1c65f5fea4d5f060f..377ab134ba34e77835ed8b6db7e38280d4eaf98c 100644 (file)
@@ -35,6 +35,7 @@ obj-y += net_utils.o
 obj-$(CONFIG_PHYSMEM) += physmem.o
 obj-y += qsort.o
 obj-$(CONFIG_SHA1) += sha1.o
+obj-$(CONFIG_SUPPORT_EMMC_RPMB) += sha256.o
 obj-$(CONFIG_SHA256) += sha256.o
 obj-y  += strmhz.o
 obj-$(CONFIG_TPM) += tpm.o
index 3212baba5f6c253f635220bd55b0c31707ae9341..b1085ea791759128dad36cc338bb8430d5389a32 100644 (file)
@@ -8,9 +8,11 @@
 
 #ifndef USE_HOSTCC
 #include <common.h>
+#include <linux/string.h>
+#else
+#include <string.h>
 #endif /* USE_HOSTCC */
 #include <watchdog.h>
-#include <linux/string.h>
 #include <sha256.h>
 
 /*
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile
deleted file mode 100644 (file)
index 9f33802..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# (C) Copyright 2007
-# Stefan Roese, DENX Software Engineering, sr@denx.de.
-#
-# Copyright 2009-2011 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-CONFIG_SYS_TEXT_BASE_SPL := 0xfff00000
-PAD_TO := 0xfff01000
-
-nandobj        := $(objtree)/nand_spl/
-
-LDSCRIPT= $(srctree)/$(CPUDIR)/u-boot-nand_spl.lds
-LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
-               $(LDFLAGS) $(LDFLAGS_FINAL)
-asflags-y += -DCONFIG_NAND_SPL
-ccflags-y += -DCONFIG_NAND_SPL
-
-SOBJS  = start.o resetvec.o
-COBJS  = cache.o cpu_init_early.o spl_minimal.o fsl_law.o law.o \
-         nand_boot.o nand_boot_fsl_elbc.o ns16550.o tlb.o tlb_table.o
-
-OBJS   := $(addprefix $(obj)/,$(SOBJS) $(COBJS))
-__OBJS := $(SOBJS) $(COBJS)
-LNDIR  := $(nandobj)board/$(BOARDDIR)
-
-targets += $(__OBJS)
-
-all: $(nandobj)u-boot-spl.bin $(nandobj)u-boot-spl-16k.bin
-
-$(nandobj)u-boot-spl-16k.bin: $(nandobj)u-boot-spl
-       $(OBJCOPY) $(OBJCOPYFLAGS) --pad-to=$(PAD_TO) -O binary $< $@
-
-$(nandobj)u-boot-spl.bin:      $(nandobj)u-boot-spl
-       $(OBJCOPY) $(OBJCOPYFLAGS) -O binary $< $@
-
-$(nandobj)u-boot-spl:  $(OBJS) $(nandobj)u-boot-nand_spl.lds
-       cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) $(PLATFORM_LIBS) \
-               -Map $(nandobj)u-boot-spl.map -o $@
-
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-       $(CPP) $(cpp_flags) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \
-               -ansi -D__ASSEMBLY__ -P - <$< >$@
-
-# create symbolic links for common files
-
-$(obj)/cache.c:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/lib/cache.c $@
-
-$(obj)/cpu_init_early.c:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/cpu_init_early.c $@
-
-$(obj)/spl_minimal.c:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/spl_minimal.c $@
-
-$(obj)/fsl_law.c:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc8xxx/law.c $@
-
-$(obj)/law.c:
-       @rm -f $@
-       ln -sf $(srctree)/board/$(BOARDDIR)/law.c $@
-
-$(obj)/nand_boot_fsl_elbc.c:
-       @rm -f $@
-       ln -sf $(srctree)/nand_spl/nand_boot_fsl_elbc.c $@
-
-$(obj)/ns16550.c:
-       @rm -f $@
-       ln -sf $(srctree)/drivers/serial/ns16550.c $@
-
-$(obj)/resetvec.S:
-       @rm -f $@
-       ln -s $(srctree)/$(CPUDIR)/resetvec.S $@
-
-$(obj)/start.S:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/start.S $@
-
-$(obj)/tlb.c:
-       @rm -f $@
-       ln -sf $(srctree)/arch/powerpc/cpu/mpc85xx/tlb.c $@
-
-$(obj)/tlb_table.c:
-       @rm -f $@
-       ln -sf $(srctree)/board/$(BOARDDIR)/tlb.c $@
diff --git a/nand_spl/board/freescale/p1_p2_rdb/nand_boot.c b/nand_spl/board/freescale/p1_p2_rdb/nand_boot.c
deleted file mode 100644 (file)
index f7e8438..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <mpc85xx.h>
-#include <asm/io.h>
-#include <ns16550.h>
-#include <nand.h>
-#include <asm/mmu.h>
-#include <asm/immap_85xx.h>
-#include <fsl_ddr_sdram.h>
-#include <asm/fsl_law.h>
-
-#define SYSCLK_MASK     0x00200000
-#define BOARDREV_MASK   0x10100000
-#define BOARDREV_B      0x10100000
-#define BOARDREV_C      0x00100000
-
-#define SYSCLK_66       66666666
-#define SYSCLK_50       50000000
-#define SYSCLK_100      100000000
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void board_init_f(ulong bootflag)
-{
-       uint plat_ratio, bus_clk, sys_clk = 0;
-       volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
-       volatile ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
-       uint val, temp, sysclk_mask;
-
-       val = pgpio->gpdat;
-       sysclk_mask = val & SYSCLK_MASK;
-       temp = val & BOARDREV_MASK;
-       if (temp == BOARDREV_C) {
-               if(sysclk_mask == 0)
-                       sys_clk = SYSCLK_66;
-               else
-                       sys_clk = SYSCLK_100;
-       } else if (temp == BOARDREV_B) {
-               if(sysclk_mask == 0)
-                       sys_clk = SYSCLK_66;
-               else
-                       sys_clk = SYSCLK_50;
-       }
-
-       plat_ratio = gur->porpllsr & 0x0000003e;
-       plat_ratio >>= 1;
-       bus_clk = plat_ratio * sys_clk;
-       NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
-                       bus_clk / 16 / CONFIG_BAUDRATE);
-
-       puts("\nNAND boot... ");
-
-       /* copy code to DDR 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_SYS_NAND_U_BOOT_RELOC_SP, 0,
-                       CONFIG_SYS_NAND_U_BOOT_RELOC);
-}
-
-void board_init_r(gd_t *gd, ulong dest_addr)
-{
-       nand_boot();
-}
-
-void putc(char c)
-{
-       if (c == '\n')
-               NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r');
-
-       NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c);
-}
-
-void puts(const char *str)
-{
-       while (*str)
-               putc(*str++);
-}
index 32bd10c8290a6e2af662b566d8d64405a2c5efe1..99386e3e63172442f7210f7b4a7aa29e5af7877b 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -63,28 +63,6 @@ static int eth_mac_skip(int index)
        return ((skip_state = getenv(enetvar)) != NULL);
 }
 
-#ifdef CONFIG_RANDOM_MACADDR
-void eth_random_enetaddr(uchar *enetaddr)
-{
-       uint32_t rval;
-
-       srand(get_timer(0));
-
-       rval = rand();
-       enetaddr[0] = rval & 0xff;
-       enetaddr[1] = (rval >> 8) & 0xff;
-       enetaddr[2] = (rval >> 16) & 0xff;
-
-       rval = rand();
-       enetaddr[3] = rval & 0xff;
-       enetaddr[4] = (rval >> 8) & 0xff;
-       enetaddr[5] = (rval >> 16) & 0xff;
-
-       /* make sure it's local and unicast */
-       enetaddr[0] = (enetaddr[0] | 0x02) & ~0x01;
-}
-#endif
-
 /*
  * CPU and board-specific Ethernet initializations.  Aliased function
  * signals caller to move on
index a4d973744b3210614f312281a3a45f69a76a55ff..bf677aa42a6027fb7a069f20507a793eea819df8 100644 (file)
@@ -88,7 +88,7 @@ libs-y += $(CPUDIR)/
 ifdef SOC
 libs-y += $(CPUDIR)/$(SOC)/
 endif
-libs-y += board/$(BOARDDIR)/
+libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
 
 libs-$(CONFIG_SPL_FRAMEWORK) += common/spl/
@@ -183,12 +183,29 @@ MKIMAGEFLAGS_MLO.byteswap = -T omapimage -n byteswap -a $(CONFIG_SPL_TEXT_BASE)
 MLO MLO.byteswap: $(obj)/u-boot-spl.bin
        $(call if_changed,mkimage)
 
+MKIMAGEFLAGS_boot.bin = -T atmelimage
+
+ifeq ($(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER),y)
+MKIMAGEFLAGS_boot.bin += -n $(shell $(obj)/../tools/atmel_pmecc_params)
+
+boot.bin: $(obj)/../tools/atmel_pmecc_params
+endif
+
+boot.bin: $(obj)/u-boot-spl.bin
+       $(call if_changed,mkimage)
+
 ALL-y  += $(obj)/$(SPL_BIN).bin
 
 ifdef CONFIG_SAMSUNG
 ALL-y  += $(obj)/$(BOARD)-spl.bin
 endif
 
+ifdef CONFIG_SUNXI
+ifndef CONFIG_SPL_FEL
+ALL-y  += $(obj)/sunxi-spl.bin
+endif
+endif
+
 all:   $(ALL-y)
 
 ifdef CONFIG_SAMSUNG
@@ -216,6 +233,13 @@ ifneq ($(CONFIG_SPL_TEXT_BASE),)
 LDFLAGS_$(SPL_BIN) += -Ttext $(CONFIG_SPL_TEXT_BASE)
 endif
 
+ifdef CONFIG_SUNXI
+quiet_cmd_mksunxiboot = MKSUNXI $@
+cmd_mksunxiboot = $(objtree)/tools/mksunxiboot $< $@
+$(obj)/sunxi-spl.bin: $(obj)/$(SPL_BIN).bin
+       $(call if_changed,mksunxiboot)
+endif
+
 quiet_cmd_u-boot-spl = LD      $@
       cmd_u-boot-spl = cd $(obj) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
                       $(patsubst $(obj)/%,%,$(u-boot-spl-init)) --start-group \
index b1e997fc3ee0018efb954ad858201e01ca3c3d82..725db906e840a3c2a035d05b67a93c110072e944 100644 (file)
@@ -11,6 +11,7 @@
 /mkexynosspl
 /mpc86x_clk
 /mxsboot
+/mksunxiboot
 /ncb
 /proftool
 /relocate-rela
index 6e43a0150d41d200bdd4097bcdc2c5a3af792277..761055764bf6ab1e27bd8f4c27602879244effe6 100644 (file)
@@ -38,6 +38,8 @@ ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y
 ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y
 CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
 
+hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params$(SFX)
+
 # TODO: CONFIG_CMD_LICENSE does not work
 hostprogs-$(CONFIG_CMD_LICENSE) += bin2header$(SFX)
 hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX)
@@ -69,6 +71,7 @@ RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := rsa-sign.o rsa-verify.o rsa-checksum.o
 
 # common objs for dumpimage and mkimage
 dumpimage-mkimage-objs := aisimage.o \
+                       atmelimage.o \
                        $(FIT_SIG_OBJS-y) \
                        crc32.o \
                        default_image.o \
@@ -131,6 +134,8 @@ hostprogs-$(CONFIG_MX23) += mxsboot$(SFX)
 hostprogs-$(CONFIG_MX28) += mxsboot$(SFX)
 HOSTCFLAGS_mxsboot$(SFX).o := -pedantic
 
+hostprogs-$(CONFIG_SUNXI) += mksunxiboot$(SFX)
+
 hostprogs-$(CONFIG_NETCONSOLE) += ncb$(SFX)
 hostprogs-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
 
diff --git a/tools/atmel_pmecc_params.c b/tools/atmel_pmecc_params.c
new file mode 100644 (file)
index 0000000..8eaf27f
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * (C) Copyright 2014 Andreas Bießmann <andreas.devel@googlemail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * This is a host tool for generating an appropriate string out of board
+ * configuration. The string is required for correct generation of PMECC
+ * header which in turn is required for NAND flash booting of Atmel AT91 style
+ * hardware.
+ *
+ * See doc/README.atmel_pmecc for more information.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+
+static int pmecc_get_ecc_bytes(int cap, int sector_size)
+{
+       int m = 12 + sector_size / 512;
+       return (m * cap + 7) / 8;
+}
+
+int main(int argc, char *argv[])
+{
+       unsigned int use_pmecc = 0;
+       unsigned int sector_per_page;
+       unsigned int sector_size = CONFIG_PMECC_SECTOR_SIZE;
+       unsigned int oob_size = CONFIG_SYS_NAND_OOBSIZE;
+       unsigned int ecc_bits = CONFIG_PMECC_CAP;
+       unsigned int ecc_offset;
+
+#ifdef CONFIG_ATMEL_NAND_HW_PMECC
+       use_pmecc = 1;
+#endif
+
+       sector_per_page = CONFIG_SYS_NAND_PAGE_SIZE / CONFIG_PMECC_SECTOR_SIZE;
+       ecc_offset = oob_size -
+               pmecc_get_ecc_bytes(ecc_bits, sector_size) * sector_per_page;
+
+       printf("usePmecc=%d,", use_pmecc);
+       printf("sectorPerPage=%d,", sector_per_page);
+       printf("sectorSize=%d,", sector_size);
+       printf("spareSize=%d,", oob_size);
+       printf("eccBits=%d,", ecc_bits);
+       printf("eccOffset=%d", ecc_offset);
+       printf("\n");
+
+       exit(EXIT_SUCCESS);
+}
diff --git a/tools/atmelimage.c b/tools/atmelimage.c
new file mode 100644 (file)
index 0000000..c8101d2
--- /dev/null
@@ -0,0 +1,342 @@
+/*
+ * (C) Copyright 2014
+ * Andreas Bießmann <andreas.devel@googlemail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "imagetool.h"
+#include "mkimage.h"
+
+#include <image.h>
+
+#define pr_err(fmt, args...) fprintf(stderr, "atmelimage Error: " fmt, ##args)
+
+static int atmel_check_image_type(uint8_t type)
+{
+       if (type == IH_TYPE_ATMELIMAGE)
+               return EXIT_SUCCESS;
+       else
+               return EXIT_FAILURE;
+}
+
+static uint32_t nand_pmecc_header[52];
+
+/*
+ * A helper struct for parsing the mkimage -n parameter
+ *
+ * Keep in same order as the configs array!
+ */
+static struct pmecc_config {
+       int use_pmecc;
+       int sector_per_page;
+       int spare_size;
+       int ecc_bits;
+       int sector_size;
+       int ecc_offset;
+} pmecc;
+
+/*
+ * Strings used for configure the PMECC header via -n mkimage switch
+ *
+ * We estimate a coma separated list of key=value pairs. The mkimage -n
+ * parameter argument should not contain any whitespace.
+ *
+ * Keep in same order as struct pmecc_config!
+ */
+static const char * const configs[] = {
+       "usePmecc",
+       "sectorPerPage",
+       "spareSize",
+       "eccBits",
+       "sectorSize",
+       "eccOffset"
+};
+
+static int atmel_find_pmecc_parameter_in_token(const char *token)
+{
+       size_t pos;
+       char *param;
+
+       debug("token: '%s'\n", token);
+
+       for (pos = 0; pos < ARRAY_SIZE(configs); pos++) {
+               if (strncmp(token, configs[pos], strlen(configs[pos])) == 0) {
+                       param = strstr(token, "=");
+                       if (!param)
+                               goto err;
+
+                       param++;
+                       debug("\t%s parameter: '%s'\n", configs[pos], param);
+
+                       switch (pos) {
+                       case 0:
+                               pmecc.use_pmecc = strtol(param, NULL, 10);
+                               return EXIT_SUCCESS;
+                       case 1:
+                               pmecc.sector_per_page = strtol(param, NULL, 10);
+                               return EXIT_SUCCESS;
+                       case 2:
+                               pmecc.spare_size = strtol(param, NULL, 10);
+                               return EXIT_SUCCESS;
+                       case 3:
+                               pmecc.ecc_bits = strtol(param, NULL, 10);
+                               return EXIT_SUCCESS;
+                       case 4:
+                               pmecc.sector_size = strtol(param, NULL, 10);
+                               return EXIT_SUCCESS;
+                       case 5:
+                               pmecc.ecc_offset = strtol(param, NULL, 10);
+                               return EXIT_SUCCESS;
+                       }
+               }
+       }
+
+err:
+       pr_err("Could not find parameter in token '%s'\n", token);
+       return EXIT_FAILURE;
+}
+
+static int atmel_parse_pmecc_params(char *txt)
+{
+       char *token;
+
+       token = strtok(txt, ",");
+       while (token != NULL) {
+               if (atmel_find_pmecc_parameter_in_token(token))
+                       return EXIT_FAILURE;
+
+               token = strtok(NULL, ",");
+       }
+
+       return EXIT_SUCCESS;
+}
+
+static int atmel_verify_header(unsigned char *ptr, int image_size,
+                       struct image_tool_params *params)
+{
+       uint32_t *ints = (uint32_t *)ptr;
+       size_t pos;
+       size_t size = image_size;
+
+       /* check if we have an PMECC header attached */
+       for (pos = 0; pos < ARRAY_SIZE(nand_pmecc_header); pos++)
+               if (ints[pos] >> 28 != 0xC)
+                       break;
+
+       if (pos == ARRAY_SIZE(nand_pmecc_header)) {
+               ints += ARRAY_SIZE(nand_pmecc_header);
+               size -= sizeof(nand_pmecc_header);
+       }
+
+       /* check the seven interrupt vectors of binary */
+       for (pos = 0; pos < 7; pos++) {
+               debug("atmelimage: interrupt vector #%d is 0x%08X\n", pos+1,
+                     ints[pos]);
+               /*
+                * all vectors except the 6'th one must contain valid
+                * LDR or B Opcode
+                */
+               if (pos == 5)
+                       /* 6'th vector has image size set, check later */
+                       continue;
+               if ((ints[pos] & 0xff000000) == 0xea000000)
+                       /* valid B Opcode */
+                       continue;
+               if ((ints[pos] & 0xfffff000) == 0xe59ff000)
+                       /* valid LDR (I=0, P=1, U=1, B=0, W=0, L=1) */
+                       continue;
+               /* ouch, one of the checks has missed ... */
+               return 1;
+       }
+
+       return ints[5] != cpu_to_le32(size);
+}
+
+static void atmel_print_pmecc_header(const uint32_t word)
+{
+       int val;
+
+       printf("\t\tPMECC header\n");
+
+       printf("\t\t====================\n");
+
+       val = (word >> 18) & 0x1ff;
+       printf("\t\teccOffset: %9i\n", val);
+
+       val = (((word >> 16) & 0x3) == 0) ? 512 : 1024;
+       printf("\t\tsectorSize: %8i\n", val);
+
+       if (((word >> 13) & 0x7) <= 2)
+               val = (2 << ((word >> 13) & 0x7));
+       else
+               val = (12 << (((word >> 13) & 0x7) - 3));
+       printf("\t\teccBitReq: %9i\n", val);
+
+       val = (word >> 4) & 0x1ff;
+       printf("\t\tspareSize: %9i\n", val);
+
+       val = (1 << ((word >> 1) & 0x3));
+       printf("\t\tnbSectorPerPage: %3i\n", val);
+
+       printf("\t\tusePmecc: %10i\n", word & 0x1);
+       printf("\t\t====================\n");
+}
+
+static void atmel_print_header(const void *ptr)
+{
+       uint32_t *ints = (uint32_t *)ptr;
+       size_t pos;
+
+       /* check if we have an PMECC header attached */
+       for (pos = 0; pos < ARRAY_SIZE(nand_pmecc_header); pos++)
+               if (ints[pos] >> 28 != 0xC)
+                       break;
+
+       if (pos == ARRAY_SIZE(nand_pmecc_header)) {
+               printf("Image Type:\tATMEL ROM-Boot Image with PMECC Header\n");
+               atmel_print_pmecc_header(ints[0]);
+               pos += 5;
+       } else {
+               printf("Image Type:\tATMEL ROM-Boot Image without PMECC Header\n");
+               pos = 5;
+       }
+       printf("\t\t6'th vector has %u set\n", le32_to_cpu(ints[pos]));
+}
+
+static void atmel_set_header(void *ptr, struct stat *sbuf, int ifd,
+                               struct image_tool_params *params)
+{
+       /* just save the image size into 6'th interrupt vector */
+       uint32_t *ints = (uint32_t *)ptr;
+       size_t cnt;
+       size_t pos = 5;
+       size_t size = sbuf->st_size;
+
+       for (cnt = 0; cnt < ARRAY_SIZE(nand_pmecc_header); cnt++)
+               if (ints[cnt] >> 28 != 0xC)
+                       break;
+
+       if (cnt == ARRAY_SIZE(nand_pmecc_header)) {
+               pos += ARRAY_SIZE(nand_pmecc_header);
+               size -= sizeof(nand_pmecc_header);
+       }
+
+       ints[pos] = cpu_to_le32(size);
+}
+
+static int atmel_check_params(struct image_tool_params *params)
+{
+       if (strlen(params->imagename) > 0)
+               if (atmel_parse_pmecc_params(params->imagename))
+                       return EXIT_FAILURE;
+
+       return !(!params->eflag &&
+               !params->fflag &&
+               !params->xflag &&
+               ((params->dflag && !params->lflag) ||
+                (params->lflag && !params->dflag)));
+}
+
+static int atmel_vrec_header(struct image_tool_params *params,
+                               struct image_type_params *tparams)
+{
+       uint32_t tmp;
+       size_t pos;
+
+       if (strlen(params->imagename) == 0)
+               return EXIT_SUCCESS;
+
+       tmp = 0xC << 28;
+
+       tmp |= (pmecc.ecc_offset & 0x1ff) << 18;
+
+       switch (pmecc.sector_size) {
+       case 512:
+               tmp |= 0 << 16;
+               break;
+       case 1024:
+               tmp |= 1 << 16;
+               break;
+
+       default:
+               pr_err("Wrong sectorSize (%i) for PMECC header\n",
+                      pmecc.sector_size);
+               return EXIT_FAILURE;
+       }
+
+       switch (pmecc.ecc_bits) {
+       case 2:
+               tmp |= 0 << 13;
+               break;
+       case 4:
+               tmp |= 1 << 13;
+               break;
+       case 8:
+               tmp |= 2 << 13;
+               break;
+       case 12:
+               tmp |= 3 << 13;
+               break;
+       case 24:
+               tmp |= 4 << 13;
+               break;
+
+       default:
+               pr_err("Wrong eccBits (%i) for PMECC header\n",
+                      pmecc.ecc_bits);
+                return EXIT_FAILURE;
+       }
+
+       tmp |= (pmecc.spare_size & 0x1ff) << 4;
+
+       switch (pmecc.sector_per_page) {
+       case 1:
+               tmp |= 0 << 1;
+               break;
+       case 2:
+               tmp |= 1 << 1;
+               break;
+       case 4:
+               tmp |= 2 << 1;
+               break;
+       case 8:
+               tmp |= 3 << 1;
+               break;
+
+       default:
+               pr_err("Wrong sectorPerPage (%i) for PMECC header\n",
+                      pmecc.sector_per_page);
+               return EXIT_FAILURE;
+       }
+
+       if (pmecc.use_pmecc)
+               tmp |= 1;
+
+       for (pos = 0; pos < ARRAY_SIZE(nand_pmecc_header); pos++)
+               nand_pmecc_header[pos] = tmp;
+
+       debug("PMECC header filled 52 times with 0x%08X\n", tmp);
+
+       tparams->header_size = sizeof(nand_pmecc_header);
+       tparams->hdr = nand_pmecc_header;
+
+       return EXIT_SUCCESS;
+}
+
+static struct image_type_params atmelimage_params = {
+       .name           = "ATMEL ROM-Boot Image support",
+       .header_size    = 0,
+       .hdr            = NULL,
+       .check_image_type = atmel_check_image_type,
+       .verify_header  = atmel_verify_header,
+       .print_header   = atmel_print_header,
+       .set_header     = atmel_set_header,
+       .check_params   = atmel_check_params,
+       .vrec_header    = atmel_vrec_header,
+};
+
+void init_atmel_image_type(void)
+{
+       register_image_type(&atmelimage_params);
+}
diff --git a/tools/env/aes.c b/tools/env/aes.c
new file mode 100644 (file)
index 0000000..9e42679
--- /dev/null
@@ -0,0 +1 @@
+#include "../../lib/aes.c"
index da72115e53230a53444078df089186d932bec54b..32d6278edb95fe8be0a8d17a0050e7c84d72c8d4 100644 (file)
@@ -27,6 +27,8 @@ void register_image_tool(imagetool_register_t image_register)
         */
        register_func = image_register;
 
+       /* Init ATMEL ROM Boot Image generation/list support */
+       init_atmel_image_type();
        /* Init Freescale PBL Boot image generation/list support */
        init_pbl_image_type();
        /* Init Kirkwood Boot image generation/list support */
index a3e9d302eb3f9de7324a5055521b9008b24bcfa5..c480687ec13884c43cb99ac39a977847198aa375 100644 (file)
@@ -159,6 +159,7 @@ void register_image_type(struct image_type_params *tparams);
  * Supported image types init functions
  */
 void init_default_image_type(void);
+void init_atmel_image_type(void);
 void init_pbl_image_type(void);
 void init_ais_image_type(void);
 void init_kwb_image_type(void);
index 9a994fe3e3812bdc2d63f7045d2740d931b2a42a..14031f2c8c5eaee2e961a89b684ac3c986329673 100644 (file)
Binary files a/tools/logos/syteco.bmp and b/tools/logos/syteco.bmp differ
diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
new file mode 100644 (file)
index 0000000..da7c9f0
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * a simple tool to generate bootable image for sunxi platform.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* boot head definition from sun4i boot code */
+struct boot_file_head {
+       uint32_t b_instruction; /* one intruction jumping to real code */
+       uint8_t magic[8];       /* ="eGON.BT0" or "eGON.BT1", not C-style str */
+       uint32_t check_sum;     /* generated by PC */
+       uint32_t length;        /* generated by PC */
+       /*
+        * We use a simplified header, only filling in what is needed
+        * by the boot ROM. To be compatible with Allwinner tools we
+        * would need to implement the proper fields here instead of
+        * padding.
+        */
+       uint8_t pad[12];                /* align to 32 bytes */
+};
+
+#define BOOT0_MAGIC                     "eGON.BT0"
+#define STAMP_VALUE                     0x5F0A6C39
+
+/* check sum functon from sun4i boot code */
+int gen_check_sum(struct boot_file_head *head_p)
+{
+       uint32_t length;
+       uint32_t *buf;
+       uint32_t loop;
+       uint32_t i;
+       uint32_t sum;
+
+       length = head_p->length;
+       if ((length & 0x3) != 0)        /* must 4-byte-aligned */
+               return -1;
+       buf = (uint32_t *)head_p;
+       head_p->check_sum = STAMP_VALUE;        /* fill stamp */
+       loop = length >> 2;
+
+       /* calculate the sum */
+       for (i = 0, sum = 0; i < loop; i++)
+               sum += buf[i];
+
+       /* write back check sum */
+       head_p->check_sum = sum;
+
+       return 0;
+}
+
+#define ALIGN(x, a) __ALIGN_MASK((x), (typeof(x))(a)-1)
+#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask))
+
+#define SUN4I_SRAM_SIZE 0x7600 /* 0x7748+ is used by BROM */
+#define SRAM_LOAD_MAX_SIZE (SUN4I_SRAM_SIZE - sizeof(struct boot_file_head))
+#define BLOCK_SIZE 512
+
+struct boot_img {
+       struct boot_file_head header;
+       char code[SRAM_LOAD_MAX_SIZE];
+       char pad[BLOCK_SIZE];
+};
+
+int main(int argc, char *argv[])
+{
+       int fd_in, fd_out;
+       struct boot_img img;
+       unsigned file_size, load_size;
+       int count;
+
+       if (argc < 2) {
+               printf("\tThis program makes an input bin file to sun4i " \
+                      "bootable image.\n" \
+                      "\tUsage: %s input_file out_putfile\n", argv[0]);
+               return EXIT_FAILURE;
+       }
+
+       fd_in = open(argv[1], O_RDONLY);
+       if (fd_in < 0) {
+               perror("Open input file");
+               return EXIT_FAILURE;
+       }
+
+       memset(img.pad, 0, BLOCK_SIZE);
+
+       /* get input file size */
+       file_size = lseek(fd_in, 0, SEEK_END);
+
+       if (file_size > SRAM_LOAD_MAX_SIZE) {
+               fprintf(stderr, "ERROR: File too large!\n");
+               return EXIT_FAILURE;
+       } else {
+               load_size = ALIGN(file_size, sizeof(int));
+       }
+
+       fd_out = open(argv[2], O_WRONLY | O_CREAT, 0666);
+       if (fd_out < 0) {
+               perror("Open output file");
+               return EXIT_FAILURE;
+       }
+
+       /* read file to buffer to calculate checksum */
+       lseek(fd_in, 0, SEEK_SET);
+       count = read(fd_in, img.code, load_size);
+       if (count != load_size) {
+               perror("Reading input image");
+               return EXIT_FAILURE;
+       }
+
+       /* fill the header */
+       img.header.b_instruction =      /* b instruction */
+               0xEA000000 |    /* jump to the first instr after the header */
+               ((sizeof(struct boot_file_head) / sizeof(int) - 2)
+                & 0x00FFFFFF);
+       memcpy(img.header.magic, BOOT0_MAGIC, 8);       /* no '0' termination */
+       img.header.length =
+               ALIGN(load_size + sizeof(struct boot_file_head), BLOCK_SIZE);
+       gen_check_sum(&img.header);
+
+       count = write(fd_out, &img, img.header.length);
+       if (count != img.header.length) {
+               perror("Writing output");
+               return EXIT_FAILURE;
+       }
+
+       close(fd_in);
+       close(fd_out);
+
+       return EXIT_SUCCESS;
+}
index b3aba136b86f66e65db4bd3dbebe6f0fe7b851f1..5fb508b80df10d3b11d95eea95a141ce3d0ef578 100644 (file)
@@ -192,6 +192,7 @@ END
        A sign-off is added automatically to your patches (this is
        probably a bug). If you put this tag in your patches, it will
        override the default signoff that patman automatically adds.
+       Multiple duplicate signoffs will be removed.
 
  Tested-by: Their Name <email>
  Reviewed-by: Their Name <email>
index 89cce7f88a297dd32e486cd3cd1a7a0ef7819332..3e0adb8f7e292afb8986dafc1d9d8778662855b9 100644 (file)
@@ -29,6 +29,7 @@ class Commit:
         self.tags = []
         self.changes = {}
         self.cc_list = []
+        self.signoff_set = set()
         self.notes = []
 
     def AddChange(self, version, info):
@@ -72,3 +73,16 @@ class Commit:
             cc_list:    List of aliases or email addresses
         """
         self.cc_list += cc_list
+
+    def CheckDuplicateSignoff(self, signoff):
+        """Check a list of signoffs we have send for this patch
+
+        Args:
+            signoff:    Signoff line
+        Returns:
+            True if this signoff is new, False if we have already seen it.
+        """
+        if signoff in self.signoff_set:
+          return False
+        self.signoff_set.add(signoff)
+        return True
index 5dcbaa3bd79effdf2bff3ba497a360378106f5a0..3ea256de2e262cd0e34de4d9126fe95ee10e843c 100644 (file)
@@ -11,6 +11,7 @@ import subprocess
 import sys
 import terminal
 
+import checkpatch
 import settings
 
 
@@ -193,6 +194,7 @@ def ApplyPatch(verbose, fname):
     Args:
         fname: filename of patch file to apply
     """
+    col = terminal.Color()
     cmd = ['git', 'am', fname]
     pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE,
             stderr=subprocess.PIPE)
@@ -203,8 +205,8 @@ def ApplyPatch(verbose, fname):
             print line
         match = re_error.match(line)
         if match:
-            print GetWarningMsg('warning', match.group(1), int(match.group(2)),
-                    'Patch failed')
+            print checkpatch.GetWarningMsg(col, 'warning', match.group(1),
+                                           int(match.group(2)), 'Patch failed')
     return pipe.returncode == 0, stdout
 
 def ApplyPatches(verbose, args, start_point):
index c4017e0e6d6c1f25a19b1e37cdde8535f1b7883b..322871920772aeab0682883bdddd185c7b321e73 100644 (file)
@@ -21,7 +21,7 @@ re_remove = re.compile('^BUG=|^TEST=|^BRANCH=|^Change-Id:|^Review URL:'
 re_allowed_after_test = re.compile('^Signed-off-by:')
 
 # Signoffs
-re_signoff = re.compile('^Signed-off-by:')
+re_signoff = re.compile('^Signed-off-by: *(.*)')
 
 # The start of the cover letter
 re_cover = re.compile('^Cover-letter:')
@@ -159,6 +159,7 @@ class PatchStream:
         commit_tag_match = re_commit_tag.match(line)
         commit_match = re_commit.match(line) if self.is_log else None
         cover_cc_match = re_cover_cc.match(line)
+        signoff_match = re_signoff.match(line)
         tag_match = None
         if self.state == STATE_PATCH_HEADER:
             tag_match = re_tag.match(line)
@@ -223,7 +224,7 @@ class PatchStream:
             if is_blank:
                 # Blank line ends this change list
                 self.in_change = 0
-            elif line == '---' or re_signoff.match(line):
+            elif line == '---':
                 self.in_change = 0
                 out = self.ProcessLine(line)
             else:
@@ -272,6 +273,12 @@ class PatchStream:
             else:
                 self.tags.append(line);
 
+        # Suppress duplicate signoffs
+        elif signoff_match:
+            if (self.is_log or
+                self.commit.CheckDuplicateSignoff(signoff_match.group(1))):
+                out = [line]
+
         # Well that means this is an ordinary line
         else:
             pos = 1